Several weeks ago, Will sent me a link to this blog (click here), written by a computer programmer to all of us "non-programming spouses." It definitely provides some insight to the allure of programming (or of computer/software engineering)...kind of. ;) There was so much that stuck out to me that I could share here, but if you have any interest in gaining further insight to those engineering/programming minds you should check it out. But if you choose not to, I'll leave you with the summary:
As you can see, a true programmer should have cool brains, creative mind and a strong heart. He should understand people needs, solve tough problems and clearly express in the program what these brainless, but logical computers should do.
So, next time when you see a thoughtful programmer behind his desk, you should know he creates worlds of logic and reason for computers from vague world of people ideas. And he has good reasons to enjoy it.
On another blog (click here) I found a list of the Top 10 qualities of The Perfect Programmer. I'm posting them here because Will exhibits each and every one of them...not only as the software engineer he is, but also as a person. :)
- Intellect- can understand the problem, translate and express ideas in clear and readable code, has analytical and logical mind (range: building programs for narrow well defined requests to conquering freaking complex problems in elegant way)
- Personality - has right mixture of personal traits (detail-oriented vs. creative, flexible vs. disciplined, sociable vs. independent)
- Expertise - knowledge and experience for solving client’s problems in the specific context with chosen technologies (range: a specialist in one technology to a veteran programmer with broad experience in different domains and platforms)
- Motivation - cares about work, shows enthusiasm, interest and love for programming (range: from working for money only to implementing interesting ideas in spare time without pay)
- Maturity - knows and uses sound software development principles, practices and approaches as agile, design and architecture patterns, domain-driven design, unit testing, refactoring (range: from an enthusiastic amateur to a black belt guru, who can invent new approaches on the go)
- Pragmatism - understands what is possible, loves simplicity and avoids over-engineering; understands business goals, keeps touch with reality and focus on what should be done (range: from a spontaneous artist to a self-driven pragmatic achiever)
- Cooperation - listens, accepts that other people could have better ideas, supports team goals without hidden agenda, shares ideas and knowledge and coach others (range: from idea challenger to a team coach)
- Communication - effectively communicates and exchanges ideas, supports knowledge and decisions about the system with clear explanations, justifications and answers (range: from a quiet introvert to a system evangelist)
- Potential - has professional goals, good learning skills, curiosity, adaptability and performs constant self correction (range: from person who reached his limits to the future programming star)
- Vision - sees the big picture, understands context, trends and people, aligns actions with team and company implicit goals, contributes into building shared vision for the software system (range: from interested in programming only to entrepreneurial visionary)
No comments:
Post a Comment