- Be Proactive
- Begin with the End in Mind
- Put First Things First
- Think Win/Win
- Seek First to Understand, Then to be Understood
- Sharpen the Saw
A developer's goal in any software project is to ensure that the software is developed to a requirement that meets the customer need and one that produces software that is reusable and maintainable. Below are some ideas for being proactive on software projects:
- Be Responsible for Great Requirements - Don't blame others for poor
Your end goal for a software project should be to deliver high quality software that meets the needs of the client using reusable and maintainable code. Before coding begins, you should make a list of success criteria that you judge the project on.
For example, your success criteria may be that the software produces specific results, has no known defects (or a small number of low severity defects), is reusable, is maintainable, is well documented, is easy to use, etc. By defining the success criteria up front, you can objectively evaluate whether the project met the criteria or not. Solicit help from all team members (project managers, product managers, testers, automation engineers, other developers, documentation specialists, etc.) when defining the success criteria. By getting a team perspective of the success criteria, you will have better and more measurable criteria and you will get much better buy-in from the team.
Habit 3 - Put First Things First
Prioritizing your work effort is critical. You must apply effort to the most important things first, followed by less important things. For example, everyone will generally agree that creating reusable and easily maintainable code is important. However, in an effort to do this, developers have a tendency to "gold plate". "Gold plating" is when a developer adds bells and whistles to the feature that were not asked for and can easily increase the complexity and estimated hours needed to deliver the work. Be very careful with this.
It is great to create reusable code, but it does not have to handle every future scenario that you can dream up. Instead, stick with the stated features needed but organize the code in a way that makes it easy to extend and improve in future releases. As you develop the code, do team code reviews to identify how to better reuse code, to spot troubled code and to reorganize for maximum maintainability.
Habit 4 - Think Win/Win
In many organizations, development and testing teams play a blame game and create tension between the teams. This can be very disruptive and can greatly affect the quality of the software project and the user experience. The development and testing teams should have a common goal -- to ensure that the client receives the software with the highest of quality. If this is a unilateral goal of the team, it makes sense for all team members to provide help and encouragement to each other so that when the software is shipped with high quality and the client is happy, everyone on the team basks in the joy of a happy client. If you want to encourage an environment of trust, respect and foster an win/win team, here are a few tips:
- Share Knowledge - Don't hold your knowledge to yourself, share it with others.
Socialize - Eat lunch with members in different roles in your company. Learn more about them, take a general interest in their hobbies and personal goals.
- Encourage Others - Offer congratulations and compliments to team members that you see are doing a great job. Tell your (and their) manager how well you think they are doing. Tell them how much you appreciate their efforts.
- Help Struggling Team Members - If you see team members struggling, jump in and offer to help. If you offer, follow through and ensure they get the help they need. You may need help in the future so offering help can foster a win/win relationship for you in the future.
Many of us have a bad habit of blocking out a conversation and not listening because we so desperately want our opinion to be heard. Every developer and team member has a different experiences, different perspectives and motivations. Before you can solve any problem, it is important to first listen intently and diligently to fully understand the problem. Once you feel you have all the facts, solicit ideas for multiple solutions. Having several options can provide better discussions and allows team members to tweak initial solutions into solutions that are more far reaching and solve the problem in a more direct way. If you disagree with an approach, don't attack the person that offered the approach. Instead, explain based on your past experiences why you think there might be a better approach.
To get started with this, schedule time weekly for code reviews. Code reviews allow people with different experiences and skill levels to objectively evaluate your coding structure and style and make recommendations for maximum reuse and maintainability. You also will learn a lot in the process and allow yourself to approach challenges in a different way.
Habit 6 - Synergize
Team collaboration is the key to a synergized team. A synergized team is made up of divergent team members that have different strengths, different backgrounds and different perspectives. Encourage these differences but provide your team with tools that allow you maximize their effectiveness. Highly collaborative teams communicate with each other by sharing their calendars, posting their statuses into discussion forums so that everyone is aware of what the other is doing and accomplishing. These teams keep track of all tasks they work on each day, the number of hours worked, the number of hours remaining and variances to plan. They also share documents that illustrate best practices and produce white papers that teach others what they have learned.
Habit 7 - Sharpen the Saw
Productive developers see the need to continue honing their skills and love learning new techniques, best practices and approaches. They have a thirst for knowledge, reading every development book they can get their hands on. They also know when to have fun. They recharge their batteries by taking great vacations and by having outside hobbies and activities. Here are a few of our favorite development books:
- Agile Project Management with Scrum - by Ken Schwaber, Microsoft Press
- The Enterprise and Scrum - by Ken Schwaber, Microsoft Press
- Code Complete - by Steve McConnell, Microsoft Press
- Rapid Application Development, by Steve McConnell, Microsoft Press
Below are some helpful resources and templates to aid you in developing software solutions:
- Software Planner - http://www.SoftwarePlanner.com
- Pragmatic Agile Development -http://www.pragmaticsw.com/PADOverview.pdf
- Agile Training - http://www.PragmaticSW.com/Services.asp
- Software Development /QA Templates -http://www.pragmaticsw.com/Templates.asp