Well, I researched on the internet looking for one or more articles which was written with the title, 7 Habits of Highly Effective People, and found a couple of them that has been written in the recent past. Following are some of them:
- http://blogs.msdn.com/b/johnwpowell/archive/2008/05/22/the-7-habits-of-highly-effective-developers.aspx
- http://drupal.technicat.com/writing/programming.html
- http://css.dzone.com/articles/7-habits-highly-effective
The above articles are good and do talk about different aspects of becoming effective developer. However, I was not satisfied much as I could not find mention on some of the points that I wanted to talk about. Following is representation of my views on 7 Habits of Highly Effective Developer. Please feel free to share your opinion on whether I was able to do justice with the theme of the article.
- Habit 1: Always have an eye on the problem to be solved: Many a times, I have come across several developers who were unable to articulate the problem (business requirements) whose solution they are working on. The best answer also consisted of technical solution rather than mention of just the problem statement. Surprisingly, when asked to describe problem statement, many a developers jumped to technical solution without describing the problem (business requirements). This is what differentiates an effective developer from the rest of the lot. This person always tries and focuses on the business requirements and aligns his solution per the need. In addition to that, he tries and innovates by suggesting one or more technology-enabled solutions that could optimize overall business process which is associated with the business requirement. Read tips on how developers could increase the IQ (Innovation Quotient).
- Habit 2: A Team Player, Collaborates with Key Stakeholders including Business Analyst (BA), Other Developers and Test Engineers: Many a times, it is found that developers work in silos while he is developing his code. This creates a decent possibility of following in relation with code that they write:
- Code unable to meet the business requirements as developers do not talk access BAs for clarifications
- Code unable to pass one or more test cases created by test engineers. In addition, code may not have decent test coverage as talking to test engineers allow developers to validate on test scenarios front and align his code accordingly. It also allows developers to have their code “tested early, tested often”
- Duplicate code primarily because same code could have been written by other developers in the team and the possibility of reuse is, thus, missed.
The effective developer is a great team player which works in harmony with business analysts to have a greater grip on business requirements, test engineers to have his code tested early and tested often and other fellow developers to help them, avoid duplication and propagate re-usability.
- Habit 3: Great Command on Underlying Technologies: The effective developer is found to be learning-focused and implementation-oriented and try to keep himself up-to-date on the underlying technologies that he may be required to work on, in the project. Not only that, he goes a step ahead and takes part in mentoring other team members to get up-to-speed on different technologies. He keeps himself up-to-date with the latest technological updates by regularly visiting developer journals, participating in forums etc. He also takes party in doing POCs around new technologies. With great command in underlying technologies, he is able to suggest creative technology-enabled solutions which is aimed to optimize the associated business process.
- Habit 4: Writes Code of Great Quality: This one is one of key trait of a highly effective developer. And, it is writing code of great quality. In order to do that, he is aware of what it takes to write a code of great quality including some of the following:
- Hands-on knowledge on coding principles such as SOLID, DRY, YAGNI etc.
- Understands the different metrics that could be associated with measuring code quality such as test coverage, code complexity, duplication etc.
- Understands very well about code smells and various different code refactoring patterns which deals with the coding smells.
- Applies standard architecture & design patterns wherever required to come up with great solution.
- Habit 5: Test-focused Development: The effective developer focuses a lot on testing his own code by one or more methodologies including writing unit tests, or doing integration testing etc. Thus, he is found to have a great knowledge on XUnit framework such as JUnit, NUNit etc. He is very much familiar with test driven development and writes code with greater test coverage. He tries to get his code tested early and tested often as much as possible.
- Habit 6: Proactively Participates in Code Review: The effective developer also participates in code review and help other developers improve in their coding skills over a period of time. In this regard, he takes the code review comments on his code very sportingly and try to fix them in elegant manner.
- Habit 7: Communicates Effectively: Last, but not the least, the effective developer has to be a great communicator, both oral and written form. He requires to be pretty good at communication as he needs to communicate on frequent basis with other fellow developers, test engineers, business analyst, project managers/scrum masters, customers, business users etc. And, not able to communicate in proper manner may become hindrance in expressing his ideas to different stakeholders.
[adsenseyu1]
- Sparse Mixture of Experts (MoE) Models: Examples - October 6, 2024
- Anxiety Disorder Detection & Machine Learning Techniques - October 4, 2024
- Confounder Features & Machine Learning Models: Examples - October 2, 2024
Test driven development is stupid.
Agreed. I don’t use it either and I’ve never found a bug in my code 🙂
The better approach that I have found and suggested to many a developers is what I call as test-along development (TAD) rather than the writing tests towards the end. In this approach, the developers starts writing unit tests as he is developing the code rather than towards the tail-end of the development.
That said, the knowledge of test-driven development does help.
Good points. I would also add that ability to read source code is also important. We usually more read that write.