Java, is it that bad?
Ever since I started learning how to code I have kept hearing people saying that Java is too verbose, too complicated, takes too long to do anything, and it's a pain to work with. But is that all true? Or is it just nitpicking?
I’ve been working as a software engineer for a while now(even started growing white hair!) working for companies in different industries, within teams of various sizes and shapes. Throughout these experiences, I’ve got to realise that some key factors contribute to making a team work well.
When working in a company we are all part of teams that work together and rely on each other to deliver a great outcome, either product, experience or service. In a way, we are similar to the different parts of a mechanical watch, each one of us having a specific role to play so that other parts can achieve what they need to do. And, like with a watch, if we all work in sync and fulfil our purpose, we can deliver the expected outcome with the expected level of quality. 😉
However, like with watches, sometimes there might be unexpected factors, like impacts or dust, coming up that might delay one part and make others not work exactly as expected.
Does it mean the watch will necessarily stop working? Not really… Most of the time, your watch will still be able to give the time because it is flexible enough to absorb some shocks or oiled enough to keep working with some dust…and so should we.
Now that you get the concept (or maybe not…), let me introduce the set of key factors that I think matter the most to help teams to work well with each other and within themselves.
Oftentimes, people focus too much on the idea that Scrum or Kanban are the ways to go, but I think that’s not the case. What matters is for your team to be goal-oriented, discussing and agreeing on what you want to achieve in your allotted time. So, in the end, the way Jira is showing you the tickets/your board does not matter. Scrum, Kanban or any other agile framework aim at achieving the same thing, which is slicing work into bitesize tasks. Personally, I prefer scrum because the Jira for scrum allows you to have more control on your tickets, but it’s just a ‘UI/UX’ preference.
You should write your team’s goals down, either as tickets or as part of the sprint “goals” (the reason why I prefer scrums in Jira).
Also, you should talk about them on a daily basis in the stand-ups. This meeting is critical: it shouldn’t be just a status report, but rather the forum where you actively assess your goals, indicating if you think you’ll be able to do your part to be able to achieve them or if you are facing hurdles. If you see your team is more on a ‘shopping-list’ roll, plainly stating what they did/what remains to be done or if your manager only asks you for updates, this is probably because you might be using the stand-ups the wrong way 😅
Finally, discuss the goals during your retrospectives! Retrospectives are very important, and, like with stand-ups, you should talk about topics that matter the most and why you achieved or not your goals during that sprint. Also, don’t forget to thank others for their help, as you are all together in that boat!
The agile manifesto explains that you should deliver work frequently, iterate on your work many times and reflect on what went wrong or could be improved. This is not different to the way you should plan your sprints. Big “sprints” are dangerous because you might waste an awful amount of time working on the wrong things. You should rather aim for shorter sprints to be able to readjust. My recommendation is to stick to weekly “sprints”.
Something to note is that your team should have enough work in the pipeline for double the amount of time your sprint lasts. Why? because sometimes you overestimate tasks, and you need something to do, or simply because you need to discard some work and continue with something else.
You might want to do a retrospective every other week as one week might not be enough to reflect on or that means too many meetings in a single week. I think it’s better to talk about things while they are fresh in your mind, so to keep weekly sprints (and since you have weekly sprints, you should have shorter retrospectives).
What to discuss in the retrospectives? As previously mentioned, you should always talk about the goals, why you met them or why you didn’t and what could be improved so that you are better next time. If you see after a few weeks that you’re always meeting your goals, you might also want to talk about it, as it might be a sign that you are not challenging the team enough.
Don’t. Seriously, don’t.
I know most companies have some kind of policy or your team lead needs to report on these magic numbers but, I think they are often given too much importance in the process.
Estimating tasks will slow you down. Don’t do it. We gave it up over 10 years ago.
Jeff Sutherland, Inventor and Co-Creator of Scrum Reference
Ok, you still want to have estimates? Let me explain a small framework and number system that I like to use.
|0.5||Coffee time||This should be used for really small tasks, like enabling a feature flag, or something like that. You would normally not create these tasks but maybe you need to do so in order to keep track of it in Jira|
|1||Half a day||These should be given to very small tasks, ideal for someone new to the team.|
|2||One day||Small tasks that your team gets done in roughly a day, most of your tasks should be ideally this size, as splitting them down might not be ideal for change of context|
|3||Between 2 and 3 days||These are the big tasks. It takes one person a lot and it’s very likely the task will get a longer review process|
|5||A week||SPLIT THESE! Don’t you even dare to put one of these on the sprint. Remember, a week=a sprint (not a task).|
Best teams have small stories
Jeff Sutherland, Inventor and Co-Creator of Scrum Reference
But why is the “A week” estimate so bad? As I already said, you should work week by week. Because of the number of meetings and ceremonies, the available time in your 5-days week is very likely to be 4 days. This means you WILL NOT be able to complete a full 5-days long estimate, unless you estimated it incorrectly, of course 😂.
You may have noticed that task complexity and number of days don’t increase proportionally in my table. The reason is that complexity and numbers of days are just abacus for your manager to have a baseline and something to report on.
When you create tasks with your team, you need to make sure you have enough description to understand the purpose or rationale but not more (despite writing stories, we are not novelists). If you focus on putting too much context on the story, you might waste time that you could have used to do the task.
I think this is the place to provide some clarity on the task, discuss with your team about the possible approach to follow or something that needs to be considered before doing. For instance, don’t forget to call out any dependencies that the task might have or any other team that depends on this.
In my opinion these are the required section of a story:
Xas they need to access our internal product information in order to display them in the UI.
In the end, the key success factors for a team are:
I hope you enjoyed this post and that you have learned a different point of view on how to plan your work. I recommend you to try it out for a few months (these changes take time to get used to and sink in) and see how it goes…I’m sure you can become a great and precise Swiss watch 😃
Photo by Pierre Bamin on Unsplash
I’d like to thank my wife Marie Dziubich for the help on this post (you definitely did not want to read the previous versions 🤣) and all the people I’ve discussed this topic with in the past.