Over the next few weeks I will be developing a series that discusses steps needed to build a new project from a technical aspect. There are some very fundamental tasks that developers do over and over again. The goal is to present some ideas on how to get a good software project started effectively. You can decide which parts to add in or leave out.
Some of the areas I will be covering are:
- Setting up your solution tree. How do you do it effectively?
- Implementing Continuous Integration.
- Templating and Software Factories.
I will add to these as they come about. I am beginning the development of a new system. My hope is to capture what happens, both good and bad, as a real world example. I would also like to learn from each of you that read this where areas can be improved or changed to make future projects even more successful.
I thought that I would write this article to throw my opinion into the world of lean IT. As an IT person who has had many roles from developer to manager to architect, I have seen many approaches to software development. There is no right way (IMHO). However, the concepts of lean manufacturing and lean IT have led me to believe that whichever approach that a company takes can be improved through these processes.
I believe there are two major areas of focus that need to be addressed:
1. Business Processes in regards to software development
Focusing on taking the Cruft out of the business process will drastically improve software development. David Anderson has implemented this area quite well at Corbis. Kanban boards and practices can really show the business the current state of affairs. Critical to this is the collection of data and measuring it over and over. When I worked at Toyota, I was responsible for developing a paint defect tracking system that would readily identify the location on the vehicle of every paint defect. This information was used to tweak the robot arms to provide a more consistent error free approach. Data is that important. I am not an expert at building a Kanban environment, however, there are plenty of resources out there. Start with David.
2. Internal Software Development processes
I think this may be where Kanban can really be utilized. Every software development environment that I have worked in has base development processes that have matured over time to suite the needs of the company. However, I have never seen a focus on how to improve internal software development processes. There are usually major gaps in the internal processes, for instance:
- Code reviews may be strong, but deployment methodologies are not repeatable.
- Developers “develop their way”, not the company way, so maintainability becomes more complex
- Testing environments are setup, but no regression testing practice has been implemented
These examples are perfect for using lean IT ideas to come up with an improved internal software development process. I am curious to see if anyone else has thought or implement Lean IT procedures in the internal Software Development Process.
Dan Appleman had a show on DotNetRocks that talked about Discoverability. After listening to the show, I realized that I could really make use of the custom search functionality in Google (Google Custom Search). I am starting to create several different custom searches based upon existing work that I am doing.
The url is pretty crazy, but I hack each one and put it into a SlickRun magic word (s\gat). Then instant results!!! This has really focused my content searches and improved my productivity.
Examples of my custom searches are:
- Items centered around the Guidance Automated Toolkit, and DSL
- MSBuild
- Continuous integration
- Also, I use Dan’s SearchDotNet.com He has really comprised a great refinement for .Net stuff.
Adding a new site is also easy, just use the Google Marker, bookmarklet.
Try it out on my custom GAT search engine. Here is the link Custom GAT Search Engine. Please feel free to contribute also, if you know of a great site that I am missing.