Is it time for developers to specialize?

I can remember a time that being an enterprise developer involved knowing one major technology.  For me, that was Java.  We wrote monolithic applications in Swing, and deployed by running an installer on the desktop.  User data was stored in files and sharing meant putting data on a floppy disk and handing it to a colleague.  Eventually, critical projects started storing data in networked databases using Oracle or MS SQL Server.  We learned SQL.  Around the same time, backing up our source code to a network share went out of style in favor of version control systems.  We learned CVS or SVN or Perforce (and learned hard lessons about Source Safe).  When the web arrived, we had to pivot from Swing to HTML and JSP, and would copy-paste some Javascript into our pages for some scrolling text or other fancy animation.  We were full-stack developers, learning quickly to grasp the growing ecosystem in our enterprise.

Fast forward to today: the last enterprise project that I worked on included a Javascript framework (Angular JS), a CSS scripting language (SASS), HTML, a web server (Node.js), a Java API (Dropwizard), a Java server container (Jetty), an ORM library (Hibernate), a database (Postgres), database migration scripts (Liquibase), server configuration (Puppet) and we experimented with Docker.  OAuth2 handled authentication and authorization.  It was deployed on AWS so we needed CloudFormation Templates to help manage server and storage instances.  We were required to support desktop, tablet and mobile so we built a responsive application that needed to be designed and tested on all three targets.  They were considering native mobile in the future which would bring in iOS and Android technologies and the testing baggage that comes along with them.

Without debating the merits of any of those particular technology choices, this is a pretty typical tech stack for a modern enterprise application.  Customers have come to expect a certain level of style and polish from their applications.  They also expect the applications to be secure and fast.  To achieve these results requires a complex and diverse set of technologies, being implemented by developers that fully understand their capabilities.

 

technology_growth

The diversity of these technologies along with the rapid pace of change in the industry have led me to conclude that it is no longer reasonable to be a full-stack developer.  Instead, there are four general classes of developers in the enterprise development space.  They are User Facing, Mobile, Business Logic and Data, and Operations.

Over the next few weeks I am going to address the details of these classes, how they fit into a unified agile workflow, and respond to some of the doubts that I have heard from full-stack developers and their managers when I have discussed this topic.

Author: Kevin Hickey

I have been a professional software engineer for over fifteen years. I currently work at Intuit as an architect. I have written bootloaders, ported the Linux kernel and Android to new platforms, written CPU diagnostics, developed control software for CPU manufacturing and worked on enterprise web sites. As both a developer and program manager I have been helping software organizations become more agile for over a decade. I am passionate about helping teams deliver world-class software solutions to interesting problems. My current focus is on pragmatic agility for the enterprise. When I’m not behind a keyboard I enjoy spending time with my wonderful wife Amanda, rock climbing and hanging out with my dog Tex. In the summer you can find me in my pool or climbing something. In the winter I count the days until summer returns to Texas (I never have to count too long).

5 thoughts on “Is it time for developers to specialize?”

Leave a comment