Advice on How to Become a Programmer
An SbR reader writes:
"I want to learn to program computers:
- What is your advice on becoming a good programmer?
- How do you acquire the knowledge?
- Is it necessary to know mathematics, specifically algebra, to be a good programmer?"
I receive one or two emails per month along these lines, so I've decided to share some advice on how to become a computer programmer. Notice I said "my advice" and not "the one and only way"; there are too many paths for one person to know them all. Here are some thoughts based on my experience:
Q: What is your advice on becoming a good programmer?
Everyone I've talked to has taken a different path. Programming is different from other engineering disciplines; if you want to become an electrical engineer you go to school, graduate, work for an engineering firm, and one day take a test and get licensed. Programming is different because people do it as a hobby; no one designs electrical subsystems for fun. This creates more possibilities for learning how to code.
Here are the elements I think are key:
- Learn, learn, learn.
You must have an insatiable appetite for knowledge. This usually means reading a programming book every few weeks in the early days, and moving on to more conceptual books like The Pragmatic Programmer
, Code Complete
, and Facts and Fallacies
after 6-12 months of full-time coding. I can't stress the value of reading enough, nor the value of immersing yourself in code early in the process.
- Transition into Concepts.
Learning how to be a good programmer begins with learning logic concepts and language syntax; they are much easier to understand when taken together. But good developers quickly desire knowledge that transcends language syntax. Perl, PHP, Java, ColdFusion, ASP...all languages I used in my first 18 months as a professional programmer. What made me a good programmer was not my knowledge of each language, but my desire to understand and refine concepts like D.R.Y., the broken window theory, and code re-use.
- Hang Out With Programmers Who Are Better Than You
. As a guitar player, the most I ever learned about the craft of songwriting was when I was hanging out with people who were much better than I. The same goes for writing software. And due to this new-fangled internet thingy you don't even have to be physically present to be a part of the community: read programming blogs from the heavy hitters (Scott Guthrie
, Rocky Lhotka
, Dino Esposito
, Scott Mitchell
, etc...), check out programming forums, and look at other peoples' code. Reading source code can be a pain, but the more you see the more you will be able to identiy code that's easy to understand, and code that takes a PhD to figure out how they output "Hello World" to the screen.
Q: How do you acquire the necessary knowledge?
There are a number of possibilities:
- A Software Apprenticeship
.
If you haven't ready my article on Software Apprenticeships
, I recommend you do. The best (and I would argue the quickest) way to become a good programmer is to write code under the wing of an experienced developer who will teach you not only the basics, but the in-depth knowledge that takes years of experience to learn. I consider this option leaps and bounds above all others.
- Learning while Doing.
Want to learn to code? Get a job writing code. I don't care if you make $5 an hour; you will progress more in 1 month as a full-time developer than you will in a year of hobby programming. There's no better way to learn to program than to write code.
- Books & Mags.
Books and magazines have been key in my quest for programming knowledge. When I've apprenticed developers in the past, I use books as their primary source of basic knowledge, having them read 1-2 programming books per month, while teaching them more advanced techniques in person.
- College.
Having gone this route myself I am well aware of the limitations of the U.S. College system in preparing students for a career in computer programming. Preparing them for a career in determining little-o and big-O notation, sure, but actually writing code from the get go? Nope. College is great for high-level theory, but work experience trounces it when it comes to learning software development.
- Tech school.
I've only worked with one programmer who went to a technical school and she had good knowledge of language and coding concepts, but not a ton of theory or design knowledge. As a result, her code was utilitarian and used a lot of brute-force, but was often not well-designed or easily maintainable. There's obviously a balance between not enough practical knowledge (college) and not enough theoretical knowledge (tech school). I am using a very narrow sample, so don't take this as a blanket judgment of tech schools. Perhaps an SbR reader with more experience in this area can enlighten us. As an aside, the network administrators I've worked with from tech school have been well-trained and great to work with. Perhaps the nuts and bolts of networking are better suited for such a practical teaching approach.
Q: Is it necessary to know mathematics, specifically algebra, to be a good programmer?
Quite simply, no; it's not necessary to know math in order to be a programmer.
If you're developing games, then mathematics and physics play a large part, but building an invoicing application does not require much beyond basic addition and subtraction.
However, from personal experience, people who have an easy time learning mathematics and enjoy solving logic problems (be they algebra or how to move Mount Fuji
), tend to learn code quicker and enjoy it more in the long run. It takes a twisted mind, my friends.
For more information on becoming a good programmer, check out the books I mentioned above, as well as my article Personality Traits of the Best Software Developers
, and my series on Becoming a Better Developer (links located in the right navigation).
Feel free to chime in with your experience of becoming a programmer.
About Me:
My name is Rob Walling and I'm a software developer living and working in Los Angeles. I write about hiring, managing, and motivating software developers, in addition to random outbursts on improving development skills and software startups. My consulting firm, The Numa Group
, provides .NET development for clients throughout the United States. If you are in need of a .NET developer or architect, drop me a line
.
原文:
http://www.softwarebyrob.com/archive/2007/03/20/Advice_on_How_to_Become_a_Programmer.aspx
分享到:
相关推荐
How to be a Programmer: Community Version Robert L. Read with Community Copyright 2002, 2003, 2016 Robert L. Read Licensed under Creative Commons Attribution-ShareAlike 4.0 International License. ...
how-to-be-a-programmer-zh
根据作者16年的专业软件开发经验,收集有关如何成为程序员,如何成为程序员以及如何成为程序员的建议。
《如何成为一名程序员:从入门到精通的全面指南》一文由Robert L. Read撰写,旨在为初学者乃至高级程序员提供一套全面的技能培养路径。文章不仅涵盖了个人技能、团队协作能力,还深入探讨了判断力与职业成长的重要性...
《如何成为程序员》中文版是一本面向程序员的指南,涵盖了从入门到高级的多个方面,旨在帮助程序员提升技能,提高工作效率,并在团队中发挥更好的作用。以下是对文档内容的详细解读: 1. **入门个人技能**: ...
How To Become A Programmer
本文试图总结出优秀的程序员必须做些什么才能使软件系统对客户和他部分负责的众多同事都成功。
C++ How to Program presents leading-edge computing technologies in a friendly manner appropriate for introductory college course sequences, based on the curriculum recommendations of two key ...
根据提供的文件信息,本文将围绕如何成为一名优秀的程序员这一主题展开讨论。尽管原文链接及部分内容未能提供具体细节,但我们可以基于标题、描述以及标签中的信息来深入探讨成为一名优秀程序员的关键要素。...
Master Python and become a programmer-even if you never thought you could! This breakthrough book and CD can help practically anyone get started in programming. It's called 'The Hard Way,' but it's ...
If you’ve never programmed before, the act of typing seemingly cryptic text to produce sleek and powerful applications probably seems like a black art, and you might wonder how you’ll e Table of ...
You Need To Learn To Become A Master Programmer
Divided into two parts, Think Perl 6 starts with basic concepts that every programmer needs to know, and then focuses on different programming paradigms and some more advanced programming techniques....
Think Like a Programmer-An Introduction to Creative Problem Solving Think Like a Programmer-An Introduction to Creative Problem Solving
《Expert C++: 成为精通编程的程序员》这本书旨在通过学习C++17和C++20的最新特性,帮助读者掌握编码最佳实践,成为熟练的C++程序员。书中深入探讨了低级编程、面向对象编程(OOP)、标准模板库(STL)、元编程以及...
This book is for software developers who want to understand why C# 5 is designed the way it is and how to use it effectively. The content assumes familiarity with object-oriented programming concepts...
做一个好的程序员,困难而高尚。将一个软件工程集体愿景变为现实,最困难的地方在于 与你的同事和顾客相处。编程很重要,这需要强大的智力和技能。 但在好的程序员看来,相 比构建一个让客户和各种各样的同事都满意的...
《A Programmer's Introduction to C#》是一本由Eric Gunnerson所著,旨在向有经验的C程序员介绍微软全新的C#语言的图书。本书详细涵盖了C#从基础到高级的各个方面,同时也深入探讨了与C++、Visual Basic和Java等...