Jason Gibb writes an interesting piece about the decline of solo software developers (referred to as a superhero or cowboy) [via Arjan’s World]. He claims that there are too many skills, technologies, and methodologies for one person to adequately handle.
Speaking as a superhero (err… maybe I’m just a lesser known mutant hero), I don’t completely agree.
Now, in the face of modern software development methodologies, the concept of solo developers seems antiquated, almost laughable.
— Jason Gibb, Software Teams vs. Superheroes
Although I’d love to be on a team due to numerous benefits such as learning from others and delegation of duties, unfortunately I’ve been a solo developer for most of my programming years. There has been the occasional co-programmer or DBA, but for the most part I’ve pretty much been soloing the development part of the projects and doing just fine.
It hasn’t been easy or fun, but I’ve picked up enough skills to manage. To be honest, I’ve always felt a bit inferior to others who had the time and resources to specialize in a single field or at least a few less categories of the development processes. And being a jack-of-all-trades (master-of-none) has its downfalls with learning new technologies. However, there are also downfalls to becoming too specialized.
For today’s modern software, it takes a well-coordinated team of highly skilled, highly specialized engineers, designers, architects, database administrators, build managers, and Web professionals to create the next cool thing.
— Jason Gibb, Software Teams vs. Superheroes
Jason lists several skills that a team must know and says that a single person just can’t handle all of it. But, I’m not buying that…
I’ve used (or could claim to know) about 90% of the basic skills and almost all of the Web development skills. I would never claim to know everything about a particular item (and I’d question anyone’s sanity who would such), but knowing enough to understand and implement (with using maybe some reference material – you can’t memorize everything) usually works well enough to make good (or even great) software.
I also think it depends on the scope of the project. Solo developers aren’t building the next version of Microsoft Windows or Mozilla FireFox. Larger projects require bigger teams with more specialized personnel. However, that doesn’t mean the solo developer will die out.
I’d even argue that the vast majority of programming projects are not large scale projects, but consist of less than three or four people in the development team. And I’d even wager that most of them are generalists that overlap in a few common areas with maybe only one or two specializations.
In fact, I think the number of solo developers will stay around same level as now over the next few years. My thoughts are based on the trend of technologies becoming easier and requiring less skill to use – even though there’s more technologies arriving each month/year.
Do you remember when you needed to remember the database specific SQL statements? Now that nearly every database vendor has an adequate development environment, learning the exact differences between the DML/DDL SQL syntax has become marginalized. Sure, you still need a solid understanding of database design and familiarity with the database specific tuning – you could even have a real DBA review the design and do some tuning – but for the most part it could be done by a single person.
As more projects move towards ORM and away from SQL, there’s one less thing for the developer to learn. Sure, the developer would need to learn an ORM software, but seriously… just download SubSonic and you’ll be up and running in a few hours (or less).
As far as web development goes, anyone that’s being doing web development for a while should have an understand of almost all of those categories. However, since very few development projects are external, certain categories such as SEO and SEM doesn’t really apply.
I think that generalists are here to stay. Why would a company who can only afford a few programmers only want their staff to know a handful of skills? And as a developer why would you want to limit your growth by only knowing a handful of skills?
At the current rate of change in the industry, the technology or standard that you specialize in could be dead in five years or less. Or maybe someone just out of college arrives and knows enough of the technology to impress your organization and they are willing to work at half or one-third your salary.