You want to be a programmer?

Fun fact: this post has been stuck in drafting since 24 August, 2013!

I am not sure if there is an uptick in the number of people saying this or I am just around more people, but I have been hearing this 6 word phrase (and its variations) a lot more than I used to:

How do I become a programmer?

Before I begin, I must define what a programmer is. In my book, a programmer is one who writes and creates desktop, mobile, or web applications using any recognized programming language, such as Python, JavaScript, C#, C++, etc.

Becoming a programmer is not easy by any stretch of the imagination. It is commonly believed that learning a programming language is easy, that creating an application is both fun and simple, that coding is the best thing in the world. But truthfully, programming is not the easiest thing ever. Learning a programming language is not easy, writing an application is not simple or fun (that is, unless you enjoy programming as I do). It is hard work, and not everybody is able to live a life of code.

Additionally, not everyone has the ability to code. I have met many people in college who, for various, legitimate reasons, cannot program. They had tried but were unable to do so. That is OK, as we need people who excel in non-programming areas. If everybody were a programmer, who would be graphic artists (#programmerart does not count)? If everybody were an advertiser, who would be bookkeepers? Everybody cannot have the same skill set and occupation as everybody else. Everybody has their place, skills, and talents. All occupations are important, even if they are not always the most pleasant (garbage worker, anyone?). If it turns out that you are not cut out for a life of code, do not fret! There is something you are good at and it will be discovered in due time. It took me 18 years to discovered I was a programmer!

For this post, we are going to assume programming will be good for you and is what you should pursue as a career, or perhaps you are unsure programming is best for you and want to test the waters first. Either way, I hope I can help you decide what path you should take by detailing a plan of action that will either which confirm the programmer in you or release your inner linguist. πŸ˜›

Character Traits of a Programmer

The qualities of a programmer is a rather subjective matter, but here is a shortlist of character traits a programmer should try to posses. Do not worry if you do have all of these right now, you will build them up over time. πŸ˜‰

  • Needs to be an analytical, detailed thinker. You will need to think about every detail and consider every approach when writing a program to make it as user-friendly and efficiently written as possible.
  • Needs to be a problem solver. This goes right in hand with analysis. You will write incorrect, buggy, horrible, or failed code, and you need to be able to debug that code and get it working the way you want or replace it with a completely different method.
  • Needs to like and/or do well in mathematics. “Math is the language of computers.” Different occupations will require different levels and understanding of mathematics, so plan accordingly. You may not use it too often, but the general concepts from it will help. I would suggest taking at least Algebra 1 or equivalent.
  • Needs to know how to use a computer and understand very technical terms and phrases. If you open Internet Explorer 7, sign into your fully public Facebook account without HTTPS encryption and post messages like such to you wall:

    I JUST WENT TO A PARTY AT THE HOME DEPOT AND IT WAS LIKE SO BORING AND I WAS LIKE WHEN WILL THIS THING END IT MUST BE LIKE NEVER

    …You have a very long road ahead of you. πŸ˜›

  • Needs to be able to step away at times. Take it from me: after a long programming session, you will be confused and barely (if at all) understand what is happening in your code, why it is not working, and why you cannot fix it. Taking a break will clear your mind and help you solve the issue at hand. Having an outlet also works well. Personally, I enjoy playing racing video games and blogging, so that helps me get my mind off some code. Talking to people online or IRL help too. Finally, sometimes you just have to go take a walk outside or a few days break from anything code related.
  • Needs to be able to work on a deadline. In professional programming you will work on deadlines, sometimes very strict ones. You will need to be able to finish your work by a certain time and date. Even in casual, non-job-related programming, you need (or should) try to work against deadlines. Do not set a date for every single thing you do as that would be foolish, but make it more like

    I will have this major milestone (name the item) completed by (name the date).

    I did that back in 2013 with the first stable release of PatchIt!, completing it in less than a month. I did this more recently with my final project in PHP class, completing it nearly two weeks before it was due. Obviously, do set your goals and deadlines realistically. Setting an unfeasible milestone will only make things worse.

The Road to Programming

Next, I am going to lay out a plan of action you can follow that will uncover your programmer qualities. I can say with surety it works because this is what I did late 2012, and it is what helped me discover the programmer in me.

I do think any programmer these days should have at least basic knowledge of website design due to the Web’s rapid influence on absolutely everything. This just so happens to be the way I recommend people get into programming. The basic elements of web design, what I like to call the Web Fundamentals, give a taste of what actual programming is like. I do not expect you to go deep into web design and development (I have done that for 2 years in college), only gain basic knowledge of Web Fundamentals and taste the career of a programmer.

My definition of Web Fundamentals is very simple: HyperText Markup Language (HTML) and Cascading Style Sheet (CSS). Together, they make websites either “look pretty” or downright horrendous. Because they are markup and styling languages and not true programming languages, you technically will not be programming, but it will be close enough for the time being. πŸ˜‰

To begin learning the Web Fundamentals, head on over to Codecademy. Easily a great place to learn how to code, they have some awesome HTML and CSS courses, in addition to JavaScript, jQuery, Ruby, even Python! Their interactive code box allows you to type your code and immediately run it, not to mention error checking and syntax highlighting for easier development.

Terminology Tip

The syntax of a language is how code is written, defining if it is valid or not. It could be likened to the many rules of the English language, including punctuation, grammar, and verb tenses. Syntax highlighting turns certain words or symbols in your code different colors. This helps differentiate the various parts in your code and draws attention to any errors.

Your job now is to go to Codecademy, create an account, and complete the entire Web Fundamentals track (yes, I got that name from Codecademy πŸ˜› ) in addition to all the HTML and CSS activities at the end of each course. Be sure to read all the hints, even if you do not need them, and repeat some lessons if you still have problems comprehending it upon completing that section.

At the same time, you are going to practice a life trait that will come into play no matter what career path you follow: routine. The best way to learn is to do it in an established routine schedule. Just as you may be at middle or high school from 7 AM to 3 PM every weekday, so you need to develop a schedule for doing your Codecademy lessons. The schedule should state the days and time of day you will study, preferably when you do your best work. If you are best in the morning, schedule it then. If you work best in the evening, schedule it after dinner. The schedule does not have to be complicated; a simple sentence will suffice:

I am going to complete my Codecademy lessons from 10:30-11:00 AM Monday through Friday.

The other part of routine is not beating yourself up (metaphorically speaking, of course) if you miss a coding “class” or start late. Fretting over it will not make things better, neither will rushing through it in an attempt to meet your milestone (you will not learn any of the content that way). If you start late, work at your normal pace until your end time, then finish it later that day or they next day (consider it “homework”). If you miss a few days, just pick up where you left off, do not try to catch up. You also will never learn the material cramming three days of coding into 30 minutes.

Codecademy Tip!

Have multiple web browsers ready while following the CSS course. While most of the code is cross-browser, there are often bugs that cause it to run only in Mozilla Firefox or Google Chrome, or require workarounds. Sometimes incorrect code is marked as correct and correct code declared incorrect! If you experience any of these issues, first save your work then open that lesson in a different browser and try it there. If for some reason the CSS still does not pass, check that particular lesson’s FAQ. Odds are multiple people have posted a fix and confirmed what browser it works in.

The Choice

You now have a choice to make. You have completed the Web Fundamentals on Codecademy and been exposed to the programming way. Do you continue on with coding or skip town? This short checklist may help you decide.

  • Did you easily understand the syntax, terminology, and the definitions?
  • Were you not easily frustrated while trying to write the code?
  • Did you enjoy coding?
  • Could you see yourself working with much more complicated stuff and doing it well?

If you answered yes to the majority of these questions, congratulations! You are likely a programmer! πŸ˜€ If you did not, still congratulations! You discovered you are probably not a programmer and have another talent just waiting to be discovered! πŸ˜€

So, where do you go from here? That is up to you! It is not like I am trying to skimp out on a proper ending for this post, but it really is up to you. I cannot tell you what to do and how to go on with your life. This post has been nothing more than an aptitude test. πŸ˜› I might be able to offer extremely limited advice on where you to go next, but it is up to you, no matter if you are a programmer or not. Your future lies ahead of you, no matter how old you are, and it is up to you to grab hold of it. One piece of advice I can give: pick something you enjoy doing and do that. As Confucius said:

Choose a job you love, and you will never have to work a day in your life.

I enjoy programming. That is why I do it. There is something you enjoy doing, and if that thing can be a career, perhaps you should look into that. Somewhere over the rainbow lies your future. Make the most of it. πŸ™‚

-le717

Advertisements

2 thoughts on “You want to be a programmer?

  1. I personally work as a Network Engineer and program (mostly in python) on the side. I have always wondered how does one make of programming a job, in particular when it comes to deadlines. When I write my programs it’s mostly to automate boring and repetitive tasks. I don’t think I would succeed if somebody told me that I had to deliver something “by next week”. I realized that it requires me quite a lot of thinking and planning before I even begin writing something up, as I would end up with spaghetti code if I did. I consider programming more like an art and you cannot just “force” the painting to come up.

    What’s your mental process when you need to deliver something by a date? What do you do first/second/third and when do you decide that the job is “finished” ?

    1. This post was largely a compilation of various encounters, realizations, lessons, and advice I have given and/or received in the past 2.5 years. It is kinda my personal idea on how one can start on the path and art of programming. It is by no means fully accurate or works for everyone.

      I’ll use my recent Hangman in PHP class assignment to explain this. I started by defining some objectives that, when met, meant I had finished. I ended up with three broad objectives: word list + random selection, game logic/scoring, and visuals/user input. I then assigned each one a priority. Logic was the highest, followed by the word list, then visual/input. I assigned it this way because the project objective was to produce a working Hangman game. The word list was needed to even begin, but I could use a smaller, temporary list and expand it as I went along. Visual/input was important but did not make up too much of the grading scale, the logic did. It was important that I had a fully working game to turn in instead of a pretty but incomplete one.

      Though I divided it up this way, I jumped between all three (then two once the list was complete) in order to give myself a short break when I accomplished something major (like checking/reacting to the user’s guess, which I wrote twice). I considered the game done when all the logic was in place and bug free, there were no nasty cross-platform issues, I had a decent word list, and it visually looked OK. I could have done better on my design considering I finished two weeks before due date, but other classes had greater priority over CSS.

Triangular Reactions

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s