How to make yourself STAND OUT as a software developer
While it is true that you don’t need a CS Degree to be a developer,
BUT, there are certain subjects that you should study.
Data Structures & Algorithms
These are the MOST IMPORTANT subjects taught in a CS degree.
But you can totally study them on your own.
There are plenty of resources available online.
Book Recommendation:
Introduction to Algorithms by Thomas S. Cormen
Trust me, if you read and understand “Introduction to Algorithms” you’ll level up your programming game substantially
Computer Networking
You’ll learn how the internet (or any network) works.
Topics:
Concept of layering, LAN technologies, flow and error control techniques,
switching, IPv4/IPv6, routers and routing algorithms (distance vector, link state). TCP/UDP and sockets, congestion control. Application layer protocols (DNS, SMTP, POP, FTP, HTTP). Basics of Wi-Fi.
Network security: auth, public key and private key cryptography, digital signatures and certificates, firewalls.
Book Recommendation:
Computer Networking: A Top-down Approach
Database Management Systems
Topics:
ER‐model. Relational model: relational algebra, tuple calculus, SQL. Integrity constraints, normal forms. File organization, indexing (e.g., B and B+ trees). Transactions and concurrency control.
Book Recommendation:
Database System Concepts, by Abraham Silberschatz, Henry F. Korth, and S. Sudarshan
Operating Systems
Topics:
Processes, threads, inter‐process communication, concurrency and synchronization, deadlocks, CPU scheduling, memory management and virtual memory, file systems.
Book Recommendation:
Operating system concepts by Silberschatz and Galvin
Design Patterns
Design patterns are formalized best practices that the programmer can use to solve common problems when designing an application or system.
Object Oriented Programming
Just study it already!
It is a programming paradigm that relies on the concept of classes and objects. It is used to structure a software program into simple, reusable pieces of code blueprints (usually called classes), which are used to create individual instances of objects
Book Recommendation:
Design Patterns: Elements of Reusable Object-Oriented Software