I am starting to realize there are different types of software developers. I guess I have always known this but it was not clear to me how the differences affect delivery of software solutions. This probably explains why I am happy on some gigs and frustrated on others. And why I can easily become frustrated on projects where I start out happy.
As Joel Spolsky says, there are five worlds of software development: shrinkwrap, internal, embedded, games, and throwaway. I come from the shrinkwrap world where programs should have easy to use interfaces, be easy to install and deploy, and resilient to variations between computers. After all, shrinkwrap applications are expected to be used “in the wild” by a large number of people. Developing shrinkwrap applications requires a mindset not commonly found in the corporate and consulting worlds. And with this different mindset comes a different way to work towards achieving the goals.
I’ll pick on my buddies at Antenna Software for a moment. Now in their defense, I will say I left Antenna over a year ago and a lot has changed in that time. My comments here are based on my time at Antenna as an employee.
Antenna had the dream to be an ISV focused on mobile and ASP-based solutions for the field force automation. In my mind to be successful we had to think like those companies producing shrinkwrap and embedded applications. However the software engineering team was staffed with primarily people either recently out of college or from a corporate IT background. The college guys are okay because you can shape and mold them but the corporate folks are a different story. And I believe this contributed to the lack of a solid product after my one year at Antenna.
A lot of assumptions can be made when you are developing applications that only run within a single company. It is easier to demand certain restrictions or hardware configurations. And deployment can be more involved. It can be tough for most ex-corporate developers to make the switch from controlled environment programming to programming for the wild, which leads me to my current thought and reason for this post.
I work in the consulting world of software development. I like the freedom it provides and will probably remain a consultant for the rest of my career. But most of the projects that consultants work on are custom software development for a single corporation. There are exceptions from time to time like the work I did last year at i-Deal, which was an internal software development effort turned commercial Web-based software. But for the most part consulting gigs are on internal software development efforts.
In my career I have observed an interesting fact. When I apply shrinkwrap techniques and approaches for delivering an internal software solution the customer tends to be happier and the solution is perceived as having a higher level of quality. Working in this manner will not make the software developer’s life easier. In fact, it is harder for the developer and requires more work. But software development is not about making the developer’s life easier. It’s about making the end user’s life easier.
Posted in uncategorized. Tagged in .