Over the fifteen plus years of my career as a software development consultant I’ve seen it all. I’ve worked in the private sector, public sector, global delivery teams, start-ups and conglomerates.
I could write megabytes of text on the different tools, frameworks and methodologies I’ve seen. Object orient programming? Rapid application development? Rational unified process? Code generation, swing, csla, scrum, kanban, don’t tease me I’ll fill your hard drives!
Throughout all these environments, methodologies and tools you might wonder if one model is better than another. Is there a right way of doing software development?
It does feel like this question is always present. Here’s my insight, successful software development starts with knowledgeable people. Knowledge is not product, it’s not something you buy, and you don’t run to the store once you run out of it. Knowledge must be continually developed.
How much emphasis does your organization put into personal development? Have you ever heard these words, uttered with a low voice? “We don’t have a lot of money for training this year”. Minimal budget doesn’t mean you have to limit training to online learning site subscriptions.
Here are a few small cost-efficient tips that could make a big difference in your organization:
- Engage the people you have. Chances are there are people in your organization with valuable knowledge they can share.
- Promote “show and tells”, team blogs, demonstration applications. Small rewards such as a free lunch or leaving early on a Friday can be a very effective motivator.
- Write more unit tests! The ability to write code that is easily testable is a very valuable skill to learn and develop. Furthermore writing unit tests is a great way to gain exposure to new technologies and systems without necessarily being on the critical path of the development or maintenance effort. I’ve had a tremendous amount of success bringing along new team members to a project by getting them involved in the creation of unit tests.
- Invite a developer from outside the organization to speak about a technology or methodology your team is interested in. Interested in mocking frameworks, object relational mapping tools such as entity framework, wish you knew more about those nifty linq statements, wonder what a day on a scrum team looks like? Find someone in your network with this type of experience and tap into their knowledge for a few hours. Learning about a technique is great, learning how that technique can be applied in a real-world scenario is even better.
- Perform code reviews regularly. Code reviews are a great way to learn about different techniques and patterns. Afraid code reviews might cause friction between team members? Try reviewing code from an open source project instead.
Is there a right way of doing software development? If this question is being asked in your organization, change the conversation. Focus on gaining knowledge as a whole instead of looking for one prescribed recipe. You will find that much of the literature on software development is really a description of what knowledgeable teams do instinctively.