How to Code.001

As a Software Platform Engineer, I am often asked: “What does it take to learn how to code? How did you get started? Is it too late for me to learn?”

All of these questions reflect a common theme—a lack of knowledge as to what coding is and what you can do with it. Coding is a learned skill that I believe anyone can acquire. Below I have complied a few resources and tips to help you get started.

Start by Answering a Few Questions

Before getting started, try answering the following questions:

  • What interests you?
  • What do you want to do with code?
  • What is your end goal?

It is always important to enjoy what you are doing, especially if you are dedicating a large chunk of time to it. Start by making a list of personal and professional interests. Keep your list broad, and do not overthink it. This is meant to be a jumping-off point that will help you decide what area of coding you want to explore. After you have made your list, take a step back. Evaluate your interests, and narrow it down to three or four topics you are most passionate about. Your topics will influence where you should begin.

Based on your interests, do some research, and really start to consider what you want to do with code. If I had to make an analogy, I would say that code is to a program (e.g., web application) as directions are to a recipe. You will want to learn different skills, depending on what you want to cook. The same is true for when you want to learn how to code. There is a wide range of things you can do with coding: You can create games or web applications, or you can compile data for scientific research. The possibilities are endless. Having an idea as to where you want to start exploring will keep things focused and manageable.

Here are some resources that can help you decide what you might want to do with code:

It is important to try to answer as many of these questions as possible. Even if you are unsure of what you want to do with coding, it is a good idea to start with some parameters. End goals can be as specific as wanting to learn how to build a basic website to promote your band or as broad as wanting to learn how to pull data from the web. Having a clear and tangible end goal right off the bat is not essential, but it is something that you should keep in mind as you begin learning.

Choose a Scripting Language to Build From

As you start to dive in, coding can be a little overwhelming. You will see common scripting languages, such as Ruby, Python and JavaScript, mentioned a lot. When choosing a scripting language to initially learn, revert back to the question “What do I want to do?” This answer should be your guiding light.

To help you navigate, I have listed a very simplified overview of what each language is most commonly used for:

  • Python has a heavy hand in data work.
  • Ruby is common in web development.
  • JavaScript is the language of the browser.

Each scripting language is like a human language. The differences between them are syntax. For example, notice that the Python method to add_two(num) requires a semicolon after registering the method name followed by a tabbed set of instructions. With Ruby, whitespace does not matter, and you can make use of an implicit return.

Screen Shot 2016-02-04 at 11.38.12 AM

It is important to note that scripting languages do the same thing. You can code games in Python with PyGame, and you can also code games in JavaScript. Do not obsess over what each language does. Focus on what you ultimately want to do, and get started. As you learn to code, you can build upon whichever language you start with and apply those learnings across scripting languages.

I am a huge Pythonista, so all of the materials and resources I recommend are taught in Python. I prefer Python because it is one of the most popular introductory languages taught in US universities. I also think it is easier to pick up because of how readable its syntax is.

Pick a Learning Style That Works for You

Once your interests and end goals are outlined and you have decided on a scripting language, it is time to determine which learning format works best for your schedule and lifestyle. Here are some options to consider.

Online Learning

Massive open online courses (MOOCs) are a great option for working professionals with a set schedule. Courses require a consistent time commitment over a designated number of weeks. While there are a lot of options out there, I highly recommend starting with Intro to Comp Sci and Programming Using Python. Taught over the course of nine weeks, this free course is the first of a two-course sequence conducted in partnership with edX and MIT.

The course provides a breadth of information on Python, simple algorithms, testing and debugging and other introductory techniques. Class formats vary and include lecture videos, programing assignments, exams and quizzes.

If you have an irregular schedule or are crunched for time, I would recommend buying the ebook, “Learning Python the Hard Way.” It is only $29.95 and comes with a beginner programming course, video tutorials and PDFs. One of the best parts about this learning option? The author Zed Shaw, a software developer, is available to help answer any questions you have via email and offers a money-back guarantee.

A simple Google search will prove that there are a variety of other remote learning resources out there. I recommend these two options because they are involved, provide you with guided learning that is not too superficial and leave you with a decent feel of coding.

On-Site Learning

Obviously, you can pursue a certificate program or enroll in a university program that teaches coding. There are an abundance of immersion programs, such as Dev Bootcamp and Ada Developers Academy. Certified and immersion programs vary in fiscal cost, time commitment and topics, and honestly, you can learn just as much with other resources.

That is why I would defer any on-site learning options until you have decided 150% that you want to learn how to code. Before committing to an on-site learning option, refer to your end goals. If you are not planning to make code a core component of your day-to-day professional responsibilities, opt for online learning.

Find a Mentor

When you are just getting started, finding a mentor can seem impossible. It does not have to be. The trick to finding a mentor is knowing where to look and understanding the different types of mentorships available.

The type of mentorship you land—whether it is formal, informal, in-person, remote or project based—should be determined by what you want to do with code. Learn the basics of code, decide on a mentorship structure that works for you, and then take the initiative to connect.

If you are based in Chicago the Chicago Python User Group (ChiPy) is the de facto user group for Python in Chicago. The organization has a biannual mentorship and offers formal mentorships in:

  • Python 101
  • Web development
  • Data science

The mentorship program at ChiPy is a one-on-one, mentor-protege relationship that focuses on a single project and lasts about three months. The program culminates in an optional presentation of the project you and your mentor tackled.

Having a structured mentorship is ideal, but it is not the only way to find a mentor. Use Meetup to find a group that matches your interest (e.g., a women-in-tech group or a game-development group). Look for a project night where others will be working. Start to regularly attend these events, and strike up a relationship with someone from whom you want to learn.

Working with a group on a specific project is another way to meet people with your interests and potentially find a mentor. The Apache Local Mentor Program aims to connect developers with projects that match their skill sets.

Do not have any groups in your area that fit the mold? Try IRC (Internet Rely Chat), a chat client that connects users to communities where knowledgable coders vet your questions.

Now What?

Go out there, and try it out. Let me know how it goes! Tweet me @loooorenanicole, and let’s get the code flowing.

*A version of this post was originally published on