Written by Dan Parry.
We all have a different outlook on life - some of us take a glass half full approach and some of us are 'who's drank half my drink' kinda people - but when it comes to software development, which is the more productive mindset? Is one better than the other?
Let's talk about the pros and cons of optimism and pessimism in developers.
Experience plays a role in the level of pessimism you might find in a developer. A long history of unexpected problems and catastrophic deployment issues has a tendency to jade a fresh-faced junior. That's not to say it's only inexperience that breeds a positive outlook, but any developer worth their salt will know that 'no plan survives contact with the enemy', and no ticket is as easy to finish as your first estimation.
You can never predict if all cogs in the machine will turn in your favor and the estimation of tasks is usually a good indication of a given developer's disposition. Planning for the inevitable thing to go wrong is standard practice, mostly because assuming you're going to get everything right on the first try can lead to some awkward conversation when it's time to deliver.
Not to mention the client will very well change the request by the time it's done. So mark this as a pro for the pessimist column - Realistic time management - assuming something will go wrong, even if you don't know exactly what yet, is a win-win for a developer.
That being said, ignorance is bliss, and an enthusiastic start to a project can be the Mario Kart'esk starting line boost a team needs. The expression 'Aim for the moon, shoot for the stars' comes to mind when I think of young developers and there can be benefits to a mildly over ambitious can-do-attitude when you start a new venture.
Getting really excited about creating the next unicorn and throwing in all the features you can think of at the planning meeting might not always pan out exactly, but you never know what great ideas might come of it. Maybe the term 'throw enough mud at the wall, some of it will stick' fits better here, but this one is still a pro for the optimists in my eyes, a little Passion never hurt anyone.
It comes down to the management of expectations. While our fresh new junior dev might underestimate the time and effort needed to add a new feature, our old dog might overestimate the resources needed and spend more time worrying about the potential for mistakes rather than the feature itself.
A good developer and a great team know how to balance both. A healthy mix of enthusiasm and wisdom is the key to success.
Discipline is required to properly plan a new project, we all want to start writing code as soon as possible but this unfortunately is almost never the smart first move. A trait of optimistic devs will be to immediately dive into writing lines of code without really knowing where they are going or assuming it will all fall into place by the end.
This can also be infectious but mistaking over-confidence with work ethic can make it seem like everyone is hard at work when, in reality, the train is just heading for the cliff.
A big con for the optimistic dev is overlooking the project's needs and then costing the team time and energy to correct the areas that could easily have been avoided with a detailed planning session.
Over preparation is the flip side of this coin. Spending days and days preparing for every possible outcome of an issue the project might face, only for most of the work not to be needed can be just as costly as fixing mistakes.
It's important to see the difference between pessimism and negativity. While it might be easy to label the naysayer to every plan as negative energy, this can be a trap. Slow and steady planning and attention to detail will often benefit the team in the long run, so don't be scared to point out a potential problem even if it's against the momentum. Keeping quiet while everyone was blissfully walking into a disaster just because you didn't want to ruin the mood will only end in tears.
Just because a senior member says no to 9 out of your 10 new ideas, doesn't mean they are unimaginative, it may mean they made that mistake once before and know how to play it smart now. It's a fine line we all must learn to walk for ourselves. Experience is our only real friend here.
Any team needs a balance of optimists and pessimists to work effectively, much as any individual needs a balance of both within themselves. We need to be optimistic enough to assume our next venture is going to be the one that takes off, but pessimistic enough to know it probably won't work out exactly as we expect. If you can find this balance, you are well on your way to a winning mindset.
For every action, there is an equal and opposite reaction, and for every argument, for either mindset, there is an argument for the other. Try to be positive in either case, bring good energy and constructive feedback to your projects and you can't go wrong.
Thanks for reading!
Whether you are an optimist or a pessimist, you shouldn't waste time configuring your infrastructure. Instead, try Codesphere, the best zero-config cloud provider.