ArtsAutosBooksBusinessEducationEntertainmentFamilyFashionFoodGamesGenderHealthHolidaysHomeHubPagesPersonal FinancePetsPoliticsReligionSportsTechnologyTravel

How To Become A Good Programmer

Updated on August 18, 2011

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.

Various computer programming books
Various computer programming books | Source

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.

These computers may be old but computer programming is not that different nowadays.
These computers may be old but computer programming is not that different nowadays. | Source
  • 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.

This article was written by Simeon Visser. I am earning money online by writing here at HubPages.com. Would you like to earn money online as well? Read the success stories and sign up today to get started!

Comments

    0 of 8192 characters used
    Post Comment

    • simeonvisser profile imageAUTHOR

      simeonvisser 

      7 years ago

      Thanks. Web programming is a nice field to be in; many things are moving to the web these days. I also know people who studied computer science but then moved to information technology because programming wasn't their thing. That's all fine to me, do what you like best!

    • myi4u profile image

      myi4u 

      7 years ago from United Kingdom

      I guess, I am just an average programmer. I studied Information Technology but funnily involves in the web programming world at the moment. There are just so many things to learn with so little time. 24 hours a day is practically not enough to do most things!

      Nice info!

    • simeonvisser profile imageAUTHOR

      simeonvisser 

      7 years ago

      @jack: Yes, there's a lot more to it. We like to write code but it's important to think about the purpose that the code serves and whether we should be writing that code at all. It may be possible to solve the customer's needs in a more efficient and faster way. Like you say it's good to keep an eye on what's happening and to adapt to what the future may bring.

    • profile image

      jack 

      7 years ago

      Very nice article, everything you describe is true.It's a very well articulated article of what makes a good programmer. However, simply being a good programmer is not enough - that is, if we wish to progress in our careers at all. We need to think a bit more broadly.

      First, there's way too much focus on computer science and algorithms. You can be a good programmer just punching at the keyboard all and writing algorithms all day, but software development is far more than just programming in your cubicle. It's also about software engineering, requirements engineering, usability engineering etc etc. Many computer science and math snobs will tell you that software engineering and the newer disciplines are a joke, but like it or not the people who make the effort to look beyond traditional disciplines such as CS will be the winners in the future.

    • simeonvisser profile imageAUTHOR

      simeonvisser 

      7 years ago

      Thanks everyone, I see this discussion coming up in programming forums all the time so a hub about it seems useful.

      @C'est La Vie: Just let me know if you have any questions about it, I've been doing computer science for quite a while now...

    • C'est La Vie profile image

      C'est La Vie 

      7 years ago from Florida

      This hub was great! I was interested in becoming a computer programmer, but wanted to know more about it! Thank you, this hub proved very helpful!

    • itech profile image

      Krishna 

      7 years ago from Dausa, India

      Interesting Article...Liked the way you explained.

    • jannthomassen profile image

      jannthomassen 

      7 years ago from Norway

      A very powerful and informative hub; thanks for sharing

    • simeonvisser profile imageAUTHOR

      simeonvisser 

      7 years ago

      Thanks melbel :)

    • melbel profile image

      Melanie Palen 

      7 years ago from Midwest USA

      Great hub! Voted up! I will likely link to this hub when I'm writing my next CS related hub. Great work!

      :)

    working

    This website uses cookies

    As a user in the EEA, your approval is needed on a few things. To provide a better website experience, hubpages.com uses cookies (and other similar technologies) and may collect, process, and share personal data. Please choose which areas of our service you consent to our doing so.

    For more information on managing or withdrawing consents and how we handle data, visit our Privacy Policy at: https://hubpages.com/privacy-policy#gdpr

    Show Details
    Necessary
    HubPages Device IDThis is used to identify particular browsers or devices when the access the service, and is used for security reasons.
    LoginThis is necessary to sign in to the HubPages Service.
    Google RecaptchaThis is used to prevent bots and spam. (Privacy Policy)
    AkismetThis is used to detect comment spam. (Privacy Policy)
    HubPages Google AnalyticsThis is used to provide data on traffic to our website, all personally identifyable data is anonymized. (Privacy Policy)
    HubPages Traffic PixelThis is used to collect data on traffic to articles and other pages on our site. Unless you are signed in to a HubPages account, all personally identifiable information is anonymized.
    Amazon Web ServicesThis is a cloud services platform that we used to host our service. (Privacy Policy)
    CloudflareThis is a cloud CDN service that we use to efficiently deliver files required for our service to operate such as javascript, cascading style sheets, images, and videos. (Privacy Policy)
    Google Hosted LibrariesJavascript software libraries such as jQuery are loaded at endpoints on the googleapis.com or gstatic.com domains, for performance and efficiency reasons. (Privacy Policy)
    Features
    Google Custom SearchThis is feature allows you to search the site. (Privacy Policy)
    Google MapsSome articles have Google Maps embedded in them. (Privacy Policy)
    Google ChartsThis is used to display charts and graphs on articles and the author center. (Privacy Policy)
    Google AdSense Host APIThis service allows you to sign up for or associate a Google AdSense account with HubPages, so that you can earn money from ads on your articles. No data is shared unless you engage with this feature. (Privacy Policy)
    Google YouTubeSome articles have YouTube videos embedded in them. (Privacy Policy)
    VimeoSome articles have Vimeo videos embedded in them. (Privacy Policy)
    PaypalThis is used for a registered author who enrolls in the HubPages Earnings program and requests to be paid via PayPal. No data is shared with Paypal unless you engage with this feature. (Privacy Policy)
    Facebook LoginYou can use this to streamline signing up for, or signing in to your Hubpages account. No data is shared with Facebook unless you engage with this feature. (Privacy Policy)
    MavenThis supports the Maven widget and search functionality. (Privacy Policy)
    Marketing
    Google AdSenseThis is an ad network. (Privacy Policy)
    Google DoubleClickGoogle provides ad serving technology and runs an ad network. (Privacy Policy)
    Index ExchangeThis is an ad network. (Privacy Policy)
    SovrnThis is an ad network. (Privacy Policy)
    Facebook AdsThis is an ad network. (Privacy Policy)
    Amazon Unified Ad MarketplaceThis is an ad network. (Privacy Policy)
    AppNexusThis is an ad network. (Privacy Policy)
    OpenxThis is an ad network. (Privacy Policy)
    Rubicon ProjectThis is an ad network. (Privacy Policy)
    TripleLiftThis is an ad network. (Privacy Policy)
    Say MediaWe partner with Say Media to deliver ad campaigns on our sites. (Privacy Policy)
    Remarketing PixelsWe may use remarketing pixels from advertising networks such as Google AdWords, Bing Ads, and Facebook in order to advertise the HubPages Service to people that have visited our sites.
    Conversion Tracking PixelsWe may use conversion tracking pixels from advertising networks such as Google AdWords, Bing Ads, and Facebook in order to identify when an advertisement has successfully resulted in the desired action, such as signing up for the HubPages Service or publishing an article on the HubPages Service.
    Statistics
    Author Google AnalyticsThis is used to provide traffic data and reports to the authors of articles on the HubPages Service. (Privacy Policy)
    ComscoreComScore is a media measurement and analytics company providing marketing data and analytics to enterprises, media and advertising agencies, and publishers. Non-consent will result in ComScore only processing obfuscated personal data. (Privacy Policy)
    Amazon Tracking PixelSome articles display amazon products as part of the Amazon Affiliate program, this pixel provides traffic statistics for those products (Privacy Policy)