I like the practicality of web and database applications and enjoy developing them. From the design to the deployment. From the user interface to the data. That is, from start to finish and from front to back. The key skill I have needed to be successful is the ability to learn. Understanding underlying principles and the ability to learn supersedes expertise in any one particular technology.

In the distant past I built lovely little applications using VB.Net and SQL Server. In the recent past, I built applications with MySql and PHP. I thought I was hot stuff because I used composer and Doctrine (the ORM used for Symfony). Most recently, I used Mongo, Express, AngularJS, and Node.js to develop a rather data-centric site for tracking car dealership sales statistics. In addition to Twitter Bootstrap and Sass and Grunt and Bower on the frontend, there was Angular directives, controllers, and services with which to cope. On the backend, there was Express and OAuth and socket.io and Mongoose and Mongo, not to mention general JavaScript callback Hades, JSON documents of all shapes and sizes, and brain twisting aggregates to corral them all.

I used to think the phrase “full stack developer” was a good one. However, knowing and mastering every part of the “stack” is getting more complex.

full stack skills

Reading this article by Andy Shora prompted me to think about whether I wanted to identify myself as a full stack developer:

At the level of a senior full-stack engineer we’re perhaps talking about architecting a modular Backbone/AngularJS front-end whilst optimising content delivery and tweaking hardware accelerated layers in CSS, followed by implementing an async non-blocking backend (which also pre-renders templates on the server), and pushing to an AWS cluster which has been built with security and scaleability in mind. Not to mention design. Designing UI responsively and mobile-first is essential, utilising a CSS pre-processor to save time. And remember to setup Nagios for monitoring. Oh, and ideally when the Continuous Integration server detects a bad build because your end-to-end tests have failed, get it to send you an SMS with the build error messages. Well, the last two are probably for bonus points.

Can I, with any sense of honesty (modesty?), claim that I have mastered all of that? No.

What am I good at? I know already. I’m good at data. I’m good at designing the data and the web service that delivers them. In addition, I like to write documentation. Not all developers do, but if you have somebody building APIs for other developers to use, it sure comes in handy to have somebody who is willing to document that stuff.

Conclusion: I’m a backend developer.