6 Things Every Software Engineer Should Know to Standout
Tags: webdev, codenewbie, computerscience, career
Published: 2020-07-14 06:42:37

## 1. Data Structures & Algorithms
###Why?
Data structures and algorithms are the backbone of computer science. An algorithm refers to the logical computational steps it takes to solve a problem. A data structure is a way to organize and store data effectively.

Learning the common algorithms and data structures will help you solve problems more efficiently in your applications.

###Resources
**Books**
* [Introduction to Algorithms by Thomas Cormen, Charles Leiserson, Ronald Rivest & Clifford Stein](https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844/ref=sr_1_1?dchild=1&keywords=introduction+to+algorithms&qid=1593146610&sr=8-1)
* [Algorithms by Robert Sedgewick & Kevin Wayne](https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/ref=sr_1_1?dchild=1&keywords=sedgewick+algorithms&qid=1593147305&sr=8-1)

**Courses**
* [Introduction to Algorithms MIT Course](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/index.htm)
* [A Practical Guide to Algorithms with JavaScript](https://frontendmasters.com/courses/practical-algorithms/)

----------

## 2. Computer Networking
###Why?
Networking refers to the communication of data between networks. Understanding the basic concepts of computer networking will help you as a developer understand the magic behind how computers send and receive data.

###Resources
**Books**
* [Computer Networking: A Top-Down Approach by Ross Keith W. & Kurose James F.](https://www.amazon.com/Computer-Networking-Top-Down-Approach-6Th/dp/9332585490/ref=sr_1_2?dchild=1&keywords=top+down+approach&qid=1593146734&sr=8-2)
* [Computer Networks by Andrew Tanenbaum & David Wetherall](https://www.amazon.com/Computer-Networks-5th-Andrew-Tanenbaum/dp/0132126958/ref=sr_1_1?dchild=1&keywords=computer+networks&qid=1593405918&s=books&sr=1-1)

**Courses**
* [Computer Networking Complete Course - Beginner to Advanced](https://www.youtube.com/watch?v=QKfk7YFILws)

----------

## 3. Operating Systems
###Why?
Studying operating systems will give you an understanding of how computers work under the hood. You will learn how processes and memory are managed, and how applications are able to run concurrently with other processes, among many other things.

###Resources
**Books**
* [Operating Systems: Three Easy Pieces by Remzi H Arpaci-Dusseau & Andrea C Arpaci-Dusseau ](https://www.amazon.com/Operating-Systems-Three-Easy-Pieces/dp/198508659X/ref=sr_1_2?dchild=1&keywords=operating+systems&qid=1593146843&sr=8-2)
* [Operating System Concepts by Abraham Silberschatz, Peter Galvin & Gerg Gagne](https://www.amazon.com/Operating-System-Concepts-Abraham-Silberschatz/dp/8126554274/ref=sr_1_7?dchild=1&keywords=operating+systems&qid=1593146892&sr=8-7)

**Courses**
* [Operating Systems](https://www.youtube.com/playlist?list=PLacuG5pysFbDQU8kKxbUh4K5c1iL5_k7k)

----------

## 4. Database Management
###Why?
A database is an organized collection of data, allowing storage and retrieval of data. As a developer you will be working with a lot of data; knowing how to effectively store and retrieve this data will go a long way.

###Resources
**Books**
* [Designing Data-Intensive Applications by Martin Kleppmann](https://www.amazon.com/Designing-Data-Intensive-Applications-Reliable-Maintainable/dp/1449373321/ref=sr_1_2?dchild=1&keywords=database&qid=1593147070&sr=8-2)
* [Database Design for Mere Mortals: A Hands-On Guide to Relational Database Design by Michael Hernandez](https://www.amazon.com/Database-Design-Mere-Mortals-Hands/dp/0321884493/ref=sr_1_1?dchild=1&keywords=database&qid=1593147249&sr=8-1)

**Courses**
* [Database Management Essentials](https://www.coursera.org/learn/database-management)

----------

## 5. Design Patterns
###Why?
Design patterns are reusable solutions to commonly occurring problems in software development. Learning design patterns will help you conquer problems you are faced with as a developer more effectively. Having good knowledge of design patterns will allow you to weigh up the pros & cons of potential solutions, allowing you to pick the best tool for the job.

###Resources
**Books**
* [Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson & John Vlissides](https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612/ref=sr_1_1?dchild=1&keywords=design+patterns+gof&qid=1593146935&sr=8-1)
* [Head First Design Patterns: A Brain-Friendly Guide by Eric Freeman, Bert Bates, Kathy Sierra & Elisabeth Robson](https://www.amazon.com/Head-First-Design-Patterns-Brain-Friendly/dp/0596007124/ref=sr_1_2?dchild=1&keywords=design+patterns&qid=1593146967&sr=8-2)

**Courses**
* [Design Patterns](https://www.coursera.org/learn/design-patterns#about)
* [Design Patterns in Object Oriented Programming](https://www.youtube.com/playlist?list=PLrhzvIcii6GNjpARdnO4ueTUAVR9eMBpc)

----------

## 6. Compiler Design
###Why?
Compilation refers to the translation of high-level code down to machine code so that your CPU is able to understand it. By understanding the compilation process, you will understand how programming languages are made, which will allow you to make better use of a language; such as being able to optimize code better, as well as improve debugging skills, and more.

###Resources
**Books**
* [Compilers: Principles, Techniques and Tools by Alfred Aho, Monica Lam, Ravi Sethi, Jeffrey Ullman](https://www.amazon.com/Compilers-Principles-Techniques-Tools-2nd/dp/0321486811/ref=sr_1_2?dchild=1&keywords=compiler&qid=1593147000&sr=8-2)
* [Engineering a Compiler by Keith Cooper & Linda Torczon](https://www.amazon.com/Engineering-Compiler-Keith-Cooper/dp/012088478X/ref=sr_1_2?dchild=1&keywords=Compilers&qid=1593406486&sr=8-2)

**Courses**
* [Compiler Design](https://www.youtube.com/playlist?list=PLEbnTDJUr_IcPtUXFy2b1sGRPsLFMghhS)

----------

*<span>Header photo by <a href="https://unsplash.com/@jruscello?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Jessica Ruscello</a> on <a href="/s/photos/books?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></span>*