Thoughts on Hiring in Tech
The agile software movement suggested that we break down the barriers between business folks and IT folks so they can work more together. When you try to scale agile, it gets complex, process-heavy, and inefficient. I set before you a world where we’re all opportunists. What’s more, in this world, we’re all adults conducting business on our terms. We’re all knowledge workers, having replaced non-thinking work with automation. Those that stay in companies tend to be either not as skilled or stick there more due to inertia than anything else. You have politics whenever you have more than two humans in a room together. Programmers do not need owners and managers, traditional opportunists, and idealists. Idealists tend to be hardworking and well-intentioned. They get too caught up in the rituals and mythos of the pyramidal corporation and founder BS. Most companies want a journeyman programmers with three to five years of relevant experience so they won’t have to pay to train them and then lose them.
Corporations aren’t adapting to the new realities in our ecosystem, and most developers aren’t that quick to take advantage of these, either. Programmers are seen by many as being interchangeable, too. When viewed as a commodity, we are treated as a commodity. Programming is a technician activity — and it always will be. Programming is a tool that gets other things done. Programming itself cannot change the world. Spend a year or two grabbing coffee with people and talking about stuff. Figure out their common problems and develop the skills to solve them. Software developers most often don’t change their position or title.
The corporate world needs to learn what programming is. Programmers tend to over-inflate their skills and worth. What if you got good at producing code that worked and kept working when other changes were tossed? What if you could slice your work into small deliverables and deliver several pieces every week? What if the business could count on you?
The job interview is a process that was dreamed up on a whim about a century ago, never worked in the first place, and hasn’t been altered since. A more effective approach to hiring people than conducting these types of interviews is not bothering to show them. The primary purpose of the brain teaser interview question is to make the interviewer feel superior. If we dispense with the stranger interview, we drop the need to work through the corporate recruiter.
The efficient firms of the future exist by fleeing the role of cost center and flipping their former employers to customers. Everyone’s contributions to the organization’s profits can be measured. They only grow as long as that remains true. If you sell someone else’s hourly labor as a product, the person providing that labor is hardly credible as a partner. Software developers are often held to different organizational rules because they’re hard to replace. GitHub once had a policy known as open allocation, wherein individual employees choose which projects to work on and how to spend their time.
Get practice observing what people are doing and assessing how difficult and expensive automation might be. Your goal isn’t finding things you can write code to solve. Your goal is to see where you could drop inefficiencies with automation. Look for process improvements and existing solutions first. Then contemplate what sorts of commercial off-the-shelf products could help.
The larger the company, the thicker you’ll find the idealist layer. Thwarting the journeyman idealist also means saying no to algorithm/whiteboard interviews. Only after that should you let your compiler finger get itchy as you contemplate writing some code to fix the problem. Whiteboarding things or solving problems using commodity algorithms does not affect your programming ability. The traditional whiteboarding and algorithm problem-solving do not reflect a programmer’s ability. After experiencing the limitations of this approach, I have decided not to participate in such interviews anymore.