email mac

4 Factors Crucial for Choosing Your First Programming Language

In creating my plan to learn to code, I made the decision to learn Ruby. The first programming language is a very important decision and one that I didn’t take lightly. Below is the process I followed to make this decision.

First, a bit about web technologies (you can skip to the 4 factors if you’re familiar with web technologies click here). If you’re like me, someone without a technical background, you’ve been amazed by a first-hand experience with an amazing web application.

While that amazing web app is a cohesive product, it’s important to understand that there are several layers or tiers of functionality you’re experiencing simultaneously. Before you choose your area of study, consider how each of these areas apply to you.

Tiers of Web Functionality

  • Graphic Designer – This person creates the visual aesthetics of an app, including colors, logo, and layout. The graphic design determines the immediate impact felt by users and the mood conveyed by a site. Graphic design isn’t truly a web development tier, but I think it’s important to recognize because of its impact on users.
  • Web Designer – Using primarily HTML, CSS, and JavaScript, the web designer brings a web app to life and makes it interactive to the end user.
  • Web Applications Developer – This developer is concerned with the interaction between the client (web browser) and the application server.
  • Web Database Developer – In complement to applications developer, the web database developer ensures a smooth connection between the application server and the database.

Web Browser, App Server, and Database Diagram

Experts in each of these areas work collaboratively to execute a complete web application. In reality, most everyone learns skills across different tiers and it’s not practical to dedicate yourself to learning only one area in a vacuum separate of any others. But, you do need to select your primary area of expertise and that should the focus of your first programming language. This level of specificity will ensure you have a clear end goal and focus of study.

Once you’ve selected your tier of expertise, you need to select a specific language. Just like there are different spoken langues to express “Hello“, there are different tools and languages within your chosen area, each with pros and cons. I won’t start to name all the specific options, but instead show how you can evaluate these options and pick what programming language is right for you.

I selected the Web Applications Developer tier and then narrowed my language choices to python, PHP, and Ruby. Here is the process I used to evaluate different languages and decide where to start.

4 Factors for Learn to Code

#1 Executing a Prototype

You want to learn because you want to build something which serves a purpose. Your first development attempt will not bring you fame and fortune. But, you may build a prototype which either inspires someone else to work with you or to invest in your idea. How easily you can build this basic mode is a strong factor to consider.

Learning programming is a means to an end objective and getting outside support can expedite your process. Because Ruby has the Rails framework, I felt confident I’ll be able to get up a working prototype by the end of my 18 weeks.

#2 Learning Feedback

I’m part of the ADD generation. Our brains have been trained to expect immediate gratification. If you’re learning and there is large barrier to begin executing, it’s going to make the process more tedious. If you have the dedication, then more power to you. Be realistic about your expectations and commitment to your goal.

#3 Access to Mentorship

Don’t underestimate this factor. There are unlimited resources avaiable online and in books, but the talking with someone one-on-one is a huge help. Use meetup groups locally where you can meet web developers in your selected language. Developers were in you’re shoes once, and most are willing to help you. Even better, find mentor-specific opportunities to get involved with.

I was lucky to get connected with Tara Tiger Brown in Los Angeles and the Teach My Stuff program. Through this program, I’m working with Joe Goldberg, who’s Ruby expertise helped me plan my own learning program. We meet every two weeks and he’s available to answer questions when I need clarifying.

#4 Future Relevance

While not as important factor as the first three, it is still worth considering. Web development changes rapidly and you wouldn’t want to bank on what’s going to happen in the future. You should consider your future opportunities, both from a career standpoint and the type of projects you’ll be suited to work on.

For example, there are many people who have a passion for Latin and thus choose to learn what’s considered a “dead language”. But, your future opportunities if you learn a programming language that’s the equivalent of Latin will be diminished.

Conclusion

These are the factors which I considered when choosing Ruby. Do you agree or disagree with my reasoning? Are there factors that I didn’t include, which should be considered? Leave your thoughts and questions in the comments.

Update: Join the lobste.rs discussion here.

  • http://tarathetiger.com Tara Tiger Brown

    All great points. I think ‘liking’ the language is also important. But you’ll figure that out further along and when you can compare.

    • http://andrewkkirk.com/ Andrew K Kirk

      Any tips to know if you’ll ‘like’ a programming language before you start learning? Or is it all a matter of experience?

      Thanks @tarabrown:disqus !

      • http://blog.pkhamre.com/ Pål-Kristian Hamre

        I can only speak for myself about “liking” a programming language. I decided to start with Ruby about 1-2 years ago simply because the language (code I found on Github etc.) looked more beautiful to me than the alternatives (python, php, java).

        • http://andrewkkirk.com/ Andrew K Kirk

          @pkhamre:disqus – I’m assuming you have a previous experience programming in order to look at a new language and decide if you’ll “like” it or if it “looks beautiful”

          What about people picking up their very first language without previous experience. How do they make that judgement?

          • http://blog.pkhamre.com/ Pål-Kristian Hamre

            Yeah, I had experience with basic C on a hobby basis so I already knew some basic programming principles.

            About people picking their first language, I think the web design for the sites about the various languages can have impact. I don’t remember where, but I read a blog about more and more designers getting into specific programming languages enabling more visual goodness for libraries and code they engage in.

  • Roberto

    Great article. I was tempted to go down the Ruby path at first, but instead settled on Python.

    • http://andrewkkirk.com/ Andrew K Kirk

      @208f4d3fe8904a3a12eaebedd4a5114a:disqus ,

      How were you able to decide between Ruby and Python? What was the deciding factor(s)?

      • http://profiles.google.com/flebber.crue Sayth Renshaw

        I came to the same outcome, I actually tried a little Ruby and a little Python before deciding.

        Took into account several different factors:

        1. Library assets and their communities: Numpy, iPython, nice access to R.

        2. I wanted my applications to be data driven and feature numerical analysis. As well as the strong libraries their would be more non programming assistance available. So assistance from those well versed in maths and analysis who use python as a tool not as their primary focus.

        3. My ability to contribute to others – I felt that with linux especially I could commit and assist others committing code, learning to code while helping others, join communities and learn more as a whole. Example every linux distribution ships with python by default and most rely on python e.g Fedora installer is in Python, Ubuntu actively promotes PyQT for its app stores and ships a ready development environment.

        4. There isn’t too much difference in outcome between using Django vs Rails. If I know one I can always change and use the other later the learning will be beneficial either way.

        As stated at the start I tried both before deciding,just enough to get a taste. I liked both so in some way it didn’t help.

        I actually based my main decision on somewhat non language specific features such as resources, communities, contribution and a perception I could achieve better numerical analysis with python.

        PS I am aware of the new in development SciRuby team and their grant from matz to develop numerical libraries.

        • http://andrewkkirk.com/ Andrew K Kirk

          Trying each language isn’t a bad idea. Anyone serious about developing will pick up additional languages so it can’t hurt to be exposed to a few early one.