10

Why Every Developer Should Learn Computer Science Theories First

 3 years ago
source link: https://betterprogramming.pub/why-every-developer-should-learn-computer-science-theories-first-bb49781a3432
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Why Every Developer Should Learn Computer Science Theories First

Everyone can learn how to code. Computer science theories will teach you how to program

Students listening as teacher lectures
Photo by NeONBRAND on Unsplash

Developers usually start learning programming at their college, university, or first internship program. Meanwhile, some developers learn programming by experimenting with technologies and watching internet tutorials, known as self-taught programmers. A few passionate developers learn programming in all of the above stages. They start programming before college teaches programming. After that, they improve their programming skills at their college, university, and first internship program.

Developers usually study computer science theories at their universities. Some developers study these concepts in their internship programs. Computer science fundamentals consist of topics such as data structures, algorithms, networking principles, discrete mathematics, artificial intelligence, computer graphics, design patterns, and human-computer interaction. As mentioned, every developer will not come through a university, and they will jump straight to programming without touching computer science fundamentals. Sometimes, those kinds of developers learn computer science fundamentals during their first job.

I started programming with Visual Basic 6.0 when I was 13 years old. My college started teaching me programming when I was 15 years old. I built hundreds of free software when I was studying at college before university. At that time, I hadn’t mastered computer science theories — I just knew how to code. My university taught me computer science theories. Those theories helped me a lot in my software engineering career and open source contributions. According to my experience, you will get the following benefits if you learn computer science fundamentals before programming.

Theories motivate you to write highly optimized code.

Performance is still a crucial factor in software development regardless of modern hardware. In the past, almost all developers had to write super-optimized code because the computer hardware was limited. Remember, people in the past went to the moon with a computer with just 4 kilobytes of physical memory. Now the situation is surprisingly different. Nowadays, we need 16 gigabytes of physical memory just to run a modern code editor.

However, if we are working close to the hardware or our product is being used by millions of end-users — we still need to write highly optimized code for modern computers. If we need to write optimized code, we need to use the right data structures, fast algorithms, and optimized memory models. This knowledge comes from computer science theories such as data structures, asymptotic analysis of algorithms, and CPU architecture.

Theories explain the coder vs. programmer role.

According to the majority’s opinion, the meaning of the word coding literally gives the same meaning as the word programming. Let me explain a hidden fact. Coding is not programming — coders and programmers don’t do the same thing. A coder can write codes in a high-level programming language for a compiler or an interpreter. You don’t need to understand how a computer works or any of its internals to write code. On the other hand, a programmer also writes code but understands the internals. A programmer can build fully functional software products by minimizing errors. In other words, coding is a subset of the programming field.

Anyone can become a coder — they only need to be familiar with a preferred programming language’s syntax. But, we need to learn computer science theories to become a programmer.

Theories will help you find your expertise.

In the software industry, there are two choices: We can either become a jack of all trades or become a master in a preferred field. In fact, developers can master more than one closely connected field as well. For example, my favorite fields are cloud computing and software architecture. Nowadays, the majority of junior developers start their careers with frontend engineering because of the current trend. After several years, we often hear these kinds of developers say that they don’t work with the things they like.

All modern career paths are based on computer science’s subfields, such as software engineering, network engineering, cloud computing, mobile computing, embedded systems design, database design, etc. If we learn the fundamentals of all of these subfields, finding what we are passionate about is a piece of cake.

Theories make you a better problem solver.

Software development is not straightforward all the time. Developers often meet problems that need reliable and efficient solutions. A software engineering solution’s triumph depends on the software development team’s skills and expertise. For example, a team can introduce an instant inefficient solution. Meanwhile, another team can solve the same problem with an efficient solution. Computer science theories help developers come up with efficient and smart solutions. For example, in the Git open source project, storing commit objects efficiently was a problem. The initial Git developers solved it with hashing and the tree data structure.

In fact, any developer could solve interview problems given by top tech companies. But, implementing an efficient and optimal solution is possible only if we apply computer science theories.

Online competitive programming challenges are a great way to test problem-solving skills. Top tech companies use similar kinds of challenges in their interviews to identify better problem solvers. They don’t ask candidates to write code for a prepared software specification. Instead, they will test candidates’ computer science theory knowledge.

Conclusion

Computer science theories are not required to enter the software development field, but those theories give you more perks. The same scenario happens with the programming languages as well. Undoubtedly, developers can start programming with any modern programming language. Python and JavaScript are the easiest languages to get started. But if you start with the C programming language, you will get more perks — as explained in the following story.

Sometimes, starting software development with computer science theories is not as easy as starting it with coding. But, without computer science theories, you will become a coder — not a programmer. However, it’s up to you to become a coder or programmer. Programming is about solving engineering problems with coding by understanding internals. Therefore, start with theories and become a better programmer.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK