Tuesday, December 9, 2014

Good Software Engineer


  1. It is not the code they write. It is the code they don't have to write.
  2. It is not how fast they grow a code base, in terms of lines of code or complexity, but about how fast they shrink it without losing feature or functionality.
  3. If you try to start the 'whats the best language' argument with them, do they smile, or maybe look bored, and then change the subject? Or do they evangelize? If they evangelize, they're not a great software engineer.
  4. It is not about the code or the language. Nor is it about 'obsession', 'knack', 'talent' or any other pseudo magical term. Simply- do they understand software beyond the level of code? Do they understand the software on the architectural level? Or can they only think about lines of code? Can they slip between mathematical abstractions of problems and software? Can they work with stakeholders to understand their needs for the system, or will they develop the system they want to code, that they think you should really want? Someone can be a great hacker or coder or programmer, but that is not he same as a great Software Engineer. I say this without a value scale- a great programmer is a great programmer... But you don't ask a master welder to design a bridge.
  5. Can they 'spot the flaw' when everyone else in the room is enamored of some solution or hot new thing, and moreover, can they explain that fundamental flaw in a way that makes it clear to *everyone* in the room.
  6. Can they Listen?  If not then they are not a great software engineer.

No comments:

Post a Comment