Continue reading What does “learning fundamentals” actually mean in practice?" />

What does “learning fundamentals” actually mean in practice?

“Learn the fundamentals so you’ll succeed in your endeavor” This is a common piece of advice people often give. You’ll frequently hear it when asking how to secure your career or how to learn a new technology, etc.

In today’s world, overflowing with knowledge and information. This advice is vague and it leaves us with unanswered questions. What exactly should I learn as fundamentals? How can I be sure I’m learning the right things?

So when someone says “learn the fundamentals”, the right response is:

“Which fundamentals, and how deep, based on what I’m building?”

Physics & Electronics (Atoms, Electrons, Gates, etc.)

Necessary if you’re doing hardware design, building compilers, or working with embedded systems. Not necessary for typical software developers.

Computer Architecture & Operating Systems

This area consists of concepts CPU cycles, memory hierarchy (RAM vs cache), processes, threads, virtual memory, file systems.

This is necessary if you’re into systems programming, performance tuning, or OS development.

Programming Language Theory & Compilers

This is about syntax, parsing, type systems, interpreters vs compilers.

This is necessary if you’re building tools (like linters, and transpilers), designing new languages, or deep into back-end design.

Data Structures & Algorithms

Concepts and implementation of arrays, linked lists, trees, hashmaps, sorting, recursion, time/space complexity.

This is essential for all developers. They underlie everything, from efficient code to debugging performance issues.

Networking Basics

This is about the theory of HTTP, TCP/IP, DNS, client-server model.

This is necessary if you build web apps, mobile apps, APIs, etc. But you don’t need to know TCP flags or OSI model layers deeply unless you’re in DevOps or network engineering.

Databases & Querying

This is about the design of databases, SQL, indexing, normalization, and transactions.

Learning databases is essential for most types of app developers. You can’t avoid data persistence.

Version Control, Build Tools, Deployment

This is about learning Git, CI/CD, testing, and packaging tools.

It is required for modern software development in teams and production settings.

Software Architecture

Software architecture becomes fundamental once you move from building apps that “just work” to systems that are “designed to last.” Architecture is essential at certain points in a developer’s or engineer’s journey. especially when working on large-scale, long-lived, or team-based systems.

Linear Algebra, Statistics, Programming (Python) and ML Theory

The fundamentals required for AI vary depending on the role you’re aiming for.

whether you’re a machine learning engineer, data scientist, AI researcher, ML ops engineer, or even a developer using AI APIs these are the core knowledge areas required for that.

Final thoughts:

My list is limited to few common IT and Computer related fields. There are many more.

When learning fundamentals, you don’t need to “boil the ocean” of computer science. As a practical use, go just deep enough to understand what your tools abstract away. And just go deeper when things break, or performance matters.

Discovering Your Ideal Career Path: A Breakdown of the Self-Assessment Survey

Living in a world full of choices and opportunities, we are often influenced by others when making decisions. But are we truly making the right choices when it comes to important matters? I wanted to create a self-assessment survey to help people figure out the ideal career path tailored to them. This is specifically designed for individuals looking to make a choice in the IT field.

For the initial version, I’ve kept it ultra-simple. The survey consists of just four multiple-choice questions. If you’d like to try it out, here’s the link: https://itpro.lk/mypath

Logic Rules to Map to Career Pathways

The first question gathers input about the user’s preferred tasks, while the remaining three validate the initial choice. Based on their answers, the survey suggests career paths best aligned with their preferences.

Recommending Software Development:

  1. Task: A (Building software).
  2. Skills: Intermediate/Advanced programming.
  3. Motivation: High earning potential, Opportunities for creativity.
  4. People/Tasks: Prefers technical tasks.

Recommending Data Science/Analysis:

  1. Task: B (Analyzing data).
  2. Skills: Intermediate/Advanced programming.
  3. Motivation: High earning potential, Job stability and security.
  4. People/Tasks: Prefers technical tasks.

Recommending UI/UX Design:

  1. Task: C (Designing visuals).
  2. Skills: Beginner/Intermediate programming.
  3. Motivation: Opportunities for creativity.
  4. People/Tasks: Prefers technical tasks.

Recommending Cybersecurity:

  1. Task: D (Solving security challenges).
  2. Skills: Intermediate/Advanced programming.
  3. Motivation: High earning potential, Job stability and security.
  4. People/Tasks: Prefers technical tasks.

Recommending Quality Assurance:

  1. Task: E (Testing and improving quality).
  2. Skills: Beginner/Intermediate programming.
  3. Motivation: Job stability and security.
  4. People/Tasks: Prefers technical tasks.

Recommending IT Academic:

  1. Task: F (Teaching IT concepts).
  2. Skills: Beginner/Intermediate programming.
  3. Motivation: Helping others, Leading and organizing teams.
  4. People/Tasks: Enjoys working with people.

Recommending IT Management (Project/Product):

  1. Task: G (Managing teams and projects).
  2. Skills: Beginner/Intermediate programming.
  3. Motivation: Leading and organizing teams.
  4. People/Tasks: Enjoys working with people.

Recommending to try different paths

If the answers provided by users don’t align with any of the options, the system suggests exploring different paths to discover the most suitable career for them.

That’s all for now, folks! 🙂 I know it’s a very basic tool, and its recommendations shouldn’t be taken too seriously. I just recommend giving it a try for fun. I’m working on a more advanced version to share with you in the future.