As a Computer Science graduate, I have experienced first-hand the importance of learning the fundamentals of the field. Now, as a professional, I have seen the value that these fundamental concepts add to the workplace. For instance, concepts like variables, loops, if-else statements, time complexity, object-oriented design, among other ideas. So, today I will share some of the reasons why I think learning and mastering the fundamentals of Computer Science and programming will help you succeed in your career as a software developer. Moreover, I will share with you the return on investment (ROI) on these concepts I have received throughout my career. Now, Let's get started.

They are transferable

As the years gone by, I have learned that some of the concepts I learned in college are transferable between a multitude of programming languages. Sure, the syntax is a little bit different, but the underlying idea is still the same. For example, when I started my computer programming journey, I started programming in C++. Shortly after, I started learning Java. At first, I got a little overwhelmed by the difference in syntax and the difference in length of certain instructions. Such as cout (C++) and System.out.println(); (Java).

But, I kept practicing writing code in Java and that feeling of being overwhelmed went away. Because the theory was the same. That is, I could use loops, functions (called methods in Java) if-statements, data structures and object-oriented programming ideas such as polymorphism and inheritance. Which in my opinion, is the most important thing to take into account when choosing a programming language. So, my advice to all upcoming software developers, programmers, is to focus on understanding the concept first, then worry about how you can implement it.

A simple example I always like to use is the concept of if statements. First, focus on understanding how if statements work and why they are important in the code you write. Moreover, focus on learning and appreciating how they can enhance the flow of the evaluation of cases that may occur when someone uses your app. Then, start implementing them in your code. This goes with all the fundamentals of programming. If you understand them first, it will be easier to apply them in a variety of projects and fields.

They can make your code more efficient

This is where that algorithms class you took in college may come in handy. Learning why time complexity matters, why you should use one loop instead of two in certain cases (among other reasons), will make a great difference in the code you design. If you master the art of understanding time complexity and applying them to the programs you write, the software you write will run much faster and waste less computing resources.

Which is excellent when building large-scale applications that thousands, even millions of people use, that importance of the speed is vital. If your application runs faster, the users of your app will notice and thank you for it. Not only your users will appreciate it, but your clients as well. Because if users are happy with the product, revenue will increase, consequently, your client will be satisfied as well. Everybody wins. Doesn't get better than that? Right?

They can help you make better decisions

This is a big one. As I have worked on different projects, I have learned that understanding the fundamentals of programming languages and styles helps when deciding on what technology to use for a certain application. Understanding how different programming languages execute on your machine (e.g., compiled, transpiled and interpreted languages), can help you decide on which programming language to write your codebase. In my case, these concepts have helped me choose when to write a native mobile application or go with something cross-platform, like Ionic and PhoneGap.

By understanding how these platforms perform at run-time, I have been successful at weighing the pros and cons of using them for individual projects. Which is great, because these decisions can impact positively the client I am working with by recommending a technology that satisfies their needs to the fullest. So, I suggest you do the same. By doing this, you will have more options to choose from, make better decisions when working on projects and add value to any company or organization. More on the importance of being an adaptive software developer here.

In summary, mastering the fundamentals of computer programming can help you advance your career as a software developer. By mastering them, you can make better decisions, write high-performing, faster applications and add value to any company or organization. Thus, the return on investment on the time spent learning them will be great.

Photo by Kevin Ku from Pexels

Originally published at yadielcabrera.com on June 17, 2018.