Mercenaries get all the girls
I'm a software mercenary.
This is what I tell people when they ask what I do for a living, because the term "consultant" is so 20th century. Besides, it's so damned hard for me to be stuffy enough to warrant being called a "consultant": I usually can't be bothered to shower until the end of my workday. In any case, it usually gets people actually interested enough to ask me to elaborate.
Mercenaries are soldiers-for-hire¶
Mercenaries are the ones you get in touch with to boost your regular fighting outfit's numbers quickly, or when you need a group of specialists for a sensitive mission. While recruiting (for the first part) and training (for the latter) are options, those routes usually take too much time and a lot more money, and then there's the question of how you're going to deal with the addition to your roster afterwards.
Similarly, software mercenaries are the ones companies call when they need a complex codebase done properly. This usually happens after their collection of warm-bodied junior PHP programmers or flavor-of-the-month Rails developers have proved themselves incapable of rising to the challenge. (Or, rarely, someone in charge is honest and brave enough to admit that their current staff can't handle the task from the get-go.)
People like me are brought in to solve a general problem (which usually involves several, more specific, problems), train the extant staff on its operation (and most likely the techs on maintenance), then leave, freeing up the company to hire more people if it wants/needs to.
But, c'mon, I already gave that all away when I mentioned the term "consultant", didn't I?
Why I'm a different breed of mercenary¶
The run-of-the-mill software mercenary, as with most consultants, will specialize in a particular field. There are a bunch of experts on topics like Python, Ruby, Perl, Web design, system administration, network administration, database technology, &c. These specialists command a high price, and rightly so, for to be an expert in a field requires quite an intensive commitment of time—not to mention brain capacity.
I'm different because I'm closer to what Heinlein has called a synthesist: in a nutshell, a generalist whose knowledge spans that of multiple disciplines (programming, system/network administration, management, employee training). A CEO of rather successful retail business I've interviewed with called it being a handyman.
Jack of all trades, master of none¶
The aphorism "jack of all trades, master of none" has frequently been invoked with a negative connotation. After all, as I mentioned earlier, expertise requires quite a bit of time: time you can't have when studying a lot of things (without resorting to deus ex machina magical-pendants that result only in gaping plot holes, that is).
The Vietnamese put it thus:
Một nghề cho chín, còn hơn chín nghề
which, loosely translated, means:
Being master in one job is better than doing normally in nine jobs.
How can one be exceptional (and, thus, able to command hefty fees), when it looks as though you've devoted to spreading yourself too thinly?
What most people forget and/or don't know, is the second part of the aforementioned aphorism. Here it is in its entirety:
Jack of all trades, master of none, though ofttimes better than master of one.
My goal in pursuing breadth over depth is to acquire experiences and knowledge I wouldn't necessarily come across otherwise. Time and again, I've been in situations that saw me coming out the better programmer, not because I was more familiar with the language, or because I had more experience, but because I was able to see things from a different perspective, having encountered similar problems being solved in different ways in a different language and/or environment.
Concrete example: In my current gig working for a client that deals with a proprietary platform written in PHP, I would often use list comprehensions (or, at least, the nearest thing to it that can be achieved with a crock like PHP) where others would use list iteration plus mutations. This leads to less code, which then leads to better readability and easier maintenance, plus, less stress for me.
It's not that I'm such a wiz with PHP, or that list comprehension is a black art that PHP programmers are incapable of learning--it's just that most PHP devs never get the chance to even learn about the technique. I feel comfortable using it, because it comes naturally to someone like me who's heavily invested in Python, and has actually made the effort to try and grok functional programming.
Similarly, the yield
keyword in Python would've been a scary thing
for me, had I not managed to grok a similar facility in Ruby, as well
as a bunch of other programming languages (either named the same, or
providing the same functionality).
Why you'd want a mercenary¶
As I mentioned earlier, mercenaries are ideal for beefing up your ranks quickly, and for a short while. We can come in, do the job, then leave, and you don't have to worry about us hanging out all day by the water cooler, because we've got nothing to do (all while collecting a steady paycheque).
Unlike lifers, mercenaries have a vested interest in getting the job done as quickly and as well as possible (so we can move on to the next project with glowing references). We're not interested in coding our way into job security: for us, job security means leaving clients satisfied with our work, so we can grab another lucrative gig.
Why you'd hate a mercenary¶
Morale. Unless the groundwork can be laid down properly with the regular troops, they're going to resent the presence of what they'd likely think of as a snot-nosed, overpriced, underperforming jerk that's going to totally ruin everything everyone's got going. A lot of lifers, especially the ones more likely to obfuscate their way into a career, resent consultants who are coming in to clean the place up, and, usually, rightly so. After all, they've made it a point to bring everybody down to their level, just so they can keep playing ball.
Worse part is that they can poison the minds of others around them with words of gloom and doom, undermining cleanup and streamlining plans even before they can get off the ground.
Support the war against crappy code! Hire a mercenary today!¶
Specifically, hire me!
Here are a bunch of links to help keep your interest piqued (aside from musings on this blog, of course):
- My resumé
- LinkedIn profile: http://ph.linkedin.com/in/rlsantos
- Twitter stream: http://twitter.com/nsantos16
- Jobs-related email: jobs@neil.diosa.ph
If you'd like to discuss the contents of this post, feel free to make use of the aforementioned email address or the comments area.
Apologies are in order...¶
If you came here trying to find out how to be an actual mercenary and/or get girls. On the bright side, I might just have goaded you into learning more about programming!