Recently my company expanded the Software Engineer positions in my team. This leads me to thinking about the skills which are necessary for these positions. So I prepared a list of qualities which I think are important for a good Software Engineer.
Abstract concept modelling
This is essential and there is no room for discussion on this because this is what we do.
Love to code
It does not matter if you are 15 or 50 or if you write code 10% or 90% of your time, code writing is crucial.
Team player
The surgeon style teams (one genius with helpers) are obsolete, I prefer real team players who are able to work towards a common goal and share responsibilities.
Communicative
Silent geeks siting in the corner with a notebook on their knees are not cool any more, we need to talk to each other, we need to be able explain technical stuff to non technical managers, we need to be able to choose the right phrase at the right time.
Take responsibility
There is no quality without responsibility, orphaned code is a ticking bomb.
Passion for problem solving
Every day we face a lot of technical problems, so solving these problems must be pleasurable, otherwise it is just pure misery.
Getting things done
Not every one is able to finish what they start, I appreciate fighters, quitters are not welcome.
Craftsman
When you are doing something for the first time it takes a lot of time and effort and the result is not satisfactory, it is important to learn from your mistakes so when you do it again you do it better, you learn on the way.
Do re-factoring
This should be obvious.
Use best practices/patterns
We do not have a time to re-invent the wheel every time, if there is a known way already - just use it.
Write tests
Testing is sometimes considered annoying and not so cool, but without good testing we cannot be confident that the system is correct.
Leverage the existing code
Not all legacy code is pure evil, if you do not understand it - just try it, maybe it needs just a small re-factor.
Focus on end user usability
Yes, we doing it for the end user, do not forget that.
Understand principles
Not only brand new features of framework are good to know, but also basic principles (maybe 20 year old) are also necessary to know.
Document wisely
At any level of programming: architecture, design, decision reasons, API - It is always wise to keep blue-prints for future reference.
Comments
Post a Comment