Project Greenfield
I am in a theoretically enviable position: I am beginning a “green field” project. A green field project is one that begins with a completely blank slate: no preconceptions about what technologies to use, what methodologies to employ, or what the final product will look like. This is the project we all dream about: total freedom and total control. I am no longer hobbled by an existing database. I am no longer restricted to “how we’ve always done things.” Paraphrasing Sarah Conner from the original Terminator, for the first time the future is unclear to me.
At first glance, this sounds like a developer’s dream come true, and in the end it probably is, but as I near the beginning of the project I begin to see it as an embodiment of the saying “be careful what you wish for, you just may get it.” This is why I say my position is theoretically enviable. While I have complete freedom, I also have complete responsibility. And to top it all off this project is make or break for the company. If this project fails, we might as well close the doors. And no, I am not overdramatizing.
My plan, for what it’s worth, is to document this undertaking.
Where to begin…
I had a long section written here about the history of my company, our software, our customers, and why we were tackling this project. Then I realized that, in fact, this is what I am trying NOT to do: focus on the past. I don’t want to rehash where we’ve been because I don’t want it to taint where we are going. And so far that is the hardest thing: I met with our domain expert to discuss some of the target goals, and I had to steer the conversation away from the existing product several times.
While this is really, truly, everything new from the beginning, there are some decisions that have already been made, so let’s get them out of the way.
- We will use SQL Server. I’ve long believed that data is king. I always start with the data: the database, schema, relationships, etc. Ultimately it is the reason we are in this business. Almost every RFP we have received in the last 5-7 years has required SQL Server: it is becoming the de facto standard in our market. Since we have never offered a SQL Server solution we are frequently unable to bid for contracts. This fact is the driving force behind this project. It’s bad enough when the other kids make fun of you, but far worse when you’re not even allowed on the playground.
- We will use .NET. If we are going to make the jump from IBM to Microsoft, from Green Screen to GUI, from DB2 to SQL Server, then we’re going whole hog. Knowing that SQL Server is our target database, what better decision could you possibly make than to develop the rest of the application on the Microsoft Stack?
- We will use Version Control. Our current software was originally written in the mid 80’s. I realize that’s longer than some of you readers have been alive, so it may be a shock to you, but yes software that old does work. The software has been continuously modified, upgraded, and maintained over that period, but it has never been in source control. Our first action will be to implement version control, which I will cover in my next post.
- We will use Unit Testing. It probably goes without saying, but our existing software has exactly 0 unit tests. The nature of the platform and the development environment do not lend themselves to unit testing, TDD, mocking, etc. Don’t get me wrong, the software is thoroughly tested, but not in any kind of a “best practices” sense of the word. While the verdict is not yet in on TDD, I’m definitely feeling pulled in that direction. Again, I’ll be posting about that when the time comes.
- We will use Agile Techniques. At least, we’ll use some parts of Agile. Company owners, users, and domain experts aside, this is essentially a one man operation, so that naturally means no pair programming. I’m also not sure what a one man stand up would look like. That being said, I’ve consulted some practitioners and there are things I can do. I have a couple of books to read and I bought a bunch of post-it notes, so we’ll see.
With the exception of .NET, everything in the list above is a new endeavor for me and my company. And none of the above mentions the technical specifics: there are a lot of decisions to made there, many of which will be new for us as well. This is a huge undertaking, so I expect to encounter some failure along the way. I’m OK with that: we all know you learn more from your mistakes than your successes.
Where we go from here
I’ll be spending the next couple of weeks in project preparation: setting up version control, writing specifications, developing guidance, establishing processes, etc. Along the way I’ll be posting about what I’m going through, what’s going through my head, and what decisions I’ve made.
Given the scope of the project, I expect to be writing about it for quite a while. Along the way, if you are interested, I encourage you to participate in the comments. I will place every post in this on going series in the Project Greenfield category. It should be fun!
So this is only for learning purposes or do plan to use/sell the final product?
No, this is a real project.