|
| 1 | +## This is a list of recommended software related books. |
| 2 | + |
| 3 | +I will attempt to update this list as I also move forward in my career. Take this as a good rough guide to some very good books. I perfer to read books that are less dry than your average textbook. |
| 4 | + |
| 5 | +### The Basics |
| 6 | +Data structures and algorithms are the bread and butter of creating good code, so are good design and clean structure. |
| 7 | +- Cracking the coding interview |
| 8 | +- Elements of programming interviews |
| 9 | +- Clean Code by Robert Martin |
| 10 | +- Head First Design Patterns: A Brain-Friendly Guide |
| 11 | + |
| 12 | +### Python |
| 13 | +- Python Tricks: A Buffet of Awesome Python Features |
| 14 | + |
| 15 | +## C++ |
| 16 | +TODO |
| 17 | + |
| 18 | +### Linux |
| 19 | +Linux is a very powerful operating system and its the most common OS used in the software industry. Its the most customizable, flexible OS there is. Maintained by many contributors, very few bugs/crash, high up-time (no need to restart after updates), and less prone to viruses due to permissions. You will stumble upon some flavor of Linux during your software career. |
| 20 | +- The Linux Command Line by William Shotts |
| 21 | +- How Linux Works, 2nd Edition: What Every Superuser Should Know |
| 22 | +- [UNIX and Linux System Administration Handbook (5th Edition)](https://www.amazon.com/gp/product/0134277554/ref=ox_sc_act_title_1?smid=ATVPDKIKX0DER&psc=1) |
| 23 | + |
| 24 | +### Architecture and System Design |
| 25 | +Once you get a few months of being a programmer, its important to learn how to architect your code. |
| 26 | +This will allow you to merge what you know about design patterns into code that is scalable and maintainable throughout the years to come. |
| 27 | +Also its important to dig into designing the system as a whole, a more broader picture of the project and various issues that come with distributed systems. |
| 28 | +- Clean Architecture: A Craftsman's Guide to Software Structure and Design |
| 29 | +- [Designing Data-Intensive Applications Book](https://www.amazon.com/gp/product/1449373321?pf_rd_p=183f5289-9dc0-416f-942e-e8f213ef368b&pf_rd_r=NZSW6YF36GPNR9EM27XB) |
| 30 | + |
| 31 | +### DevOps: Continuous Integration and Continuous Deployment |
| 32 | +You don't need to necessarily understand the full scope of DevOps as a programmer but quite franking you should at-least understand the perspective of a DevOps engineer you are coding for. Ultimately, your code has to be executed and if its coded in a way that is hard to configure, deploy, compile or test its going to making the operation teams' lives difficult. Additionally, too many companies do not have a good software development pipeline in place. They do not follow the idea of continuous testing per commit nor do they have automatic ways to mitigating risk of deploying bad code to production. |
| 33 | +- The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations |
| 34 | + |
| 35 | +### Life Skills |
| 36 | +Life skills is rather important, as software engineers tend to silo themselves rather than work together with the team. |
| 37 | +You can't finish the project alone and you have to leverage your teammates at some point to get the job done. |
| 38 | +How you communicate with your peers is just as important as how you code. |
| 39 | +- How to Win Friends & Influence People |
| 40 | +- The Schmuck in My Office: How to Deal Effectively with Difficult People at Work |
| 41 | + |
| 42 | +### Management |
| 43 | +Idea meritocracy, an environment where the best idea wins, an interesting topic indeed. |
| 44 | +It might be too idealistic and hard to achieve but something that would make a team very efficient if done at modest doses. |
| 45 | +- Principles by Ray Dalio |
0 commit comments