Disclaimer The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.
As I reach the 1/2 point in my career developing software, I started thinking about where we are at in the industry of Software Development and how much progress (or lack thereof) as well as some observations and things I’ve learned. If you would have asked me 10 years ago if I would be at the half way point in 2009, I would say, heck no, I’ll be retired and doing this for fun…so much for the internet bubble and stock options.
The following are some observations and thoughts on some things I've learned at the different positions and work I’ve done with the last 19 years. If you make it to the end of my "ramblings" drop me a note and let me know what you think.
After graduating from Minnesota State University in 1990 with a degree in Computer Science and Electrical Engineering Technology, my first job was as a Software Engineer responsible for designing and programming embedded systems for weight and force measurement devices. We had about 5-6 Software Engineers on staff, each week we had meetings to discuss ways we could improve the process of developing software. This was a long and painful process where our primary objective was to build consensus on development standards. We started with coding conventions for FORTH, C & C++. What made this extremely painful is that as we all had opinions (although only a couple of us actually programmed in C/C++ at the time) and at one point we spent weeks discussing putting curly brackets around single lines after an if statement. Anyway, my point is that although it was important to build consensus this approach wasted way too much time, and although I think we did make some modest gains, these meetings were probably better held in an academic setting. I had an excellent mentor and the company probably still doesn’t want to know the number of hours the two of us spent shooting the sh*t discussing software engineering and software architectures instead of programming devices. Luckily the two of use seemed to be the only ones to ship on time so I guess they didn’t mind too much. I considered those years as almost a “Masters” level education. Some of the observations/lessons from this position:
Next I went to work for a Sales Force Automation company, starting out as a software engineer and ending up with the title of “Director of Tools and Technology”. I had two primary roles as a director, first was to dispatch fire fighting teams get projects out of the ditch and the second was to put in a set of processes and tools to help keep those projects out of the ditch in the first place. I had the luxury of hiring my own senior staff. I’m a firm believer that right people are single most influential factor in the success for failure of a software project. I actually found that people with engineering degrees in some respect were better suited for this type of work than ones with a pure comp-sci degree. In my previous job I was introduced to the classic Managing the Software Process by Watts Humphrey this is a classic must read book. A number of concepts seemed to make considerable sense when working with large projects with a duration of 1+ years and teams of 6-12 developers. Much more so than the single person 3-4 month projects at my previous position. One of the lessons learned here is that different types of software require different set of processes and talent. Some other observations from this position:
PPT Solutions, LLC
Three of us left the Sales Force Automation company and started our own venture it was called PPT Solutions (People Process & Technology, in that order as we liked to say). We put together our business plans, cash flow projections and since this was in the internet bubble we were convinced there is no way we could fail. Although I wouldn’t consider this business a success, we did manage to ship a product, and I did learn a lot about going into business for yourself.
Next up was a small startup, let's just say I don't have a lot of good memories from that place. This wasn't really a technology learning experience, however I did learn how to successfully get what I needed in a difficult environment to ship software. The company came in at the tail end of the internet bubble and had visions of making a pile of cash with very little effort and a lot of 0's and 1's in the right order. Enough said…moving On….
That takes me up to what I'm doing today, Software Logistics, LLC. My company. I don't have any employees, but use contractors as necessary. I seemed to have found a nice niche. I spend about 90% of my week coding. Although I do miss the thrill of leading a team into battle, I guess the pure joy of carving out excellent software makes up for it. I've worked with very small companies and very large companies during the past eight years. Each has their strengths and weaknesses and enjoy working with both. This has been a great learning experience and I’ve shipped a number of projects in the process.
If I haven't bored you too much and you made it this far (I'm a coder not a writer), I can offer some general thoughts of where we are as an industry:
Well I guess I should probably close as I could ramble on for another few pages, I think in summary I would have to say that our industry is maturing with new processes, technologies and techniques but at the same time the systems are developing are getting much more complex so I would say our overall progress as an industry is probably flat. At one time I had thought we would mature to a more engineering approach to delivering software but I think with the dynamic nature of the problem space and technologies, I'm not convinced that will happen anytime soon. As to being at the 1/2 way point in my career, I’m still trying to build the “Killer App” who knows….
-ec
Remember Me