I used to push production code -- back in '99 when I worked at GE, my buddy Jason taught me how to code, and I was fascinated by it. I spent much of the early 2000's building dynamically driven websites with mySQL back-ends for several startups, including an e-commerce website along with its back-end administration and inventory management system (screenshot below). We had to host the e-commercie site at a colo facility. That was way before AWS, or Stripe, or any of the technologies today that make something like that much easier today.
While it's been years since I've pushed any production code, that experience has left me with a deep appreciation for what engineers do. Most business people don't have that, and it hurts them in ways they don't even realize. As Paul Graham wrote in his essay "Maker's Schedule, Manager's Schedule," it's easy for managers to completely torpedo the productivity of the "makers" -- those who are actually building the business and really creating value.
It's for this reason that I really encourage managers to learn to code. It's even in our Socialize manifesto, point #1: "Every new hire has a 'Hello World' in at least one language."
The first thing that a manager will find is that coding is a lot harder than they imagined it would be. Most managers have an attitude like "Yeah I could code if I really wanted to, but I can add much more value by being a manager." That attitude is actually a smokescreen for an insecurity: If it's so easy for you to learn how to code, then let me see you do it. Because it's not easy. It's hard. And it's even harder to do it well.
The second thing a manager will find is an appreciation for leaving the engineers alone. The only way I can really describe coding is like scuba diving: It takes you a while to reach depth. Coming up for air completely destroys the dive, and it takes a while to get back down to depth. Interruptions to developers' trains of thought render them wildly less effective. So the next time a manager has a "quick question" to ask a developer, they'll think twice about blowing a hole in the developer's day. (This point is related to a related rant of mine, which is that really, internal departments should be communicating with each other via APIs, which means if the sales support team needs something from an internal database, they'd create a structured request through a pre-defined communication channel and the result would be given to them as an API endpoint. Not only does this allow the engineering team to prioritize its work in an agile scrum-style fashion, but the result is also something that anyone in the company can use, and if it's successful internally, the API can be bulletproofed and documented for external use. This is how Amazon created AWS; a great story on that is here.)
But most importantly, a manager who codes will be much more efficient and effective in his or her daily role. Just being able to hack a script together provides a tremendous ROI. A manager who codes will be appreciated by the engineers in the organization and will be able to force multiply his or her time in ways that a manager who doesn't code wouldn't even begin to understand.
So get to it. Learn to code. Being able to build things in this digital economy is the most valuable thing you can do, no matter who you are. Here's a great video that showcases some of the advantages of learning to code:
Here's a screenshot of the e-commerce site I built over 10 years ago!
Daniel, thanks for sharing your thoughts on coding. It is something I am interested in have been debating learning more seriously than I've chosen to learn it thus far: my coding skills do not surpass HTML and CSS. I'm sort of a hybrid marketer/community-builder/front-end web developer/designer for a tech company in Boston. Taking the plunge into learning more serious coding languages scares me, honestly, and I feel that I'd need to shelve my full-time job and drum playing to make time, and really, learn to code. And, by really learn to code, I mean gaining coding skills that are at all useful. And, by at all useful, I mean transforming my website ideas into code without needing to hire a web developer to cut my mockups into functional web applications. I wonder how long it would take to get to that level of mastery, and where to start if one were to begin learning to code? Perhaps you or members of the community would like to share thoughts or an experience? @Daniel, not gonna lie, just read your post about receiving an invite to SETT, so here we are: #GiveMeSETT. Maybe I get brownie points for not providing a comment for the SETT invite giveaway, but for initiating conversation.
LOL, yeah I just sent you a SETT invite.
Here are a couple of fun ways to learn to code:
Here's a screenshot of CodeAcademy in action:
And here's a screenshot of the Firebase tutorial:
Regardless, you'll see immediate value by learning to code. And once you start it, it's likely you'll get quite addicted, because you end up using your brain a bit differently when you code.
Daniel, thanks for the SETT invite! I'm just having the opportunity to setup my blog, |Dan's Goals|.
Dan's Goal's purpose is yet to be determined, although, I care a lot about the concepts of goal-setting, productivity, and meditation, so a possible theme might be to create a community drive support and accountability for others as they work accomplish their goals. Thing is, I'm beginning to realize that goal-setting in many circumstances can kill creativity and create missed opportunities if goal-setters are too fixated on achieving their goals. Intention-setting might just be a more productive way to view how we expend our energy.
But, enough on that.
I will let you know when I've become a master. The Ri, in Shuhari.
Interesting. I'm not a coder, I'm a technical PM. I've got some markup experience, XML, HTML etc, but nothing much deeper. I've tried to pickup Java, but unlike the typical manager, I know I do not have the aptitude for it. In fact, I've told my manager that moving me to a coding positions is a waste of my talent and a higher risk then bringing someone new in. Coding isn't easy, and I resent that attitude that "anyone can do it".
Enjoyed this post, Daniel.
I'm a linguist... been learning languages for years and years (most recent, Chinese, and it was a 3-year adventure there). The past year I've been starting to learn HTML, mostly to write email templates and tweak blog posts. It's a language and that part is easy. The challenge, and where I really admire engineers/hard-core coders is the logic behind it. It's more than "grammar", it's architecture and juggling 10 boolean components in the air while understanding how they interact.
I think your approach at Socialize is smart. Well done. -Brad
Brad, I've always felt that learning to code uses the same parts of the brain as learning another language, but I've never been enough of a, well, linguist to be able to really describe what coding well is like. Your observation is spot on -- coding well is the equivalent of writing a short sonnet or haiku. Easy to admire, but hard to pull off.
OK I'll admit it: I'm an API-oholic. I'm addicted to APIs. In the nerdy tech world, APIs are old news, but to most regular folks, the term APIs is just a confusing acronym. It is my goal to de-mystify the API a bit in this post, and explain how APIs are changing the world in very real, tangible ways that will matter to you.
First, a definition and a bit of history. API stands for Application Programming Interface. That's also a pretty incomprehensible set of words to most people. So let's simplify: For the purpose of this blog post, think of an API as a key that opens a door to a room you really want to get into.
Let's take this fantasy analogy a bit further. Let's imagine that there are rumors that there's an island in the Pacific ocean that's inhabited by a previously unknown group of humans which have never before had contact with the modern world. They don't speak English, but it just so happens that their little island is known to have a tremendous stockpile of diamonds and gold. There's a mad rush by many people to figure out where this island is located so they can lay claim to its natural resources.
But the inhabitants of this Secret Island are smart. They know how valuable their gold and diamonds are, and they know that by allowing the modern world to find them, they'll be in danger. So they send an ambassador to strike a compromise, and that ambassador happens to find you (imagine the odds -- it's your lucky day!) The ambassador tells you that the entire modern world can communicate with their island through a special interface they've set up. And they will answer, but only if the communication happens on very specific terms -- their terms. They won't answer to any random requests.
This interface he gives you happens to be through a computer terminal. Well, that's convenient, they know how to use computers. This ambassador gives you a special URL through which you can contact his people. It looks something like this: http://thedataweb.rm.SecretIsland.gov/data/2010/acs5?key=b48301d897146e8f8efd9bef3c6eb1fcb864cf&get=B02001_001E,NAME&for=state:06,36
Let's talk about programming. Everyone says you need it these days. Even I do. But, how should you learn to code? Codecademy, KhanAcademy, or other pseudo-learning techniques? Maybe a book, like Learn Code The Hard Way. What language should you learn, and what software should you code in? The questions are endless!
I'm here to give you a solution for you (and myself). Here's an 8-step guide for learning to code.
Everyone knows that goals are pointless if they're not specific. If you don't define your success, you're just flailing around randomly. Therefore, have something you want to build.
Think of coding like woodworking. You want to learn how to manipulate wood to make beautiful objects. Would you start hacking away randomly? No. Then why would you do that with code?