Since founding The Software Guild in 2013, coding has remained a hot topic. There is a lot of demand, career prospects are good, and there has been plenty of media attention around the topic. The upshot of this is that people who are looking for coding resources to get started on their journey do not have to look very far. The downside of this is that there are almost too many programming resources these days, which can lead to people being confused about where to start; what languages, stacks or frameworks are worth learning; and how to effectively spend their time.

What Programming Language Should I Learn?

This is a common first question from beginners, but I believe it is the wrong question. People in the industry know that there is not a “best” language to learn. Each language and its associated frameworks have strengths and weaknesses across many domains. For example, if your passion is making mobile phone applications, you may be best served by Java or Swift. If you want to make games, you may choose C#, JavaScript or C++. On the other hand, if you want to make web applications, you can choose Ruby, C#, Java, Python, JavaScript or just about any language, since they all tend to have web frameworks.

The huge mistake a lot of beginners make is not committing to a language. Instead, they explore a language a bit until they come across something new and shiny — and then they flit about. This actually prevents them from mastering the foundations of programming patterns that comes from more extended and deeper practice in a single language. This is a big reason why The Software Guild goes deep on Java and C# instead of trying to teach a bunch of different languages right away like some other programs.

At the end of the day, mastery of programming concepts matters most, and that’s learned through focused practice. Without practicing lots of problems and finding those patterns to leverage in additional problems, you will quickly find yourself only able to code what you’ve seen and not able to creatively apply those concepts to new problems.

Where Can I Get Started With Coding Resources?

To get started, find one of the many beginner tutorials out there, preferably ones that take you through a lengthy journey. The Software Guild has an Introduction to Web Development course, but you can also try Java for Complete Beginners or Microsoft’s Getting Started with C#. The Guild’s course includes a Slack community for asking questions in real time, unlike a lot of other free coding resources. Most of these beginner programming resources will take you through the basics of getting set up and doing some beginner-level tasks.

After the Basics, What Next?

Once you have your tools installed and can do some very basic Hello World-type problems, the goal is to start practicing and expose yourself to as many programming problems and patterns as you can over time. Some great resources for getting started with these are the following:

  • Project Euler: Math-related problems assigned by difficulty level. They will help you brush up on your math skills if needed and really start thinking systemically.
  • CodingBat: Java and Python exercises and practice problems.

Note that you can do the CodingBat problems in any language. It just won’t automatically grade them.

What Else Do I Need to Know?

Making the jump from tutorials and beginner coding resources to more complex and interesting problems is the hardest leap for every programmer. I’m going to emphasize this: EVERY PROGRAMMER struggles to make the jump from beginner tutorials to complex programs. This is because it requires a lot of practice to develop the following necessary skills.

  • Problem Decomposition: When trying to tackle a large project or problem, it is very easy for beginners to become overwhelmed and intimidated by how big a task seems. Instead of having this reaction, you need to get to work on breaking the problem down to smaller pieces. Computers only do single instructions, and all problems any programs solve need to be broken down into smaller and smaller subproblems until each individual subproblem is doable. Then you string them all together into a working program. For example, if you were coding the guessing game, one of the subproblems would be getting a random number to guess. Once you’ve identified this, it is relatively easy to Google “C# get random number” to find programming resources to help you figure out how to do that.
  • Systematic Thinking: Oftentimes, my instructors and I will joke about the “copy-paste-flail” technique that some beginners bring to our courses. When learning to code and debug, you really need to avoid getting into the habit of just “trying” things and hoping they work. To be a successful developer, you need to be more like a scientist when working on your code. First, you decide what you want to do — your experiment definition. Then you create a hypothesis by writing some code you think will do the job. Then you observe what the code did versus what you thought would happen. If it matches, great — you are finished. If it doesn’t, then you need to figure out why it is different, walk through your code line by line until you pin down where things got off the rails and figure out why it happened and what you should do differently. Don’t be discouraged by this process. Most professional developers spend more time debugging and researching than they do writing code. In fact, if you hate debugging and researching problems and want things to “just work,” then programming is probably not a good career choice for you.

The Time to Start Is Now

With so many free coding resources, the only thing stopping you from starting your programming journey is you. It’s worth taking a shot and finding out. Try our free online Introduction to Web Development course today. If you do well and think that programming is right for you, you’ll be ready to apply to our coding bootcamp.

Interested in learning the in-demand skills required to become a developer? The Software Guild’s coding bootcamps help apprentices like you gain experience building full-stack applications from start to finish using .NET/C# or Java. With locations in AkronMinneapolis and Louisville, we provide an intensive learning environment to teach you the hands-on skills required to begin a successful development career.

If you are ready to learn more, check out our guide to The Software Guild for an in-depth look at the curriculum, format, application process and everything else you need to know.