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
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年的专业软件开发经验,收集有关如何成为程序员,如何成为程序员以及如何成为程序员的建议。
How_to_be_a_Programmer_中文版.pdf
how_to_be_a_good_programmer
Title: 10 Lessons About C++ You Need To Learn To Become A Master Programmer Author: Andrew Webb Length: 376 pages Edition: 1 Language: English Publication Date: 2015-03-21 ISBN-10: B00V2LR8NI 10 ...
How To Become A Programmer
本文试图总结出优秀的程序员必须做些什么才能使软件系统对客户和他部分负责的众多同事都成功。
A Programmer_s Introduction to C#.pdf
several algorithms and producing a software product derived from them. This book is intended to fill this gap. It is not intended to teach algorithms from scratch; indeed, I assume the reader has ...
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 ...
Learn C++ Programming Language - Become A Complete C++ Programmer 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本...
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
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...
做一个好的程序员,困难而高尚。将一个软件工程集体愿景变为现实,最困难的地方在于 与你的同事和顾客相处。编程很重要,这需要强大的智力和技能。 但在好的程序员看来,相 比构建一个让客户和各种各样的同事都满意的...
how to think like a python programmer 文件部分的译文(by me),只是涉及到文件部分的一些说明,后续还会再看看翻译别的...