[转]Letter to a Young Developer

I’ve been getting some emails from young developers wanting to “level up” as programmers. I’m definitely not the first to write about this topic, so I’m not sure how much I have to add. Still, for what it’s worth here are a few points off the top of my head:

  • Work with other developers. We are at a wonderful time in the history of technology when for the first time, it doesn’t really matter where you are or who you are working for. So long as you have a decent internet connection, you can pair up with another developer anywhere in the world and work on some code together. More and more experienced developers I know are offering their time for this kind of knowledge sharing. My friend Evan Light holds open office hours, and is developing a site to help Rubyists  pair up. I’ve been doing this for a while as well. Want to work on some FLOSS code? Email me and we’ll set something up.
  • Read the classicsCode CompleteThe Pragmatic ProgrammerThe Practice of ProgrammingDesign Patterns. Etc.
  • Read WikiWiki (sometimes known as WardsWiki). I can’t stress this enough. Sometimes I think I learned everything I really needed to know about programming  from surfing WikiWiki on slow days.
  • Read other people’s code. Hooray for GitHub! If you want to start with a more curated collection and you know some Ruby, try Best of Ruby Quiz.
  • Get involved in your local user’s groups. If they don’t exist, start one. And submit talks. I don’t care how much of a n00b you think you are. There is nothing better than committing to a talk to force you to to learn all about a topic.
  • Write a blog. Don’t worry about being original. Some of the most useful blogs out there are a largely a chronicle of a programmer’s experiments and mistakes, and how they overcame problems. Reflection is one of the most important parts of learning, and writing helps you reflect. And sooner than you think you’ll be getting feedback from other programmers.
  • I’m sure you’ve heard this one before: submit patches to an Open Source project.
  • Flip a coin. Heads pick Vim, tails pick Emacs. Start learning to use the editor that came up. Either one will grow with you for the rest of your programming career. Strong, flexible tools make good coders even better.
  • Learn more than one language. But first learn one language well. You need a go-to language where you can get an idea and bang out a first version in a day, without spending a lot of time learning about bits of the language you’d missed or forgotten. But once you have that one, you need new languages to challenge all the assumptions that first language taught you. Pick languages that are widely divergent in styles. From what I’ve seen Seven Languages in Seven Weeks does a good job of covering a wide array of programming paradigms.
  • Get on the mailing lists for the languages and platforms you use. People sometimes forget that there’s a whole world of great discussion beyond blogs, Hacker News, and Twitter. Mailing lists are often very civil and helpful places compared to those other venues.
  • StackOverflow is your friend.
  • Don’t spend too much time researching the “best” tool for something. I used to badly hobble my productivity by spending days or weeks trying to find the very best obscure framework for the project I was about to start. Don’t fall into this trap. When you’re a relatively inexperienced developer, pick languages and frameworks that have lots of users to start with. It’s more important that you know where to go when you run into a roadblock, then that you pick the perfect tool.
  • Look for apprenticeship opportunities.
  • And of course: practice, practice, practice. Write code at work. Write code at home. Practice code katas. Programming is no different from any other skill: in the end, it all comes down to practice.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值