17 March, 2014

In Defense of the Lone Code Archetype - Part 2 (The followup)

Roughly half a decade ago I expounded upon the virtues of the lone coder archetype, which was in response to a flurry of "______ is the one-true waytm" where said blank could have been XP, Agile, Hierarchically Big-Team Structured Environment, etc.

I feel it necessary to further discuss the situation by pointing out the environments where the aforementioned 'mindsets' (as it were) just do not cut it. I'm not saying that these various means and methodologies don't have their place or purpose. I'm saying that there is no magic solution that fits every environment.

First and foremost let me point out that while I currently find myself working for the corporate behemoth that is Comcast, I have primarily functioned in extremely lean staffed companies/start-ups and I do enjoy the environments regardless of all of the negatives resultant from their miniscule size(s). Many of the methodologies against which I argue as not being the end-all-be-all or one-true-way just simply wouldn't be a great fit for these smaller, faster environments. I'm talking about companies in which there is no QA department. There are no "project managers" outside of those coding individuals doing the coding. There are no dedicated "scrum masters" to keep focus and direction.  Turn around time for a project can be anywhere from 18 months for a massive project to as little as 30 minutes for a last minute 'big money deal' directly arranged by the owner of the company.

I can't say that I love all of those really hair-raising tight-deadlined projects, but I can say that I do find myself thriving in such environments while I've watched others come and go, not being able to make the cut in such an unstructured (comparative to textbook scenarios and larger companies) work space.

I don't want to send the wrong idea here though. Proper design, implementation and testing methods need to be utilised, though in many cases the specific type will vary dependant upon the various variables (time until deadline, technical requirements (formal or otherwise), availability of those requesting said application(s) and/or change(s). All I am stating is that talk of scrum methodologies, stand up meetings (even if only for 5-10 minutes tops daily), etc. just don't cut it in these environments. Entire projects sometimes need to be not only designed, but put into production in less than an hour's time while all of the normal daily actions take place.

Before anyone starts to think that "these tiny companies aren't worth it", I will clearly state that with rare exception, all of the aforementioned companies (if only by reference and not by name) have been and/or are rather profitable, more than worth the effort. I will state that I have both seen individuals who whilst highly capable in their own right fail miserably as well as those who happen to be incapable of coping with the frustrations of not doing daily work in a manner conducive to that which they learned in college.

There is ultimately a place for everyone, but for the truly cutting edge companies such luxuries as what would seemingly be order, structure and time frames simply don't exist. It is also a world in which competency pays/paid off for those willing to cope with things during those really hectic moments.
Now before anyone starts the tirade of "these environments aren't sustainable" responses, I will state that as the companies each find their own groove, the hopes are that there'd be a bit more consistency, planning and structure to what can otherwise seem a bit of guided chaos, though more oft than not, this isn't the case.

Lone coders fit these environments but are of a specific mould.  Those constantly needing direction or looking for hand holding need not apply as these are the kinds of environments where learning the process as well as what are deal makers and deal breakers must be done swiftly because the calls made in all areas from architecture to one-off applications need to be done unapologetically and with the future in mind by said lone-coders.  Luxuries such as access to others capable of having half of the answers remains just that, a luxury.  It takes individuals of a certain mindset which brings to mind the commercials for the US Marines, which can be equally applied (for different reasons).

"The few, the proud (albeit questionably mentally unstable though surprisingly effective), the lone coders."