At VentureBeat’s DevBeat conference next week, we’re doing things a little differently. You won’t be invited to speak on stage if you can’t code, and we’re setting up practical workshops so you’ll actually learn something and not just be lectured to.
In the spirit of collaboration, I asked some of the most talented web and mobile programmers in my network for their tips. You don’t become a great developer overnight; it takes tenacity, skill, and a willingness to spend many an evening glued to a computer screen.
The most talented programmers have made plenty of mistakes. Here’s what they learned along the way.
1. Think carefully before you choose your first language
“Programming languages differ, but not a lot. The people who use a programming language differ much more. When you choose a language, you’re choosing a community.” — Sam Kaufman, a freelance iOS developer represented by 10x management
2. You’re no code monkey!
“Great developers can architect and build applications. Amazing developers do it with an eye focused on the business. Most people on the business side of the house can’t code, but you certainly can understand the motivations behind a particular feature.
“Too often developers just build what they are told without understanding why they are building it resulting in missed opportunities on both sides.” — John Coggeshall, a freelance web developer represented by 10x Management; a core contributor to PHP
“To meet a deadline, do project communication work ahead of doing technical work (even if it isn’t a prerequisite), because there’s more variance in how quickly other people are able to respond.” — Andrew Wilcox, a web application developer and core contributor to Meteor, represented by 10x Management
3. Stay agile and don’t stop shipping
“Release early, often, and with rap music.” — Max Nanis, a San Diego-based freelance web developer and bioinformatics expert; represented by 10x Management
“Always be testing. A good test suite is a cross between an insurance policy and a canary in the coal mine. It can help you find bugs much earlier in the production cycle, and early bugs are usually easy bugs.” — Jeremy Green, freelance web developer who specializes in Ruby on Rails represented by 10x Management
“Fail Fast. In coding (and in life), I want to know at the earliest possible point that something is broken or not working, rather than let it sit and propagate further. Go all in, fail quickly, fix what’s broken, and keep on keeping on,” — Stephanie Volftsun, cofounder and CTO at Knotch
“Write automated tests for all your code! Practice test driven development as much as possible.” — Zoran Kacic-Alesic, R&D Supervisor at Industrial Light & Magic
“Always be shipping. Don’t ship shit.” — Chris Garvis, former lead software engineer at Moveline and former director of backend development for iVillage; represented by 10x Management
4. Stay in control of the testing process
“Many of the projects suffer from multiple cycles of testing. This adds to delays of projects and causes high-level issues for the organization as a whole.
“Programmers should focus on unit testing their code and semi-regression testing of their code. They know the codebase better than anyone and what changes they impact. Sometimes such changes are missed because QA is testing limited scope, and in turn causes issues in production which can be of significant import.” — Sanjib Sahoo, chief technology officer at tradeMONSTER
“To build defect-free code as quickly as humanly possible, never, ever, say you’ll write the tests later. We know better. Measure test coverage and keep it at 100 percent.” — Seth Purcell, VP of Engineering at Signpost
5. If you’re a freelancer, learn to say no, even to money
“Take any reasonable estimate of time and cost, and double it. If anyone says, ‘This should be straightforward,’ run.” — Ryan Waggoner, freelance web application and mobile developer; represented by 10x Management
6. Don’t rest on your laurels — theory matters, but practice matters more
High level but hands-on
Our upcoming DevBeat conference, Nov. 12-13 in San Francisco, will have a lot more on this topic. Featuring hacker legends like Stallman, DHH, Rasmus Lerdorf, and Alex Payne, it’s a hands-on developer event packed with:
- teck talks
- live Ask-Me-Anything
- hardware hacking
It’s all aimed at boosting your code skills, security knowledge, hardware hacking, and career development. Register now.
“The best way to improve at building software is to build software. Many ambitious, junior-level engineers spend their free time reading about it: the latest tools, development processes, and the like.
“This is an essential way to spend a fraction of one’s time, but it easily creeps into procrastination territory. Instead, strengthen the part of your brain which builds software by using it as much as possible.” –James Cropcho, a Ruby on Rails expert and instructor at General Assembly
“Always be hacking. Many great coders I’ve met have multiple ongoing side projects. Doing side projects forces you to explore new technologies and learn all aspects of creating an application. You might need to do front end HTML/CSS, backend API integration, database optimization, a mobile app, and set up your own servers.” — Andrew Waage, CTO and co-founder of Retention Science
7. Peer review is your secret weapon
“Peer programming is very essential. Two programmers working on the same module can vet each other’s code. Also the development team should do weekly code review sessions where every other developer gives feedback on others code and explains how it can be better in a positive way. This actually fosters a culture of collaboration and throws away developer egos!” — Sanjib Sahoo
8. Avoid premature optimization like the plague
“Only refactor when the problem and the solution are both staring you in the face – premature refactoring is a huge waste of time. Don’t invest in perfecting anything that might conceivably be dropped in the next six months. And premature optimization is the root of all evil.” –Seth Purcell
“Don’t optimize early! I see engineers over and over again worrying about scaling for one million users when they don’t even have one thousand.” — Mariya Yao, founder and creative director at Xanadu Mobile; mobile developer and designer
9. You write your code once, but people will read it thousands more times
“You’re writing code that a machine will interpret and run, but other people will have to read your code, understand it, work with it. You have to be cognizant that your code will have a future audience. Code is a form of written communication, too.” — Tracy Chou, software engineer at Pinterest
“It may sound strange, but always be considerate of your future self. Ask yourself: If you had amnesia, would you still understand the code you wrote?” — Wai Ching Jessica Lam, cofounder and CTO at Sugarbox
“Do thorough and separate readings of your documentation. Designs change a lot, and sometimes it’s easy to leave outdated comments in your updated code. By keeping it current, you make it easier for people in the future, and yourself. I can’t tell you how many times I’ve gone back to my own code and thought, ‘What the hell was I doing here?’ Any time I write good comments, I save future me a lot of headaches.” — Kitt Vanderwater, software engineer at Google
10. It’s a noble profession. Use your skills for good.
“Helping others is a deep human need. Find a way to use your work towards the betterment of humanity, and you’ll have it made.” — Greg Sadetsky
Editor’s note: Developers! If you’re good and want to be great, our upcoming DevBeat conference, Nov. 12-13 in San Francisco, is a hands-on event packed with master classes, presentations, Q&As, and hackathons, all aimed at boosting your code skills, security knowledge, hardware hacking, and career development. The show starts next Tuesday and seats are limited, so register now.