Programming Tips 

 Learn by Coding, Not by Reading

Children don’t learn how to tie their shoes by reading about it; they have to actually doit, over and over, until it’s firmly entrenched in their brains. Coding works in much the same way. You might fly through a chapter of reading and have no problem understanding a topic like “for loops,” but if you don’t play with the code right there and then, you’ll never remember the syntax when you go to actually implement it for the first time. The same applies to sample code: Thanks to the additions of comments and instructions, it’s easy to read and always seems fairly intuitive, but to fully grasp the concepts, you need to actually tinker around and write (or at least run) the code yourself. Therefore, get your hands dirty whenever you can and embrace the mantra, “code as you go.”

Code by Hand to Sharpen Proficiency

Computer monitors become thinner, hard drives lighter, and programming languages more powerful, but coding by hand still remains one of the most effective methods to learn how to program. Whether it’s on a whiteboard or in a notebook, coding by hand forces you to be more cautious and precise, because you can’t run hand-written code midway through to check if your work is correct. While this restriction will slow you down a bit at first, it will mold you into a more fundamentally sound developer and help you tremendously in college exams. So start early and get used to this old-school practice.

 Take Breaks When Debugging

Debugging—the act of hunting down and fixing that errant code that’s causing your website or application grief—is painfully tedious work. It’s easy to go down the rabbit hole for hours, becoming more frustrated as you go, and thus less productive in your work. To avoid this, take regular breaks. Stepping away for a while—whether it’s 30 minutes or three hours—will allow you to clear your head and come back with a fresh perspective.

Seek Out Help and Additional Resources

Too often, aspiring programmers feel that asking for help is an admission of failure, or a sign that they’re just not “cut out” for programming. In truth, every programmer has needed help along the way. So when you’re stuck on something, don’t be shy to reach out to classmates, mentors, or even established developers. If there’s one thing passionate individuals enjoy, it’s sharing their knowledge with others.

Likewise, if you’re struggling to understand a concept in a textbook, class lecture, or on Codeacademy, try out a different resource. Everyone learns in different ways, and just because one source doesn’t make sense doesn’t mean there’s something wrong with you. It means that you’re not clicking with the delivery of the material. There are countless online resources to help you learn computer programming, and there’s always a Reddit post, YouTube tutorial, or blog explanation that will make the material-at-hand crystal clear. Many of them are especially fond of Stack Overflow and Reddit’s “learn programming” subreddit.

 Learn another language

It doesn't matter which language you learn, but learning another language (regardless of how many you already know) will make you a better developer. Even better is to learn one that is significantly different from what you already use on a regular basis. In other words, if you are a C# developer, learning VB.NET or Java will not help you as much as learning Ruby or Groovy.

And when I say "learn another language," I mean really learn it. Learning a language consists of three realms of knowledge: the syntax, the built-in operators and libraries, and "how to use it." The first two are easy; I think that an experienced developer can pick up enough of a language's syntax to maintain code in 30 minutes to a few hours depending upon the language. The operators and libraries are just a matter of slowly accumulating knowledge and being willing to check reference materials until you memorize what you need to know. But it's the third item — "how to use it" — that can only be learned over months of working with a language and that's where the real magic happens. I suggest doing a project that is well suited for that language and doing it in that language's style.

Truly learn another language, and I promise that your abilities as a developer will start to blossom.

 Learn advanced search techniques, tactics, and strategies

More and more, being a good developer is not just about your skill, but your skill at finding information. Simply put, modern languages and development frameworks are too large for most people to remember much of them. As a result, your ability to get work done is often dependent upon your ability to perform research.
"Techniques," "tactics," and "strategies" may sound like synonyms, but they are not. The techniques you need to learn are the advanced search systems of your favorite search engine; you need to learn things such as the Boolean operators, how to filter results (negative keywords, domain restrictions, etc.), what role word order plays, and more. So essentially, RTFM.

