How to learn programming: the traditional way and the quick way
Do you want to become a programmer?
You need to know that you will have to face a long and difficult course, full of nights spent for debugging.
Furthermore, you also need to face relationships with colleagues and clients, time planning and boring tasks.
The traditional way
In order to help you in this difficult course, i want to share a good ebook by Robert L. Read: How to be a Programmer:
To be a good programmer is difficult and noble. The hardest part of making real a collective vision of a software project is dealing with one's coworkers and customers. Writing computer programs is important and takes great intelligence and skill. But it is really child's play compared to everything else that a good programmer must do to make a software system that succeeds for both the customer and myriad colleagues for whom he or she is partially responsible. In this essay I attempt to summarize as concisely as possible those things that I wish someone had explained to me when I was twenty-one.
The book is freely available on GitHub, but is also available as PDF/Epub/Mobi on GitBook, and as hardcover book on Blurb.
The book covers a lot of topics of the life of a programmer, like how to debug, how to organize your time or how to stay motivated.
Here the table of contents:
- Beginner
- Personal Skills
- Learn to Debug
- How to Debug by Splitting the Problem Space
- How to Remove an Error
- How to Debug Using a Log
- How to Understand Performance Problems
- How to Fix Performance Problems
- How to Optimize Loops
- How to Deal with I/O Expense
- How to Manage Memory
- How to Deal with Intermittent Bugs
- How to Learn Design Skills
- How to Conduct Experiments
- Team Skills
- Why Estimation is Important
- How to Estimate Programming Time
- How to Find Out Information
- How to Utilize People as Information Sources
- How to Document Wisely
- How to Work with Poor Code
- How to Use Source Code Control
- How to Unit Test
- Take Breaks when Stumped
- How to Recognize When to Go Home
- How to Deal with Difficult People
- Personal Skills
- Intermediate
- Personal Skills
- Team Skills
- Judgment
- How to Tradeoff Quality Against Development Time
- How to Manage Software System Dependence
- How to Decide if Software is Too Immature
- How to Make a Buy vs. Build Decision
- How to Grow Professionally
- How to Evaluate Interviewees
- How to Know When to Apply Fancy Computer Science
- How to Talk to Non-Engineers
- Advanced
- Technological Judgment
- Compromising Wisely
- Serving Your Team
- How to Develop Talent
- How to Choose What to Work On
- How to Get the Most From Your Team-mates
- How to Divide Problems Up
- How to Handle Boring Tasks
- How to Gather Support for a Project
- How to Grow a System
- How to Communicate Well
- How to Tell People Things They Don't Want to Hear
- How to Deal with Managerial Myths
- How to Deal with Organizational Chaos
The quick way
Fortunately, there is an alternative method that will allow you to become a great programmer in only 21 days, AbstruseGoose reveals it:
[caption id="" align="alignnone" width="744"] from http://abstrusegoose.com/249[/caption]
This cartoon is really funny, but is inspired by a more bit serious article by Peter Norvig, titled "Teach Yourself Programming in Ten Years",that I suggest you read:
Walk into any bookstore, and you'll see how to Teach Yourself Java in 24 Hours alongside endless variations offering to teach C, SQL, Ruby, Algorithms, and so on in a few days or hours. The Amazon advanced search for [title: teach, yourself, hours, since: 2000 and found 512 such books. Of the top ten, nine are programming books (the other is about bookkeeping). Similar results come from replacing "teach yourself" with "learn" or "hours" with "days."
The conclusion is that either people are in a big rush to learn about programming, or that programming is somehow fabulously easier to learn than anything else. Felleisen et al. give a nod to this trend in their book How to Design Programs, when they say "Bad programming is easy. Idiots can learn it in 21 days, even if they are dummies."