Learn to Code
Coding is not just math -- its art and organization.
There is a lot of interest in learning to code. It is one of the single most in demand skills in the world, and as a result, there are many high paying jobs available. Whether you are someone looking for a career change, a student considering a major, or someone just interested in a new hobby you are probably wondering what software development is like, would you like it or be good at it, and how do you go about learning to code. In this article, I will try to answer some of those questions.
I think too often people think software development is very complex, and requires a good command of high level math. Software development is not rocket science, and while being good at math can be a good indicator of success, software development really is not just math. In fact, software development is a creative endeavor that is as much art as it is science. In my view, software development is about logically breaking down a problem into its smaller components that can be reused and connected together. Sure, there are some very complex computer science problems and applications and systems. Many however are not as complicated as most people think. Many of the business applications today are pretty straight forward - they are about taking in data, storing it in a database, and moving it out of one system and into another.
What makes a good software developer
Some of the key attributes that I think make up a successful software developer include:
The ability to:
- break down problems into discrete components
- think logically
- think creatively
- think in abstractions
- be detail-oriented
The tools and technologies around software development are contently evolving, so it also helps to have a curiosity and desire to continuously learn.
By the way “learning to code” and being an effective software engineer are often considered two different things. For the purposes of this article, I will use several of these terms interchangeably. When I say ‘learning to code’, I am not just talking about learning the basics of a particular computer language syntax. I am talking about getting the necessary skill set to be an effective entry-level software developer, including basic computer science theory and fundamentals.
Learning to Code Today
Thanks to the Internet, YouTube, online training platforms, and coding boot camps, there are a variety of ways to learn skills such as software development easily and cost effectively. Students can learn on online platforms such as Udemy, Coursera, and Udacity that offer excellent courses in everything from web development to advanced data science and machine learning. In addition, major universities such as MIT and Stanford have put many of their courses online for free. There are other free learning platforms such as Code Academy and Khan Academy. YouTube also has excellent content and much of it is free. In fact, many of the these courses are either free or offered at a nominal cost when compared to traditional college credit courses. For example, a while back I took a 13-hour course on NodeJS from Udemy that cost me $28 dollars — this same course would have cost hundreds of dollars at a university. Over the past few years, there has been an explosion in coding bootcamps. These bootcamps such as Flat Iron School, General Assembly, Thinkful and many others offer a mix of typically three-month, immersive courses in learning to code. There are so many ways to learn software development skills today that the biggest challenge may be choosing the right venue to do so.
If someone wants to learn how to code, I suggest that they first find out if they really have a true interest and aptitude for software development. Start with a free online-only course such as those available on Code Academy or Khan Academy. Here is a good starting point from Kahn Academy. These online courses are free, and you can do them on your own time. MIT OpenCourseWare has some free classes as well. Although it maybe not be the place for beginners, it is a good place to take some classes on computer science theories such as algorithms and data structures — something that is often lacking in other venues.
I suggest those interested in learning software development talk to someone who is in the industry for guidance and mentoring. If after talking to someone and doing those basic online courses, you are still interested, then consider taking a paid course from Udemy, Coursera, Udacity, or one of the similar platforms. You can supplement your learning with YouTube videos, and by reading various software development blogs as well. This link provides an excellent overview of many of the options available:
As I mentioned, I’ve personally taken some Udemy courses. They are excellent and are a great value at around $20-$30 for about 10-15 hours of lessons. Thinkful is another great option. It’s a hybrid between an online course and a full immersion bootcamp. Thinkful assigns each student a mentor to work with each week which is a big plus. If you get through a course or two, you will be in a great position to know if you like the work and have an aptitude for it. If you want to continuing learning software development, you have a few more options like taking additional online courses to expand your skills and practice, or you can consider investing in a three-month-or-longer bootcamp.
Students can also look to join coding ‘meet-ups’ or find similar students they can work and learn with as a team. While you are learning, I suggest you find a core project that you are passionate about and build it as you learn. For example, you can build a website or an app that interests you and continue to expand it as you develop new skills. Having a project that you are passionate about will keep you working toward a goal, and will help keep you motivated and engaged to continue to expand your skills.
There is no excuse
Lets stop and think about this for a second here. With all the talk from politicians about how college should be free, you have FREE courses from some of the most renowned universities in the world (MIT, Standford, etc). Not to mention all the other free or low cost websites and services listed above. You can learn one of the most, if not the most valuable, most in demand, highest paying skill in the world. All for free. If someone wants to learn to code, there is NO excuse for not being able to do so.
Which language should I learn
There are many different coding languages, each with its one syntax, history and purpose. You can get a sense of many of the top programming languages in this article. This website ranks the most popular coding languages based on various criteria such as the number of trained engineers. This one also ranks language popularity but its just based on Google searches.
In my view beginners should consider two languages when learning to code: Javascript and Python.
Javascript - This is the language of the Web. Every web browser can run it, and just about every website has Javascript running in it. It is a very diverse and powerful language. If you like to build things that you can see, such as websites this is a good choice. Over the past 5-10 years or so, thanks to the creation of NodeJS, Javascript has also become a language for back end or server side development. Javascript is a great choice if you want to start learning by building websites, and then have the option to also build full systems including server side code.
Python - Python is considered one of the easiest languages to learn because it is most similar to the English language. It has also become the defacto introductory language of many Universities. Python is also becoming one of the standard languages of machine learning and data science.
If you think you want to focus more on front end and visual code such as website, I would start with Javascript. If you are attracted to data science and/or think machine learning might be your jam, consider starting with Python.
What age should children learn to code
I often get asked "what age is best to get children interested in coding?" I do not think it’s important to get children directly involved in coding at a young age. I would say about 11 years old and beyond is a good time to start getting exposed. As I have stated, it only takes a couple of years to build proficiency so getting them started in their teens is plenty of time. In addition, children today have much more familiarity and affinity for computers and tech since they have grown up with it. There are some games such as Minecraft that teach children some of the concepts of coding. I think taking a softer approach like that can be better for a start for younger students.
Self-discipline matters; Plan to invest at least one year of your time
No matter which path you choose to train yourself in coding or software development, you will need self-discipline. You likely will not have the peer support that you have at a traditional college, where you mingle with other students each day. You won’t have fellow students or instructors telling you when you need to be in class or when an assignment is due. Procrastination is an easy trap when you’re studying on your own.
To stay on track, work on a project you feel passionate about. Find a mentor to help you when you are stuck. Join a meetup or work with someone else as a team so there is someone else to hold you accountable. You can join coding meet-ups to connect with similar students, sharing practical tips and motivating each other to stick with it. Self-discipline and persistence will help you succeed. Put in the effort, and don’t give up! The rewards of a high-paying and gratifying career are absolutely worth it.
While I do not think you need four years of college to learn the skills necessary to become a successful software engineer, you wont learn the skills you need to be a professional in just a few months either. Plan to dedicate yourself for a full year to a year and a half.
Photo by Steve Johnson on Unsplash