I often get asked by juniors and those interested in this field about what every successful developer should know/possess.
I've decided to list (in my humble opinion) them down.
The Top 10 Things Every Developer Should Have/Know:
(In no particular order)
Yes this might sound strange, however this is very important. Not all software creation is glitz and glamour! A lot of it is dry, mundane and sometimes brain dead boring.
This for developers can be difficult sometimes to overcome. As programmers and developers by their very nature require constant brain stimulation. (perhaps the coffee drinking stereotype has some real basis?)
There is no one single approach that will work for every one. You will need to find ways to make your self focused. For me working with lists works. Settings goals and having a concrete and objective way to measure them helps in keeping focus.
The art of creation, comes with it a great deal of power. However as the spider man quote "With Great Power, Comes Great Responsibility" could not have been more true!
Creation of software and solutions gives us a mental boost and confidence. However this confidence if left unchecked can spiral into arrogance and ego. This is bad because its starts to alter the way you approach problems. You start to view problems in only one direction, you assume you are always correct. Eventually you stop learning.
If you start to see these behaviours, stop immediately! take stock, humble yourself.
3. Source Control
If a server crashes and burns, no problem. Dare I say even if a programmer is fired/leaves they are semi-replaceable. But source code, now that is precious. When many developers work together, their source has to also be managed too. Don't try and re-invent new was to solve this. Its been done its called source control, use it, learn it, enjoy it.
People are not the same, everyone is different and by extension everyone has a different style.
However one thing the code should have is consistency. Reading and maintaining ones own code is hard enough. Imagine multiple different styles. You have have a mess, so long as the mess follows a pattern! like they say "There is method in the madness"
Yes, that oft word that marketing and sales people like to throw around. This is vital and I don't just mean in terms of speaking to people. Its how you speak to people.
Everyone is different, everyone has a different level of understanding and interest.
Mastering the ability to tailor your language such you can convey yourself from managers to nerds, is something very very important.
Probably the most fundermental of all really. Its not what you know its how you know that counts. The programming and IT world moves at such a pace, if you stop learning then this world will pass you by. Luckily if you love leaning then this is a non-issue.
7. Slowing Down
I've seen it many times before, juniors and seniors alike. They start of with full of energy and excitement. They will work incredably hard, determination and laser like focus.
But this high level of attention can't be maintained in the long run. Burn-out is a real problem, slow down, pace your self and learn to stop now and then.
Theory is one thing, reality is another. Never ever assume, it may sound like common sense. However when dead lines are looming or when the pressure is on to make changes really fast. Testing sometimes can take a back seat. Prove to yourself that it works before you ever show anyone else.
9. Multiple languages and paradigms
By exposing yourself to multiple paradigms you expand your ability to look at problems from many different angles. Knowing just one language (or similar languages) is like trying to put the same size shoes on everyone. Don't make your mind a small box, tear downs the sides by learning to think in different ways.
Don't know how to solve something? then just say so, this is somewhat related to humility. We are so afraid of failure that we perceive it as some kind of weakness.
If your unsure then explain this, if you failed or was the cause of failure be strong enough to admit this.