Alexandro Félix

"Conhecimento é poder." (Francis Bacon)

As 50 Características de um Ótimo Desenvolvedor

leave a comment »

Encontrei um blog onde o autor afirma que pra ser um “ótimo” desenvoldor, não basta apenas dominar todas as tecnologias do mundo, usar colante azul e cueca ver melha por cima. Além disso você deve possuir as 50 características que estão listadas logo abaixo.

Alguém aí possui todas estas características?

Pra ser um ótimo desenvolvedor, você deveria estas 50, mas se você tiver ao menos 30, isso te faz um bom desenvoledor? 🙂

Na minha opinião se esta lista fosse usada pelas equipes de recrutamento das empresas, elas não contratariam mais que 1 desenvolvedor por ano. 🙂


  1. Passionate; loves computers and programming, takes an interest and thinks about things even outside working hours.
  2. Curious; wants to understand new things, researches unfamiliar terms.
  3. Humble; recognizes that other people are smart and have great ideas and knowledge, respects relationships more than technology.
  4. Creative; sees ways to do things that others don’t see, comes up with better ways of doing things, goes beyond.
  5. Friendly; easy to get along with, does not sabotage or bring down team morale.
  6. Fast learner; can quickly research, understand and use unfamiliar software technologies, tools and languages.
  7. Focus; works towards completion of tasks with minimal distraction, avoids taking tangents.
  8. Comprehension; can make sense of software requirements and understand what it is that needs to be built, able to grasp the “mental model” of the internal structure of a software application.
  9. Logic skills; ability to devise logical solutions for programming problems.
  10. Pragmatic; able to make a value judgement about what is really important, values practical outcomes and getting the job done, avoids gold plating.
  11. Not dogmatic; willing to change their mind and see things from the perspective of someone else, values the intellect of others. Not a jerk.
  12. Workman like; willing to do the drudge work as well as the exciting work.
  13. Thorough; puts in the 10% more needed to do a great job rather than an adequate job.
  14. Intellect; able to grasp very complex computing concepts, able to develop very sophisticated code, able to do “the hard stuff”.
  15. Energy; productive, motivated, strong work ethic, gets a lot of work done in the available working time.
  16. Practices; writes lots of code, especially in the early years.
  17. Persistence; sticks at it, takes the time needed to get something done or to learn something new.
  18. Flexible; adaptable, happy to take new directions, happy to work with new technologies, happy to try new things, happy to change priorities.
  19. Thirst for knowledge; actively self educates, reads and researches, willing to learn from others, always believes there is always much more to learn.
  20. Expert knowledge; has superb knowledge of, and has thoroughly researched the primary programming languages (typically 3 or fewer), object models and frameworks that they do most of their day to day programming with.
  21. Deep knowledge; has an in-depth understanding and experience in some small number (typically fewer than 10) programming languages and related technologies.
  22. Broad knowledge; has passing familiarity with a very wide range of programming languages and related computer technologies.
  23. Ability to write; can string words together to communicate. Client emails, co-worker emails, documentation, emails, proposals, blog posts, tweets.
  24. Knowledge of computer science fundamentals; object oriented programming, design patterns, algorithms and data structures, how computers work at a low level, hardware, operating systems, networking, databases & much more stuff.
  25. Verbal communication; able to explain their own thought process, can explain complex concepts, can participate in discussions with team members, can communicate with customers/users and other non technical people.
  26. User oriented; can empathise with users, understands where the users are coming from and what is most important to them.
  27. Software design and architecture; can design class structures, can design API’s, can design subsystems within an application, or can design entire application architectures.
  28. Quality oriented; understands software testing, writes tests for their code where appropriate, understands the concept of test driven development, meets organisational expectations for testing & quality, feels satisfied by a job well done.
  29. Balances coding priorities; knows when code should be written primarily for robustness, maintainability, reusability, speed of development, execution performance, scalability, security, polish, presentation, usability or some other factor.
  30. Problem solving; knows how to attack a problem and has the tenacity to solve even very hard problems, uses appropriate debugging tools.
  31. Development tools; understands their development tools, compiler/IDE and knows how to get the most out of them.
  32. Seeks simplicity; understands the danger in complexity, prefers simple solutions.
  33. Interested in the field; Knowledge of the industry, trends, directions, history.
  34. Avoids re-inventing the wheel; able to look at a problem, analyse it, work out what class of problems it comes from, can find patterns, libraries, algorithms, data structures or other pre-existing solutions that might fit the problem well and reduce the need to write code.
  35. Honest; can admit mistakes, unafraid to admit they don’t know something.
  36. Detail oriented; pays close attention. Avoids missing things, not sloppy or half-baked.
  37. Understands the lifecycle of software development; the roles played by developers and other people in that process.
  38. Manages own workload; able to prioritise their own tasks, willing to adapt to change.
  39. Cares about maintainability.
  40. Uses source control.
  41. Appreciates peer review; does not feel threatened or insulted by peer feedback.
  42. Groks; is able to read source code and learn what it is doing.
  43. Understands performance; able to optimise and write fast code when appropriate, knows how to avoid common performance problems.
  44. Writes clean code; readable, well formatted, appropriately commented code.
  45. Understands requirements specifications; able to make sense of software requirements, knows how to resolve questions and ambiguities, understands the relationship between requirements and testing.
  46. Follows coding standards; where there is such an expectation.
  47. Wants to be working on this project, at this company; a programmer is unlikely to do a great job if they are working on a project they don’t enjoy, or working at a company they don’t like.
  48. Strong research skills; good at ferreting out information: digging through documentation, searching the web, reading reference guides, release notes, discussion forums, mailing lists. Knows how to find answers.
  49. This slot reserved for suggestions – anything I’ve missed?
  50. Goto 49.



Written by rideick

Novembro 10, 2010 às 4:31 pm

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da

Está a comentar usando a sua conta Terminar Sessão /  Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão /  Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão /  Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão /  Alterar )


Connecting to %s

%d bloggers like this: