1.
Perspective. Ability to look from business
perspective apart from (typical) code-level perspective. Understanding why all
the coding is done and where are the fruits for the customer/user whoever it
is.
2.
Questions. Asking why something is done that way.
Discussing answers. Showing own point of view. Trying to be objective in the
whole thing.
3.
Communication. It doesn’t have to be great but you
should be able to talk with non-developers in a way which is understandable by
the other side.
4.
Fallibility. Actually everyone is fallible, but not
everyone is able to admit that.
5.
Experience. From different situation, different
systems, different issues, different architectures, different teams, different
technologies, different environments. The more the better.
6.
Learning. Will and ability to self-develop,
learn (quickly) new things and adapt to new environments.
7.
Digging. Understanding a problem to the very
bottom. Trying to find out what’s happening under the hood. Rejecting easy
trial-and-error explanations.
8.
Reason. Every thing which is developed serves
some purpose and using common sense one can easily decide which actions are
justified and which are not.
9.
Hobby. Treating development as at least
something more than just a job. Will to do develop something just for yourself,
not because you were forced to.
10. Quality. Just remember the quality is a weak
point of software development and be willing to do something about your little
piece of that crap.
None of them are actually
about any particular technology. None of them is about any particular softwaredevelopment methodology. There’s no answer to specialization versus versatility
question. Things which differentiate good developers aren’t those which used to be considered as their core qualities.
No comments:
Post a Comment