10 best practices from top coders at Google, Pinterest & more

转载 2013年12月04日 09:03:32

At VentureBeat’s DevBeatconference 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.

A special thanks to Altay Guvench, founder of Silicon Valley tech talentagency 10x Management for helping me compile some philosophical and hands-on advice!

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

“If you want to prototype fast (especially for founders, who want to iterate on a product), go with either Ruby or Javascript.” – Erin Parker, founder and lead developer of Spitfire Athlete 

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

“Becoming great at programming is a noble professional goal. Once you’re there, don’t forget to think about yourself. Do not become any company’s serf or otherwise trade your time on Earth for tchotchkes.” — Greg Sadetsky, a Quebec-based Python and Javascript expert represented by 10x Management; founder of Abri.co, a co-working space

“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

“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“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.

“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 atGoogle

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.

JUnit best practices

Techniques for building resilient, relocatable, multithreaded JUnit tests    一项灵活的、可重定位的多线程JUnit测试技术...
  • haydenwang8287
  • haydenwang8287
  • 2007年10月08日 13:05
  • 854

<<Big Data: Principles and Best Practices of Scalable Realtime Data Systems>>读书笔记

Chapter 1 A New Paradigm for Big Data 1.1 How this Book is structured focus on principles of big dat...
  • kiwi_coder
  • kiwi_coder
  • 2015年10月22日 20:23
  • 2076


工具: site-1.10.5 beyond compare_xpgod 目录: trunk:主干,是日常开发进行的地方。 branches:分支。一些阶段性的release版本,这些版本是...
  • u010244958
  • u010244958
  • 2015年06月29日 15:31
  • 458

最佳实践(Best Practices)

设计细颗粒度的持久类并且使用来实现映射。 使用一个Address持久类来封装 street, suburb, state, postcode. 这将有利于代码重用和简化代码重构(refactoring...
  • liyong1115
  • liyong1115
  • 2008年02月01日 12:37
  • 291

C++ Best Practice

C++把很多细节都仍给了程序员来处理,因此,C++有更多的注意事项,和一条条的决窍、技巧。 * 每个头文件都得解决anti-reinclude的问题 * 一般来说,library的header要inc...
  • kzjay
  • kzjay
  • 2010年01月25日 00:18
  • 449

Oracle PL/SQL Best Practices, Second Edition [ILLUSTRATED] (Paperback), Oct.2007.eBook-BBL

TITLE : Oracle PL/SQL Best Practices, Second Edition [ILLUSTRATED] (Paperback)AUTHOR : by Steven Feu...
  • linhanshi
  • linhanshi
  • 2008年03月05日 12:47
  • 1003

Top 10 Best Practices for Jenkins Pipeline Plugin

The Jenkins Pipeline plugin is a game changer for Jenkins users. Based on a Domain Specific Language...
  • yyw794
  • yyw794
  • 2017年09月13日 08:45
  • 110

The Six Best Practices(1~3)

  • 2016年08月29日 11:36
  • 539


Using java runtime at: /opt/jdk1.7.0_04/jre Error occurred during initialization of VM Unable to loa...
  • 2016年08月30日 15:12
  • 873

Top 15 Ant Best Practices

  • fenglibing
  • fenglibing
  • 2007年08月03日 08:59
  • 6433
您举报文章:10 best practices from top coders at Google, Pinterest & more