Is there a programmer shortage?
The Vancouver Sun is running a story today about talent shortages in Canadian tech start-ups. You can read that here.
Despite what some might think I'm a big fan of and believer in the free market. If there's a shortage of something, you're not paying enough -- and almost universally this holds true. The article talks about trends like bring your own device (a sure sign a company's IT department is over-managing and stifling your employees), and about the perceived issues with finding talent.
So I thought I'd pen this post over my lunch today. Some will hate me for speaking the truth, but I tend to do that when I think I'm right. So lets get started.
I've been in management the majority of my career. I started in tech in the 90s during the dot-com bubble, and climbed the ladder very quickly, gaining on-the-job business experience not usually available to a fresh-faced developer without a degree. I've spent much of my career in dual employment scenarios, some work done as an employee of a bigger company, other work done via my own company StormTide, sometimes a blending of both. I've worked with and for startups and publicly traded companies. I've seen it all. In Internet time, my business is older than Facebook. Youtube and Twitter. I make good money, but I'm not rich and nor is being rich a goal of mine.
So what do I know about modern management of developers. I know that its an oxymoron. The talented dont have time for burndown charts, scrum management, or pair programming. Its demeaning; its Taylorism for the 21st century. It arose from a situation where managers would hire a lazy college graduate, pay peanuts, let him/her integrate himself with the entire company's systems, and then have the very real problems of low productivity, irreplaceable staff and knowledge monopoly over critical parts the business. So crap like scrum was invented. Its great at tracking progress, evaluating employees, etc. Its everything Taylor would have stood for -- but there's a problem with scrum and with any formal management system for intellectual workers.
To understand that problem you have to read Dan Pink (or at least watch his brilliant TED talk), and understand that money is only one form of compensation! ... and here's the problem with scrum. While you can pay developers top dollar, and some will probably come work for you under Taylor-style management for a while, the end result will always be the same. Know why? Because you're paying nothing in Autonomy, Mastery or Purpose. You've said clearly and concisely, "We dont trust you and we have no loyalty to you. We dont even trust you to manage your time effectively."... which breeds an equal reaction from the employee's towards your company.
Talented tech folks have almost unlimited options when it comes to where to work and this isnt because there's a shortage of workers, its because any good developer can create a job as easily as he or she can find a job at a bigger company. Don't like working for someone? Take to kickstarter, to the VC markets, or heck just become a freelancer or consultant. We're at the very begining, not the end of a new frontier industry in the information age, yet management is still trying to act as if knowledge workers are commodities that can owned and interchanged like cogs in a machine.
There's one fundamental truth to the IT field -- at some point all truly good developers get sick of Taylorism and strike out on their own. If you want to find talent, thats where it is: in the marketplace.
So I'll give you an idea of how we do things at StormTide.
Primarily StormTide is me, Kevin McArthur, but its also a company that fluxuates between having a handful of employees and contractors as projects ebb and flow -- but unlike the big companies there's no big hires, and no big layoffs. We own some intellectual properties, develop a few of our own sites, and do research concurrent with development and operations. Developers come and go with projects, and typically they have a number of side projects of their own. We dont seek to own developers and our contracts are fair (which is a rarity in the tech field, believe me). If you want to work on (and own) your own projects, have your own company, have 0 or 50 other clients, you're who we're looking for. [aside: if you want to be on our list, email me]
When a developer comes to work with us, its always on a project basis. The developer will get access to a SVN (no, we dont use git, and I'll explain why in a moment). The SVN will have the need-to-know amount of source code, and be configured with commit hooks to a staging server where the developer can try/run/test the code he/she is working on. The developer doesn't have access to the entire system for local development (so git's advantages are out) and we dont have to worry as much about things like theft of client data, or developers going rogue and running off with the whole codebase to a competitor. When a major unit of development is complete, that branch is then merged into the active project by the project administrator.
We don't have large blocks of outstanding code, and can keep an eye on progress in a transparent-to-the-developer way. Commits show up on a monitor and get instant scrutiny. There's various automated programs to make sure developers dont escalate their privilege levels... Its a little big-brother, but for the most part it keeps the project management out of the way of the developer and protects the interests of the company. There's no big presentations, no code reviews, and no hurt feelings (whoever invented the formal code review really doesnt understand basic human nature). Value for money is judged entirely based on what is hitting the svn, but stats like lines of code or time on task are not used. We have a separate person from the developer write the testing code, so our devs are focused on the innovation we're paying them for and not wasting their time on process.
So what happens when a project is too big for us to manage ourselves? Delegation. We've got a number of other firms who are just like us on our call-sheet. In the old days, the idea of sending work to a competitor was just not done, but now its standard practice. If a project is too big its cut up into smaller peices during the architecture phase, specs written, and its farmed out to a competitor for development. We'll generally specify a language or a framework, but beyond that the company is autonomous and in this way we get the best developers for the job, and, more importantly, there's never a labour shortage. We've got a long list of developers ready for the work, and just scroll down the list till someone says yes. This is the new marketplace, everyone with a Rolodex at the ready. We can either hire a full shop with a list of their own, or if we just need a PHP developer to write a module, there's a list for that too. A graphics designer, got that list too. Need someone to consult with on architecture or even just to do a sanity check on a new theory, yep, to the list!
Everyone makes market rates and everyone is master of their own domain, and, most-importantly everyone is autonomous, working only on the work they want to and are best at.
If you're not part of this network, its a little hard to understand it, however there's a really good, famous example of how it works that you can watch on television. Take a look at the latest seasons of "American Chopper"... and analyze the symbiotic relationships PJD has with their vendors. They dont paint the tanks, they dont build the frames, etc. Probably the best example of this in the series is the relationship with Nubgrafix. This is how the new economy operates. Experts coming together to create something awesome. In-fact Nub put it best himself on this thread.
"... the opportunity to be OCC's in-house painter was mentioned....numerous times....but that is a road to creative destruction in my mind....not because it's OCC, just because it's the type of job that you don't want someone in the same building as you breathing down your neck to get the job done....deadlines are bad enough when the phone is ringing off the wall...but when the person that needs the stuff is standing there watching you?....no way, not me, hahaha. You can't turn on the creative switch at 7:30am and just shut it off at 5pm "
Intellectual workers, craftsmen, they don't thrive under scientific management. So stop trying. Find those that can self-manage, find those that are artisans at their craft and put together a trusted list of vendors you can turn to.
This of course leads to the inevitable, "how do you manage all these experts" question, and that there is the real job in the new economy. For my part you can throw away the PMP certs, the MBA -- those lessons just dont apply. You need a rockstar CTO with a hands-off touch to run the show -- the seasoned vet that's been in the job for years, has a number of successful projects behind him/her and that can demonstrate results. You need to tie that person to the success of the company through equity and make sure that your success is their success.You need a committed pig in this role -- strictly no chickens. You need someone as tech savvy as your vendors and respected in the community (or no one will work with you)... this is your most important hire, and you must choose this role very very carefully, as this person will control your success. You can contract this position, but only in so-far as you're willing to throw away all the work below them and start again if something goes wrong.
To the other points in the article, the term BYOD doesn't exist in the new economy... why would I buy someone a computer and tell them how to run it? To stop them looking at Facebook or viewing eaves.ca (as the govt likes to ban from time to time)? Would I really hire someone who didn't have a computer already setup just the way they like it? If you don't trust a vendor or employee, don't hire them.
These signs, and complaints of a labour shortage are all seeming to be coming from companies that are not 'getting it' in the new economy. They're trying to argue for things like more temporary foreign-workers, more govt-funded training and have historically lobbied to have BC strip technology workers of their rights (yes, "High Technology Workers" have essentially no rights under BC labour laws. ). They're trying to bring back working conditions like Erin Hoffman wrote of in EA Spouse. Sorry folks, there's no talent shortage, only a shortage of companies who understand how to manage developers in the new economy and these conditions just aren't coming back.
This is not a problem to be fixed and there is no talent shortage.