When Liam Harwood, a Software Engineer at HubSpot, was in elementary school, he loved playing video games. But unlike most kids his age, he also created them. As a 10 year-old, Liam would spend hours hunkered over an old computer in his basement, coding simple games in QBASIC or Quick Beginner's All Purpose Symbolic Instruction Code.
Today, Liam is a software engineer on HubSpot’s Design Platform team, where he works on the backend of our Design Tools, Template Marketplace, and other design-related services.
Now -- who says video games just rot your brain?
If you aspire to become a successful software engineer like Liam, but you haven’t learned any programming languages yet, don’t feel pressured to follow his exact path and learn every language under the sun. In fact, if you’re a beginner, Liam recommends only learning three.
“For anyone who wants to dive head first into the technical side of things and really understand how their programs work, I would start with C. It keeps things simple and straightforward, and is the closest a beginner would want to get to writing pure machine code. It also forms the basis for most modern programming language syntax, giving you the skills that can easily be applied to other languages,” he says. “On the other hand, Python may be a good choice for beginners because it has a very simple and digestible syntax, as well as extensive libraries that can help simplify complicated computations. Lastly, Java is another good choice because it’s one of the most widely used languages -- I use it here at HubSpot -- and similar to C, it teaches you fundamental skills that can be applied to other languages.”
Like Liam, a lot of software engineers agree that C, Python, and Java are the best languages to learn as a beginner -- they can help you grasp the fundamental coding skills needed to pick up other, more robust languages.
But some software engineers argue that honing your programing skills requires an even more foundational understanding of computer science. According to Josie Barth, a Software Engineer on HubSpot’s Big Data Infrastructure team, learning the principles of computer science -- not specific languages -- is what will sharpen your programing skills the most.
“While it’s common to get started learning on an object oriented language, like C++ or Java, I think it’s less about learning a specific programming language and more about learning the foundations of computer science, like data structures, algorithms, discrete math, operating systems, computation theory, and more,” she says. “I also wouldn’t necessarily bucket programming languages as beginner, intermediate, or advanced. You choose programming languages based on the kind of tasks you want to do. But there are definitely easier languages to get started on. For example, Java might be easier to get started on than C++ because Java abstracts certain concepts away, but if you needed to program within finer control of the machinery in mind, you’d likely use C++ over Java.”
So while learning specific languages will help refine your programming skills, mastering the fundamentals of computer science will help you reach your potential more than anything else. Because before Liam Hardwood was coding the backend of HubSpot’s Design Platform, he was programming simple video games on a dusty computer in his basement, building his foundational skills with an old language that was considered outdated, even back then.
However, this still begs the question …
Which programming language should you learn first?
If you’re a beginner, most software engineers recommend learning C, Python, or Java first. Below, we’ll give you a rundown of each of these programming languages, describing what they’re used for and how much demand they have in the software engineering labor market.
Python has a very simple and digestible syntax, as well as extensive libraries that can help simplify complicated computations, allowing you to hit the ground running when you want to learn other languages.
As a general programming language, Python is mostly used for web development and support for software engineers, but it’s also used a lot in machine learning, which helped it become the second most sought after programming language on Indeed.com, with 46,000 jobs advertised on the online job board.
C is the most simple and straightforward programming language around, and it also forms the foundation for most modern programming language syntax, giving you fundamental skills that can easily be applied to other languages.
A successor of C, C++ is an object oriented language, which aims to represent real-life objects as code and is more equipped for developing sophisticated applications, like system or application software, video games, drivers, client-server applications, and embedded firmware. Last year, over 31,000 C++ programming jobs were posted on Indeed.com.