Prefer video format? Watch it on YouTube.
In the previous video, we looked at the various career options available to software developers in the hope that you will find the one that works for you.
Today we will discuss an even more important topic - the right way to kick-start your coding adventure.
- It’s fine to dive right into coding - sustains initial excitement and builds momentum.
- After 1-2 coding sessions, start with foundational knowledge.
- What is foundational knowledge?
- building blocks (such as data structures)
- problem-solving techniques (such as algorithms and design patterns)
- the bigger picture (that is, how different software come together to create an application)
- Strong foundation = bigger/complex software + high-quality code + transferable skills.
- Key idea - not becoming an expert; knowing that these concepts exist.
- Believe me, foundational knowledge is the difference between a good developer and a bad developer.
- Data structures - how to store data in your program.
- Array, hashmap, stacks, queues… Feeling adventurous: trees and graphs.
- Pros/cons, when to use what.
- Pay special attention to how they are stored in a computer’s RAM.
- Algorithms - how to methodically approach a complex problem.
- Basic searching algos - linear and binary
- Basic sorting algos - bubble, selection, insertion, and merge.
- Pay special attention to running time and performance, and how we measure it esp. Big O notation.
Big Picture Thinking
- Lastly, practice expanding your big-picture thinking.
- Any web or mobile app is rarely one big coherent software.
- Differentiate frontend and backend pieces.
- Client-server model.
- Databases - how data is stored permanently.
- Cache - how data is stored temporarily to boost performance.
- OSI model - how messages travel through layers of a network.
- Version control - how developers collaborate over the same codebase.
- Start with coding to sustain initial excitement.
- Combine it with fundamental knowledge for a strong foundation.
- Data structures are building blocks.
- Algorithms are problem-solving techniques.
- Explore the big picture by learning about client-server, databases, caching, OSI model, version control, etc.
In the next video, we’ll look at some common knowledge gaps between what you learn at college or by yourself and what most companies expect.