Beware the Lone Wolf PHP Developer
With all the posts on interviewing PHP candidates popping up lately, I thought I’d post this draft that I’ve been sitting on for awhile that’s related to new jobs and interviewing candidates.
I’ve run into the Lone Wolf PHP Developer at several places I have done work. Sometimes, I’ve had to work side-by-side with the Lone Wolf. Other times, I’ve replaced the Lone Wolf who had moved on to different hunting grounds. Still other times I’ve had to hire people and had to choose between a Lone Wolf and several other candidates.
Just who is this Lone Wolf and why should we fear them so much? Here are some telltale signs of the Lone Wolf PHP Developer:
- The Lone Wolf doesn’t understand how to work in a team of developers. They typically don’t even understand what benefits that would create. They do all development on their own, listening to very little input from qualified sources.
- The Lone Wolf got to page 141 on Enter-A-Beginner-PHP-Book-Title-Here and no further. Objects? They’ve never heard of them. They must not need them.
- The Lone Wolf re-invents the wheel for every project and doesn’t use standard tools and practices.
- The Lone Wolf eats their young. OK, I made that one up. Frankly, how could a Lone Wolf have young anyway?
- The Lone Wolf is perfectly satisfied with doing programming work on production servers and using FTP to deploy their code. It never occurs to them that they should strive to create development and test environments. It never occurs to them that deployment via FTP doesn’t scale higher then one developer.
- The Lone Wolf doesn’t know what the letters SCM, CVS, or SVN are, or how to use them in their daily work.
- The Lone Wolf never reads my blog or any other blogs on programming. The Lone Wolf may not know what a blog is.
- The Lone Wolf says crazy things like “MySQL can’t do transactions” and somehow gets management to believe them.
- The Lone Wolf was initially adored by management because they launched a lot of code live during their short stay. Too bad all that code is buggy and completely un-maintainable moving forward. Management doesn’t like that.
- The Lone Wolf whips up incredibly stupid and unnecessarily complex solutions like template systems in which the templates are stored in a database instead of the file system/memory/cache. They shun using tried and true templating methods like PHP files, XSLT, or at the very least, Smarty. (see also: reinventing the wheel)
- The Lone Wolf names variables after themselves that mean nothing to anyone else (ex, $lonewolfFlag )
- And worst of all… The Lone Wolf PHP Developer fails to realize that there are other developers out there in the business world, trying to earn a living just like they are. By failing to conform to development standards that have been proven and tested, they make everyone’s job more difficult.
Now, I personally have run into this Lone Wolf scenario with other programming languages as well. But I think because it is so simple to work with PHP without much formal training that it lends itself to this problem much more readily then other languages. The blessing and curse of PHP is that it is the new VB 6.
23 Responses to “Beware the Lone Wolf PHP Developer”
By Brian D. on May 20, 2008 | Reply
Fortunately I’ve not often had to work with a “Lone Wolf” but as a consultant called often called in for ‘clean up’ work I’ve seen plenty of evidence of the type of work you’re describing.
By Mark Dennehy on May 20, 2008 | Reply
You forgot the single worst trait of “Lone Wolf” developers everywhere and in every language:
They don’t write documentation of any kind.
If I had a euro for every time I’ve cursed one of these developers for writing obscure broken code that has no design spec, no functional spec, no build process notes, no database design notes, no API design notes or reference, no development roadmap, and not even a single comment, let alone PHPDOC comments, I wouldn’t have had to work for a living…
By MonkeyT on May 20, 2008 | Reply
While I agree with the description you’ve laid out here, I think you’re avoiding the problem: The challenge is not avoiding the Lone Wolf Developer (we tend to refer to them as Gunslingers), it’s how to cure them of their antisocial ways and fit them into more civilized society.
As the co-organizer of a large user group for a couple of years now, I can state categorically that about 80 percent of PHP developers out there are self-taught, not school taught - they bought one or two PHP books to get them started (primarily during the dominance of PHP4) and proceeded to learning by experience only from there. Of that 80 percent, a little over half have experience with another programming language, usually learned on the job (again, little or no formal programming education). Most have a specific purpose for PHP (a specific goal in their own office or an inherited responsibility for an existing website), they aren’t looking to start a new career as a PHP dev. To find a PHP developer with a formal CS background is a challenge, even in a large market. That’s where User groups need to step up. And to best do that, they need the assistance of experienced professionals.
1) teach them the virtues of documentation. That’s easier to do with OOP than with procedural code, so intrigue them with OOP techniques. (Somebody show me a single tutorial on the web about documentation that doesn’t focus on how to configure and run some sort of documentation software. Software doesn’t do the hard work. Show the how, where and why.)
2) Show them how isolating data manipulation from rendering simplifies code, even procedural code. You don’t have to go whole hog MVC, just organize your data first, store it in variables, and then render the data at the end of your procedural page. This makes it easier for them to see structure, document the processes, and recognize how often they re-invent the wheel. It might even get them interested in design patterns.
3) trumpet the glories of version control. Don’t just present the bullet points, walk them through finding it and setting it up, because most of these Gunslingers don’t have universal control of their own servers.
A lot of experienced developers avoid User Groups because the groups, being aimed at the broader needs of the community, have little new info to offer them. Screw that. Make your professional life better by spending one evening a month to educate Lone Wolfs you may need to hire down the road. It makes a big difference in the job market.
By Rich Zygler on May 20, 2008 | Reply
Mark,
I didn’t really forget about documentation. I think that’s summarized with point #1, that the lone wolf doesn’t know how or necessarily want to work with others. I probably should add that in though, good catch.
By Rich Zygler on May 20, 2008 | Reply
Monkey,
You make a good point that it is our job to educate these folks to do things the proper way. We should try to make them team players.
I disagree however with your point that the Lone Wolf/Gunslinger isn’t looking to start a career in PHP. I routinely see resumes for people with only some HTML/CSS/PHP experience and no other CS background looking to make $60k+ a year. Something’s wrong with that.
By Jeremny on May 20, 2008 | Reply
I’m like a lone wolf in that I prefer to work alone. I don’t think there’s anything wrong with that and I’m sure many programmers would prefer that too.
By Rich Zygler on May 20, 2008 | Reply
Jeremy,
I think the inclination for most programmers is to hide away at their desk and code. That’s fine for small projects where you are the only developer. But for large projects, you have to learn to become a productive member of a team. That involves working with others. That involves compromise. And that involves paying attention to the points I’ve listed above.
By pcdinh on May 20, 2008 | Reply
Reinventing the wheel is a very very good thing if the previous wheel is not good enough.
By MonkeyT on May 20, 2008 | Reply
What I’ve learned over time that dedicating your time to local group not only trains developers who want to learn (admittedly not all of them do, and those who don’t rarely show up more than once), it changes the market.
A) Lone Wolfs may be solitary, but they are usually competitive. give them the opportunity to show off what “unique” skills they have usually draws them into the conversation. That conversation usually winds up demonstrating that their “unique” solution may not be that unique, and by combining it with other skills, could probably be easier. In our group we have a few exceptional programmers who simply can’t work with others well. But we learn from them, and after time, they listen to us. It’s the nature of good PHP developers to steal good ideas. You just have to demonstrate that they are good ideas.
B) The job isn’t just to educate the developers, it’s to educate the employers. We welcome employers and headhunters to attend our meetings (and quietly distribute their contact information - we promote job openings but do NOT distribute member info) so that when they hire, they know good practices from bad, we try to teach them enough to tell when someone is bluffing. Eventually, even the job descriptions they post begin to specifically emphasize skills that benefit teams.
We teach the market what they should expect from PHP developers, we teach PHP developers how to provide those services. If the folks paying real money know specifically where to look for professional caliber PHP skills locally, it makes life harder for those that refuse to play nicely with co-workers.
Lone Wolf developers may desire to work alone and unsupervised, but they do want to work. To win this game, change the rules.
By MonkeyT on May 20, 2008 | Reply
pcdinh : By all means, fix the wheel. But write your code as if you’re fixing it for someone else to maintain. Nobody’s memory is perfect. In a year or so, that stranger who is trying to understand the code will be you.
By EdShemi on May 20, 2008 | Reply
Tried and true is great for most applications, but what about when tried and true just doesn’t fit? That is where experimental and innovative kick in. I believe like many others that you should follow the basic conventions of coding, however, you should never think that just because someone else says you should develop a certain way, that you have to.
You never have to reinvent the wheel, but you can get new rims and fresh tires if you like.
By Michael Kimsal on May 20, 2008 | Reply
I worked with a whole pack of lone wolves who somehow convinced everyone that “php4 doesn’t support objects”, pushing people in to php5 before it was even released. Yes, there’s a place for cutting edge tech, but basing your decisions on faulty assumptions doesn’t do anyone any good.
By Rich Zygler on May 20, 2008 | Reply
pcdinh: I’d need to know which wheel needs re-inventing. If it is round and it rolls, it is probably good enough.
By K on May 20, 2008 | Reply
Rich
I agree with a lot you say, but I think your being a tad outlandish with points 5 and 7.
I work with very large projects (all internal, none belong to “clients”) consisting of several thousands files and maintained by 5 developers/designers and we use FTP all the time, access is tightly controlled to just key people who upload the files, you may not see this as “good” practise, but thats purely a personal opinion - our business demands constant small updates/tweaks each day and rolling out updates from CVS or SVN just wouldn’t work (god knows I’ve tried).
As for blogs, personally I find them a good source to gauge other peoples experiences etc, but many consider them outlets with little substance.
Peace
K
By Rich Zygler on May 21, 2008 | Reply
K,
If you use FTP to deploy changes with 5 people and you haven’t had anyone write over someone else’s changes, then consider yourself very fortunate.
By David on May 21, 2008 | Reply
Great post. I’m not a manager but I have had to work closely with a lone wolf for the last twelve months and it has gotten to the point where I’m actively seeking alternative employment. They are the worst kind of people to work with, very dogmatic - never interested in learning from other people but always wanting to teach you “their way”.
By Luis' Parenthesis on May 21, 2008 | Reply
For wolves to come in packs, what a dream! To hire, not only individuals, but contributors that share an advanced social mind, that’s simply priceless. It’s the TV dinner of employers: get instant teams just by adding contracts to a group of people, and let money flow in! Priceless.
I can picture theese semi-literate lone wolves you’re talking about. A lot of us actually started off this way, dribbling about our computers during our teenage years, getting educated in the field later on, and then, hopefully, graduating to some higher level, ready to join a great pack of howling friends to work and play seriously with. Again, what a dream!
How can one fail to be seduced by these hobbyist’s ideals? Like bees and flowers, wolf packs and worplaces should be mutually beneficial. Shouldn’t they? Amazingly, so, judging from the daily grind of many IT shops, it may well be that lone wolves are not cured, but made. Haven’t you seen those black box cubicules, where each wolfe is assigned his own project to work on? Input time; output product. How can you grow a pack under such circumstances?
Books, the Internet and user groups can make the lone wolfe grow out of his own ignorance, but you can hardly call that a pack. Just stop looking for the perfect ready-made team-mate, rather, invest: make a wolf part of your pack.
By David on May 22, 2008 | Reply
These “cure the lone wolf rather than ignore them” comments are focussing too much on the points that label a lone wolf as some technically inferior co-worker who is dragging everyone down with their sheltered knowledge and abilties.
As points #10 and #12 describe, the lone wolf can also be very technically competent. Sometimes it’s the very fact that they’re an above average programmer that creates all the problems. They’ll come into a development team with their big ego and see a set-up and standard practices that are a little different than what the wolf is used to, so go ahead and cure the rest of the team of their inferior practices and standards.
Reinventing the wheel is fine when you’re working on your own time but if you’re working on legacy code or existing projects that are passed around the entire team and this lone wolf is not following company standards or practices then it creates a huge maintenance nightmare. Working with anything they’ve written becomes a project in itself, especially if the lone wolf is experimenting from project to project and not even keeping it consistent.
By Luis' Parenthesis on May 22, 2008 | Reply
My point is that otherwise competent programmers often get hired by companies that have little clue about these tools and practices that should be standard knowledge in an IT dept. In order to get some standard sets, they tend to revert to their lone wolf’s standards and develop things their own ways, otherwise nothing evolves.
What I’m saying is wolf packs are mainly a cultural thing a company ought in invest in. Wolves rarely come in pack, but they’re usually driven to become part of a good one. It’s also a company’s responsibility to create a favourable environment for packs to evolve. At least, that’s certainly a great first step to attract the right people… or make them.
By Rich Zygler on May 22, 2008 | Reply
Good comments folks, keep them coming.
Luis: You make some good points. It IS a company’s responsibility to create an environment for developers to join together instead of separate.
And to David’s point, I’ll say this is one area that makes mgmt and team leadership interesting/challenging — can every wolf be introduced/re-introduced to the pack successfully? I’d love to say the answer is yes but my experience says “not always.”