I began to program nearly 20 years ago, learning via oraperl, a special version of the Perl language modified to work with the Oracle database. A month into the work, I damaged the accounts of 30,000 fantasy basketball players.
So begins Paul Ford's fantastic article on Bloomberg about his life as a coder. His story is well worth your time. But if you're looking for practical takeaways, and you'll indulge me a little reference to rhymin' Paul Simon, then here you go: 30 ways to please your coders, courtesy of Ford's wisdom and experience.
1. Do not reproach them for big mistakes.
Customers will do it for you. After Ford's mistake damaged 30,000 fantasy basketball accounts, they sent him angry emails--the only reprimand he needed. "After that, I decided to get better," he writes.
2. Consider the talents of wily veterans (not just young hotshots).
Ford notes he's "not a natural" at coding. But after 20 years--and a multitude of experiences--he's conversant in many languages and not intimidated. "After two decades of jamming information into my code-resistant brain, I've amassed enough knowledge that the computer has revealed itself. Its magic has been stripped away," he writes.
3. Hire someone who's worked for Google or Apple--if you get a chance.
This comes from a quip Ford makes after sharing how coding-conversant he's become. "I can talk to someone who used to work at Amazon.com or Microsoft about his or her work without feeling a burning shame," he writes. "I'd happily talk to people from Google and Apple, too, but they so rarely re-enter the general population."
4. Painting all coders with a broad brush is risky.
Coding jobs can differ radically. "There are people who write code for embedded computers smaller than your thumb. There are people who write the code that runs your TV. There are programmers for everything," Ford explains. "They have different cultures, different tribal folklores, that they use to organize their working life."
5. Painting some coders with a broad brush is potentially helpful.
If you can tap into the coding subculture at your company, you'll have a leg up on how to engage and delight your programmers. Ford explains: "If you told me a systems administrator was taking a juggling class, that would make sense, and I'd expect a product manager to take a trapeze class. I've met information architects who list and rank their friendships in spreadsheets. Security research specialists love to party."
6. Treat them like artists or scientists, though you may be tempted to treat them like the machines they program.
Ford quotes legendary Dutch computer scientist Edsger Wybe Dijkstra Dijkstra: "Computer science is no more about computers than astronomy is about telescopes."
7. Lose the notion that Siri or Cortana knows how to listen.
"When you speak to Siri or Cortana and they respond, it's not because these services understand you," Ford writes. "They convert your words into text, break that text into symbols, then match those symbols against the symbols in their database of terms, and produce an answer. Tons of algorithms, bundled up and applied, mean that computers can fake listening."
8. Remember they're striving for elevated ideals.
For instance, the so-called DRY principle--for Don't Repeat Yourself--is "one of the colloquial tenets of programming," writes Ford. "That is, you should name things once, do things once, create a function once, and let the computer repeat itself. This doesn't always work. Programmers repeat themselves constantly. I've written certain kinds of code a hundred times. This is why DRY is a principle."
9. Mind the benefits of linguistic uniformity.
"There are true benefits to everyone on a team using the same language," writes Ford. "They're all thinking the same way about how to instruct the computer to process data."
10. Mind the benefits of linguistic diversity.
"It's not necessary for every team across a big organization to use the same language," he continues. "In fact, it's often counterproductive. Large organizations have lots of needs and use many languages and services to meet them. For example, Etsy is built atop PHP--but its product-search service uses Java libraries, because the solutions for search available in Java are great."
11. Say it loud, say it proud.
"Blunt talk is seen as a good quality in a developer, a sign of an 'engineering mindset'--spit out every opinion as quickly as possible, the sooner to reach a technical consensus."
12. Grow thicker skin.
"Expect to be told you're wrong; expect to tell other people they're wrong," he continues. "Masculine anger, bluntly expressed, is part of the industry."
13. Tease out the introverts.
"Coding is a culture of blurters. This can yield fast decisions, but it penalizes people who need to quietly compose their thoughts, rewarding fast-twitch thinkers who harrumph efficiently."
14. Modify your interviews process.
Ford notes that job interviews "often include abstract and meaningless questions that must be answered immediately on a whiteboard." The "immediately" part only exacerbates the downsides of the blurting culture.
15. Keep your meetings on point.
"Regular meetings can become sniping matches about things that don't matter. The shorthand term for that is 'bikeshedding,'" Ford writes. (Because programmers will vehemently argue about the best color to paint the bikeshed, even if that's not what the meeting is about.)
16. Beware passing trends when programming.
"At any moment some new thing could catch fire and disrupt the tribal ebb and flow. Instagram was written in Python and sold for $2 billion, so Python had a moment of glory," Ford writes. "The next mind-blowing app could show up, written in some new language--and start everyone taking that more seriously."
17. Beware passing trends when hiring.
The trendy nature of programming languages means that not every coder has an enduring skill set (unless that skill is rapidly learning new languages). "Within 18 months your skills could be, if not quite valueless, suspect," writes Ford.
18. Know the world will change in a snap.
The reason? Hackers. When they crack a code, they can turn a three-month coding project (or problem) into a three-minute one.
19. Let them be defensive.
"They know their position is vulnerable," writes Ford. Their bread and butter--knowledge of a useful programming language--is subject to rapid change. That's why they'll get angry or defensive if they hear someone suggest that Language X is better than Language Y.
20. Grasp how the brilliant ones will humble you.
"You can tell they're brilliant because their solutions make you laugh and go, 'Oh, I would never have thought of that,'" writes Ford. "They know more than the manuals."
21. Fantasize about hiring the best of the best.
"But I wouldn't hold out hope that one will come to work for you. You can't hire them for the same reasons you can't coach the Chicago Bulls and you aren't often called upon to date supermodels of your preferred gender."
22. Drop the stereotypes.
"The idea that people with Asperger's make good programmers is as suspect as the idea that women aren't naturally inclined to coding; both assumptions, to use a term beloved of the Internet, are problematic, and deeply reductive. Tread lightly: All kinds of people can be programmers."
23. Expect mistakes, even from the brilliant ones.
"Their code still has bugs, it still needs to be optimized--they're not without flaws. But for every candle we own, they have three or four flashlights and a map."
24. Encourage their dreams and outside interests, which may or may not be code-related.
"Sometimes they're thinking about higher mathematics, or how to help a self-driving car manage the ethical choice between running over a squirrel and driving off a cliff. Or they're riding their bikes, or getting really into pottery."
25. Inspire them with newness.
"As a class, programmers are easily bored, love novelty, and are obsessed with various forms of productivity enhancement."
26. Engage their desire for speed and efficiency.
"God help you if you're ever caught in the middle of a conversation about nutrition; standing desks; the best keyboards; the optimal screen position and distance; whether to use a plain text editor or a large, complex development environment; chair placement; the best music to code to; the best headphones," Ford writes.
27. Respect their ability to be fast productive without your help--or the help of software.
"Whatever you do, never, ever ask a developer about productivity software."
28. Feed them.
Ford cites Soylent as a productivity enhancer. It contains potato and rice starches, oat flour, oils, vitamins, and minerals. "It was invented in 2013 by Rob Rhinehart, a programmer hoping to make mealtime more efficient," he writes.
29. Caffeinate them.
Ford recommends Club-Mate, "a fizzy drink from a Bavarian brewery sold mostly in Europe. It's made from yerba mate, which has caffeine and polyphenols." In the absence of Club-Mate, coffee will do.
?30. Give them reasons (in addition to superb compensation) to stay.
Ford describes how some programmers, if they're frustrated about the language they're working in, will "just quit, because Lord knows there are jobs out there. For programmers, particularly the young ones, there are jobs everywhere."