1. All development aspects
The “code” (implementation) is not a stand-alone artifact. It is related with the other development aspects. Example: the code design shall have a good enough modeling of the business domain aspects.
That means the developer (programmer) shall understand and know all these aspects. A good developer SHALL ACT LIKE A TEAM or shall know all the teams’ acts.
For that the “great developer” shall understand and have experience in all others development roles (PM, architect, designer, analyst, tester etc) and a good understanding of software methodologies.
2. Quality evolution versus successive projects
There is no absolute quality. There is only quality in context of one or more projects. A project can have constrains related to SCOPE, TIME and QUALITY. The next project on the same product could have other constrains related to these aspects. The development team shall consider also short, medium, and long term constraints. That mean if the first project was with great time constraint and less quality restrictions, the development team shall be able to restore the quality on the next projects. That is possible only if some development rules are respected.
A great developer shall be able to manage that.
3. Quality management
Quality can be achieved only by quality management: plan quality, assure quality, control quality and continuously improve the process.
4. Quality basic instruments in software: architecture & code quality
- shall be a good architect
- shall be good designer
- shall know to adapt: when “simple design” is required and when need a more elaborated design
5. One man team or team leading
A perfect developer shall be able to replace a team or any team missing parts.
- Good multi-disciplinary knowledge and skills in software domain
- Project & Team leadership’s skills, coaching, training
6. Agility
One team man shall be super-agile. For that, mandatory requirements for agile development shall be fulfilled:
- multi-disciplinarily
- senior skills in development
- senior skills in refactoring
- senior skills in communication
- great problem solving skills
- capability to work in a team or independently
7. Technologies
- shall have a good experience with different technologies
- shall be able to adapt to the new technologies