You should learn tactics such as knowing how to approach any particular search and knowing what you should you actually look for. Errors are easy — just look for the error code — but keyword selection on many searches is much more difficult.
With regard to strategies, you need to learn things such as what search engines to use (hint: general purpose search engines are not always the right answer), which sites to visit before going to a general purpose search engine, and even which message boards to post to for help.

Help others

Teaching others is invariably one of the best ways to learn anything. It is understandable to think that you don't have much to offer because you are relatively new to the development field. That's nonsense. Remember, everything you know you learned from someone or somewhere; so try being the someone that another person learns from. Spend a few minutes a day trying to answer the questions from

Be patient and keep practicing

Research shows that it takes "about ten years, or ten to twenty thousand hours of deliberate practice" to become an "expert." That's a lot of time. Furthermore, becoming an expert does not always mean doing the same task for 10 years; it often means doing a wide variety of tasks within a particular domain for 10 years. It will take a lot of time and energy to become an "expert"; working as a developer for a few years is not enough. Want to become a senior developer in your early 30s? Either start your education/training sooner or be willing to do a lot of work, reading, and practicing in your spare time.


Learn a few advanced ideas in-depth

Much of what goes into being an intermediate developer is having a few concepts that you are really good at working with in code. For me, it is multithreading/parallelism, regular expressions, and how to leverage dynamic languages. How did this happen? Multithreading and parallel processing came about because I read articles on it, thought it sounded interesting, and figured it out on my own; I keep writing apps that use those techniques. I had a job that used a ton of regular expressions in Perl. Also, I ended up writing my own e-commerce engine with a template processing engine and built-in database system; then I spent nearly two years working on it.

Find something that has you really hooked. It might be image manipulation or maybe database design or whatever. Even if you're an entry-level developer over all, try to become an expert in at least one area of focus. This will get you into that intermediate level quite quickly, and once there, you will be halfway to expert.

Learn the basic theories underlying your field

It's one thing to write "Hello World," but it's another to understand how the words appear on the screen. By learning the "groundwork" that supports the work you do, you will become much better at it. Why? Because you will understand why things work the way they do, what might be wrong when things are broken, and so on. You will become better by learning what happens at a lower level than your work.
If you are a Web developer, read the HTTP RFC and the HTML spec. If you use a code generator, really look at the code it generates; if you use database tools, take a look at the underlying SQL it generates; and so on.

 Look at senior developers' code

At your job, take a look at the code the senior developers are writing and ask how and why things were done a particular way. If you can, check out open source projects as well. Even if other developers don't have the best coding habits, you'll learn a lot about how code is written. Be careful not to pick up bad habits along the way. The idea here isn't to just blindly imitate what other developers are doing; it's to get an idea of what works and what makes sense and try to imitate it.

Learn good habits

Nothing marks an inexperienced coder like stupid variable names, poor indentation habits, and other signs of being sloppy. All too often, a developer learned how to program without being taught the less interesting details such as code formatting — and it shows. Even though learning these things will not always make your code better or you a better developer, it will ensure that you are not viewed as an entry-level developer by your peers. Even if someone is a senior developer, when variables are named after their 97 cats or their functions are called "doSomething()," they look like they do not know what they are doing, and it makes their code harder to maintain in the process.

Have fun

Want to be stuck on the career treadmill? Hate your job. What it takes to move up in this business is not merely dogged determination to bring home an ever growing paycheck but an actual enjoyment of your work. If you do not like your work and you are a junior developer, what makes you think that being an intermediate or senior developer will be any better? Change jobs or change careers. On the other hand, if you love the work you are doing, great! I guarantee that you can become a better developer if you keep at it.


In addition to these tips, there’s one other thing you can do to learn programming faster: remain confident. Be patient with your progress and accept the fact that you are going to fail repeatedly—it’s the only way to learn. If doubts ever cloud your mind, remember that every programmer has walked this path before, none of them any more “destined” to become a developer than you.