There's a lot of buzz lately about learning to program. Not only is there a shortage of people compared with the open and pending positions in software development, programming is also a career with one of the highest salaries and highest job satisfaction rates. No wonder so many people are looking to break into the industry!
But how, exactly, do you do that? "How can I learn to program?" is a common question. Although I don't have all the answers, hopefully this article will provide guidance to help you find the approach that best suits your needs and situation.
What's your learning style?
Before you start your learning process, consider not only your options, but also yourself. The ancient Greeks had a saying, γνῶθι σεαυτόν (gnothi seauton), meaning "know thyself". Undertaking a large learning program is difficult. Self awareness is necessary to make sure you are making the choices that will lead to the highest chance of success. Be honest with yourself when you answer the following questions:
- What is your preferred learning style? How do you learn best? Is it by reading? Hearing a lecture? Mostly hands-on experimentation? Choose the style that is most effective for you. Don't choose a style because it's popular or because someone else said it worked for them.
- What are your needs and requirements? Why are you looking into learning how to program? Is it because you wish to change jobs? If so, how quickly do you need to do that? Keep in mind, these are needs, not wants. You may want a new job next week, but need one within a year to help support your growing family. This sort of timing will matter when selecting a path.
- What are your available resources? Sure, going back to college and earning a computer science degree might be nice, but you must be realistic with yourself. Your life must accommodate your learning. Can you afford—both in time and money—to set aside several months to participate in a bootcamp? Do you even live in an area that provides learning opportunities, such as meetups or college courses? The resources available to you will have a large impact on how you proceed in your learning. Research these before diving in.
Picking a language
Test the waters
Unless you already have dabbled a bit and know for sure that programming is something you'd like to spend the rest of your life doing, I advise you to dip a toe into the waters before diving in headfirst. This work is not for everyone. Before going all-in on a learning program, take a little time to try out one of the smaller, cheaper options to get a sense of whether you'll enjoy the work enough to spend 40 hours a week doing it. If you don't enjoy this work, it's unlikely you'll even finish the program. If you do finish your learning program despite that, you may be miserable in your subsequent job. Life is too short to spend a third of it doing something you don't enjoy.
Thankfully, there is a lot more to software development than simply programming. It's incredibly helpful to be familiar with programming concepts and to understand how software comes together, but you don't need to be a programmer to get a well-paying job in software development. Additional vital roles in the process are technical writer, project manager, product manager, quality assurance, designer, user experience, ops/sysadmin, and data scientist, among others. Many different roles and people are required to launch software successfully. Don't feel that learning to program requires you to become a programmer. Explore your options and choose what's best for you.
What are your options for learning resources? As you've probably already discovered, those options are many and varied, although not all of them may be available in your area.
- Bootcamps: Bootcamps such as App Academy and Bloc have become popular in recent years. Often charging a fee of $10K USD or more, bootcamps advertise that they can train a student to become an employable programmer in a matter of weeks. Before enrolling in a coding bootcamp, research the program to make sure it delivers on its promises and is able to place its students in well-paying, long-term positions after graduation. The money is one cost, whereas the time is another—these typically are full-time programs that require the student to set aside any other obligations for several weeks in a row. These two costs often put bootcamps outside the budget of many prospective programmers.
- Community college/vocational training center: Community colleges often are overlooked by people investigating their options for learning to program, and that's a shame. The education you can receive at a community college or vocational training center can be as effective as other options, at a fraction of the cost.
- State/local training programs: Many regions recognize the economic benefits of boosting technology investments in their area and have developed training programs to create well-educated and -prepared workforces. Training program examples include Code Oregon and Minneapolis TechHire. Check to see whether your state, province, or municipality offers such a program.
- Online training: Many companies and organizations offer online technology training programs. Some, such as Linux Foundation, are dedicated to training people to be successful with open source technologies. Others, like O'Reilly Media, Lynda.com, and Coursera provide training in many aspects of software development. Codecademy provides an online introduction to programming concepts. The costs of each program will vary, but most of them will allow you to learn on your schedule.
- MOOCs: MOOCs—Massive Open Online Courses—have really picked up steam in the past few years. World-class universities, such as Harvard, Stanford, MIT, and others have been recording their courses and making them available online for free. The self-directed nature of the courses may not be a good fit for everyone, but the material available makes this a valuable learning option.
- Books: Many people love self-directed learning using books. It's quite economical and provides ready reference material after the initial learning phase. Although you can order and access books through online services like Safari and Amazon, don't forget to check your local public library as well.
Whichever learning resources you choose, the process will be more successful with a support network. Sharing your experiences and challenges with others can help keep you motivated, while providing a safe place to ask questions that you might not feel confident enough to ask elsewhere yet. Many towns have local user groups that gather to discuss and learn about software technologies. Often you can find these listed at Meetup.com. Special interest groups, such as Women Who Code and Code2040, frequently hold meetings and hackathons in most urban areas and are a great way to meet and build a support network while you're learning. Some software conferences host "hack days" where you can meet experienced software developers and get help with concepts on which you're stuck. For instance, every year PyCon features several days of the conference for people to gather and work together. Some projects, such as BeeWare, use these sprint days to assist new programmers to learn and contribute to the project.
Your support network doesn't have to come from a formal meetup. A small study group can be as effective at keeping you motivated to stay with your learning program and can be as easy to form as posting an invitation on your favorite social network. This is particularly useful if you live in an area that doesn't currently have a large community of software developers to support several meetups and user groups.
Steps for getting started
In summary, to give yourself the best chance of success should you decide to learn to program, follow these steps:
- Gather your list of requirements/needs and resources
- Research the options available to you in your area
- Discard the options that do not meet your requirements and resources
- Select the option(s) that best suit your requirements, resources, and learning style
- Find a support network
Remember, though: Your learning process will never be complete. The software industry moves quickly, with new technologies and advances popping up nearly every day. Once you learn to program, you must commit to spending time to learn about these new advances. You cannot rely on your job to provide you this training. Only you are responsible for your own career development, so if you wish to stay up-to-date and employable, you must stay abreast of the latest technologies in the industry.