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.
System Administration
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?
Backend Development
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.
Front-end Development
The presupposition of many is that the modern web developer must use a front-end framework like Backbone, React, Ember, etc. is flawed. Web applications that require "high" levels of interactivity can benefit from front-end frameworks but for the great number of "information applications" (e.g. Github, Amazon) the gain is not that dramatic. Server-side rendering of views "sprinkled" with jQuery is not going to be an obsolete strategy anytime soon because of its speed of development while delivering a "good enough" user experience. There are a great many agencies and organizations (e.g. Basecamp) where you just need to know jQuery and some good maintainable Javascript practices. So if this is the case we can't say the modern web developer needs to know a front-end framework. To say knowing a front-end framework is expected reminds me of the mantra not too long ago that stated Flash or Java applet programming was necessary for building "rich internet applications".
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.
Front-end Styling
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
We all realize the value of specialists but full stack developers are down right crucial for start ups and small businesses. I am happy to report to these entities that this type of developer is alive and well. Three of the four disciplines; system administration, backend development, and front-side styling are fledged and ripe with tools and frameworks making proficiency an obtainable goal. The fourth discipline, front-end development is ever changing but the minimum current knowledge requirement is jQuery with training on writing maintainable Javascript is also procurable. These compulsory skills are indeed within reach and the full stack developer will continue to be an important designation well into the future.
- Pushed on 06/09/2014 by Christian