How To Become A Good Programmer
Our modern society depends more and more on computers which increases the demand to employ good programmers. What makes someone good at writing code and how to become a good programmer?
It turns out the better software programmers have certain characteristics in common: they are passionate about technology, they keep learning and they know what works and what does not.
Countless examples can be found on the internet of terrible computer code. Was it lack of knowledge or perhaps plain stupidity? Some programmers simply don't know what they're doing but if you're reading this article then that's a good sign you want to become a better programmer.
In this article I'll point out several things that make someone a good programmer.
- Should I Pursue a PhD in Computer Science?
Should I pursue a PhD or doctorate degree in computer science? This can be a tough question with many things to consider: Do you like research? What are the pros and cons of pursuing a PhD? Read this article if you have some doubts.
- Jobs in Computer Science if You Don't Like Programming / Coding
Computer science and programming often go hand in hand but there are jobs in computer science that don't involve a lot of programming and coding. This article shares some ideas and career paths that you could pursue.
What makes someone a good programmer?
- A good programmer is proficient in multiple programming paradigms. A good computer programmer is decently to highly skilled one or more programming languages but more languages does not always mean better. If you're good at Java then mentioning C# in your resume won't be as impressive as the combination C and Haskell. These languages have two totally different programming paradigms which require different ways of thinking. If I had to bet money I would bet that the latter programmer is better at his craft than the former.
A good programmer not only learns new languages but also expands his mindset about what programming really is. If you've always done imperative programming (languages such as C) then it pays to learn about object-oriented programming (C++, Java, C#) but also functional programming (Haskell, Lisp). Some languages include ideas of multiple programming paradigms, such as Python.
Let me quote what Eric S. Raymond said about Lisp: "Lisp is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better program." That quote is very true! Lisp is a functional programming language and while I have more experience with Haskell, also a functional programming language, the same holds true: learning such a language makes you a better programmer because you learn to think differently about solving problems (which is what computer programming is all about).
Instead of equating computer programming to a sequence of code statements, you can also view it as expressing the solution of a (mathematical) problem and letting the computer take care of the rest. You don't program explicitly how the computer should compute the result but you express the solution of the program in terms of functions. I won't digress too much on functional programming but I encourage you to learn more about other programming paradigms if you wish to become a good programmer.
Computer programming books
Books about algorithms
Books about data structures
- Great Websites for Computer Science Majors
A nice overview of interesting websites for students majoring in computer science including the latest technology news but also a good laugh and other science news.
- A good programmer is knowledgeable in the design of algorithms and data structures.
Computer programming boils down to manipulating data and how exactly
that manipulation is done. Choosing a good data structure (a certain
file format or a representation of data in memory) is crucial to good
computer code. You have to know why some data structures are a bad
choice and why others will result in much more efficient code.
Once you have chosen your data structures, you need to write algorithms to manipulate the data. Some algorithms will be very inefficient and slow: they are not a good choice if you have a lot of data (e.g., processing thousands and thousands of files) but they may be good enough when you don't have to process so much data.
A decent degree in computer science will focus on teaching you what you need to know about algorithms and data structures. You can also educate yourself by reading books about these subjects. Study the code of others to see what they have done when they tried to solve a similar problem.
- A good programmer is generally someone who is passionate about programming.
If you like what you do then you're generally also better at it. You
have no problem with learning new technologies because you're truly
interested in computer programming.
If you like computer programming then why not contribute to a software project in your spare time? Contribute to a free software project or develop a website for your local sports club or church. You'll always learn something you didn't know before and it helps you to become a better programmer.
- A good programmer is organized and can think logically about solving a problem.
The quality of your computer code is really the result of how well you
are analyzing the problem in your head. If your thinking is messy then
your code will be similar. As they say: "First, solve the problem. Then, write the code".
Think clearly about what values you need to compute and what information you need to do that. Your first ideas might be overly complex. The better and simpler solutions are only developed afterwards and you could have prevented that if you had thought a bit more about how to solve the problem.
Web programmer? Here are some great HTML5 tutorials
- HTML5 Tutorial: Basics of Canvas Drawing
In this tutorial I'm going to demonstrate how to use the canvas element in HTML5 to draw colorful graphics for your website. The tutorial features two rich examples which are explained step by step.
- HTML5 Tutorial: Text Drawing with Fancy Colors, Gradient and Effects
You can do much more than just drawing text in HTML5! In this tutorial I'll show various effects to make some fancy texts, including shadows, gradients and rotation.
- HTML5 Tutorial: Drawing Circles and Arcs on Canvas
Drawing circles and arcs in HTML5 can be quite a challenge. In this tutorial I explain how to draw circles and arcs and how the angles of arcs are measured. This tutorial contains many examples.