Author: Dan Woodruff
Ever had a developer join a team, suggest a radical solution and be shut down? Or have them suddenly be allowed to develop their ideas? I find it fascinating as to how this happens and may have some insight. Each company’s culture, whether they know it or not, has inherent values. For example, do they put security first over maintainable code? Do they allow applications to have bugs and issues just so that they can be first to market? Do they always invest in new ideas instead of making code work? I find the answers by evaluating a company’s set of values as discussed below.
I ran across a book early in my career that has impacted me for the last 10 years. It was all about best practices with 700 examples. I used it as a reference for some time and although concepts and opinions within it have changed, the guidelines and more importantly VALUES of the book have stuck with me.
The values or concepts in that book are: (Paraphrased and listed in descending order)
- Robustness – Code must work as intended and not cause fatal errors
- Security – Malicious app use is not allowed including class use
- Scalability – As the number of users grow, so to must the application
- Efficiency – light and fast with no added strain on external resources
- Usability – Application should be easy to use and learn
- Code Reuse – It should be easy to reuse code for other projects
- Extensibility – Extendable classes and localizable with limited effect on current app
- Maintainable – Source should be readable and consistent without undocumented features
- Language Interoperability – Code should be translatable to another language
- Ease of Development – Productive quick coding with less human errors
Shortly after acquiring the book, I also had a respected CIO define values very similar to the book and then rank them. When a development decision had to be made we referred to the values listed on the walls of our cubes. This was a huge win for the development team and I found that when opinions cropped up, or action needed we could always resolve it based on these values.
As I recall they were:
- Safety – Code must work and not impact existing production
- Maintainable – Source should allow anyone to work on it
- Code Reuse – Business logic should be seen in only one location
- Innovation – Code must be thought through and creatively crafted
I have reflected on development for the last 17 years as to how teams are productive or not. In many cases those teams that produce great applications have an alignment of their values. They see the bigger picture and have a leader who is consistently adheres to their value system. For those teams that are not producing, look into the values of each team member and take inventory of what each team member thinks. I suspect that if a quiz ranking a list might be helpful.
Regardless of my lists above and my opinions, I truly find it rewarding to understand why developers think the way they do. In our minds, it is logical, we value one idea over another because we have a value system. Please take the time to assess what value system is in your current employer and what value system you have. The best developers in my mind are ones who can adapt to their employers values.
Team Lead and Senior Software Engineer
Software Technology Group
- Practical Guidelines and Best Practices for Microsoft® Visual Basic® and Visual C#® Developers (Developer Reference).