Whenever I ask any independent developer what the biggest obstacle for them is, it’s always something to do with time. Maybe they are struggling to find the time to do anything that real life requires, like eating, sleeping and actually finding the time for leisure. Or perhaps it’s the other way round, and real life is sapping all the available time to get development done.
With us at GameDev Couple, it’s constantly a rollercoaster between the two extremes. First off there’s only two of us trying to develop an entire game and launch it on multiple platforms, so time is always going to be a precious resource for us no matter what we do. But I also have a full-time day job as a VR Developer which I commute a long distance to, and this means that not only is it a struggle to find time to fit development into a normal length day, it’s a struggle to find time to do just about anything.
A Vicious, Addictive Cycle
So in the end, I find myself locked in a cycle that seems all too familiar to most developers:
Burnt out – This is the stage you might be at when you get home from your day job, or after a long bout of development. Its pretty hard to motivate yourself to do anything, and you really should get some rest at this point.
Procrastination – Too tired to get anything done, you end up procrastinating because of your lack of motivation, stemming from your lack of energy (which is why you should have taken that rest before…).
Limbo – This is the longest stage, and the trickiest one to move on from. Filled with guilt over procrastinating, you keep thinking about how you should be working rather than doing whatever it is that you’re doing instead. This makes getting any enjoyment out of your distractions almost impossible. Instead of getting rest, enjoying some leisure time or getting work done, you find yourself trapped in a limbo state between all 3 while getting more tired, losing more motivation, and overall wasting more time.
Motivation – With severe determination you manage to break out of the limbo stage and muster some motivation, bringing back the energy to get some work done.
Development – Never is as hard to start as you tell yourself it is during the procrastination stage.
Burnt Out – After a while you will inevitably end up back here again.
Rest (Optional) – This is optional not because it should be, but because most developers seem to forego this stage in order to gain more time, which only lengthens the time spent stuck in limbo some time down the line.
Breaking Bad Habits
The truth of it is, it’s a vicious cycle, and one that is all too easy to end up in but very difficult to break out of. But there are always things you can do:
Build a routine – just like getting consistent restful sleep or having a consistent appetite, development needs to be done to some kind of routine if you are going to get good at it. This does not mean you need to work normal hours, just that you need to be working at similar hours whenever you do development. Falling into a routine will make it that much easier to break out of motivation-procrastination cycles.
Track Everything – There is a reason that every kind of project in every kind of industry has a project manager and makes use of project management tools. It doesn’t matter how long you have been a developer for, or how many companies you have worked in / observed. In the end, you have no true idea of what your individual and team wide performance really is. So in an industry filled with deadlines, how are you ever supposed to accurately predict how long tasks will take, or even how long the entire project will take?
The answer, is that you don’t know, and you won’t ever know unless you start tracking your performance. This is where project management tools and methodologies come into play. Now there are a wealth of different project management methods and tools out there that you can research, and I recommend you do as I am going to talk about the primary one I think is important.
Agile Development – This is a phrase you may or may not have come into contact. If you have been formally educated or trained as a programmer, designer or any other profession related to the games, software or engineering industry, then it is likely you already know what agile development is or even use it yourself.
Webopedia defines agile development as: “…an alternative to traditional project management where emphasis is placed on empowering people to collaborate and make team decisions in addition to continuous planning, continuous testing and continuous integration.”
What agile development is really all about is simple though:
Transparency – Every process and team needs to be entirely transparent. If you want to accurately measure how you’re performing and make judgments that will improve your team’s performance, you need to be able to both see and understand what is going on at all times. You might not like to show other team members your work before it’s finished, but it’s better for the team if you don’t so everyone fully understands the true status of the project at all times.
Inspection – Inspect every process, person and “thing” that you can while recording every bit of important information you are able to. The only way you will ever improve performance is by being able to look back at what has happened so you can find “patterns” of behavior.
Adaption – Sift through all the information you have recorded and look for “patterns” of behavior, then adapt your processes based on what you have learnt. Perhaps you notice that for the last hour of every day everybody’s performance drops but during the morning is fine, and based on that introduce an earlier finish but earlier start. Or maybe you notice that lots of time is being wasted doing a particular process that could be avoided, such as having too many meetings as a knock on effect of a lack of communication.
Whatever Works, Works
Whatever your team decides to change, it’s important to be continuously inspecting and adapting your teams workflows, as it’s very unlikely that after one cycle you will have worked out every nuance there is and have a completely efficient team.
The one thing I personally really like about agile development is that rather than attempting to reach 100% efficiency, agile accepts the fact that no team or team member will ever operate at 100% efficiency. After-all, we are all living life, and life tends to throw curve-balls at us. Instead agile attempts to make your team more efficient with each iteration.
In the end, it is never really important that you use the project management method that other teams use, its only important that what you choose works for your team. Never be afraid to experiment, as there is likely no other team that 100% matches yours.
Join me next time when I will be discussing the importance of having a business plan and common mistakes and myths about the industry, as well as giving you a unapologetic insight into our development of our current project so far.