The Rise of the Full Stack Web Developer
In his article, The Myth of the full stack developer, Andy Shora argues that it is rare for anyone to truly obtain to that title due to the complexity of Web application development in 2014. I will argue the other side, stating that the full stack web developer is a reachable aim.
Defining the 2014 Full Stack Web Developer
Andy uses the term "mastery". Mastery is too severe a yard stick. The article also has a bit of "straw man" stuff going on like needing know Angular and Nagios. I like the term "proficient" instead. Currently, there are 4 main disciplines that a full stack web dev should be proficient in:
- System administration: Deploying the app with reasonable security, performance, and uptime.
- Backend development: Server-side ecosystem capabilities to persist information, deliver front-end views, and assemble business logic. Expertise to provide reasonably high application level security.
- Front-end development: Client-side business and interface logic to provide a fair to high user experience.
- Front-end styling: Ability to provide decent looking user interface aesthetics.
Honorable mention but left out for article brevity
- Business and marketing of software.
- Using Source control.
The advances in system administration have been some of the most striking in the last five years lead by the "devops" technologies. Recipe tools like Puppet, Chef, and Ansible have sensible learning curves and cloud deploy targets such as from Rackspace and AWS provide easy load balancing, firewalling, caching, and system monitoring. Vagrant is becoming the de facto standard for being a middleman, gluing together recipes and deployment marks. Solid system or Linux security practices can be learned in a short amount of time. Ubuntu's Juju and RedHat's Openstack are continuing to make system administration at scale easier and easier. System monitoring is getting more uncomplicated with software stacks like New Relic. Of course, you don't even need to know those items with the likes of Heroku and WPEngine. Need I say more about obtaining system administration proficiency?
Server-side frameworks like Django, Rails, and Wordpress are maturing. The rapid-change cycle in Rails, for example, has calmed considerably in the last few years. Many server-side challenges have been solved and all that is left is spit and polish. Persistent storage choices have increased but new comers such as key-value retention technologies are easy enough to pick up. The widely held skill of leveraging a relational database is still as relevant as ever.
I am currently developing a Chrome extension using Angular and Rails so I too believe (to a degree) in the promise of front-end frameworks but I don't see them as a "must know" or even a "must know soon". These frameworks could just serve a niche sort of like Flash programming is still popular in online gaming. I wouldn't even be surprised to see that the "server-side generated views enhanced with jQuery" approach continuing to prevail for many years to come.
Now what about the front-end tooling coming out of the Nodejs community such as Grunt, Gulp, Bower, and Yeoman? Surely these you must become proficient in? No, currently that would not be a requirement. These tools are innovative but they all have quasi-equivalents (perhaps with the exception of Yeoman) in the .NET, Python, PHP, etc. ecosystems.
Styling frameworks have solved one of the great time consuming pain points of the full stack developer of year's past. Being able to construct good looking views without much effort affords the web developer more time to focus on business logic or getting more proficient at other disciplines.
The State of Full Stack Web Developer