Roy Tang

Programmer, engineer, scientist, critic, gamer, dreamer, and kid-at-heart.

Blog Notes Photos Links Archives About

Just a list I’ve been maintaining for a while:

(Disclaimer: This list in no way implies that developers who don’t exhibit all of these attributes are terrible human beings who don’t deserve to live. But working with developers who exhibit many of these traits will probably result in a better experience over the course of your developer career.)

  • Laziness, Impatience and Hubris – from the well-known (notorious?) Larry Wall quote
  • Communicates well; is able to explain and communicate his ideas clearly, especially to nontechnical people; able to write good documentation
  • Understands the concerns with scheduling and project management and communicates clearly with the team to avoid problems. This means: willing to speak up as soon as any problem is encountered that introduces any kind of risk; not bloating estimates or pretending that tasks take longer than they really do; not cutting estimates to make managers happy;
  • Cares about writing elegant code; understands the risks involved with code that is complicated or difficult to maintain; Understands the importance of data structures, algorithms and design patterns
  • An attitude towards learning and self-improvement; owns up to his own faults; ready and willing (and often excited) to pick up new domains or technologies (and advises you of the appropriate schedule risk); Can easily pick up and learn new technologies and programming languages; recognizes and understands programming principles and able to carry them across to different domains or technologies; Able to study or learn new topics with minimal guidance;
  • Understands engineering tradeoffs; able to tell you the differences in performance, storage, etc among different options.
  • Works well with others: Willing to help with other people’s work when possible/needed; Has an open mind and willing to consider other people’s suggestions; Doesn’t take criticism personally; Chill AF
  • Able to think logically and sequentially; able to break down a problem into a discrete set of solvable tasks; Able to investigate and find the cause of problems with minimal info; Able to think outside the box when necessary; Able to point out problems or logical inconsistencies with program requirements;
  • Able to read and understand and maintain other people’s code; Can update code with the minimal possible changes to avoid breaking things;

Any other suggestions?

 

Posted by under post at #Software Development
Also on: tumblr twitter / 7 / 365 words

See Also

Comments

sana nilagay mong "Top 10 Qualities to Look for in a Software Developer" then antayin mo sino mga magrereklamo
You won't get married at that rate
Ahhh item 8… only a few appreciate the difference and importance of both analysis and synthesis - breaking down a problem compared to how everything comes together. Available training for developers often focuses on just analysis ü
You just need a vacation. A working break. The relax in proportion to the flex. That is the way muscles and nerves work.
I think this list would hold true for anyone working in a technical field.
To get stronger. To organize.
How happy are your transistor-neur on-citizens?