Skip to content

Latest commit

 

History

History
45 lines (36 loc) · 3.34 KB

reading_list.md

File metadata and controls

45 lines (36 loc) · 3.34 KB

This is a list of recommended software related books.

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.

The Basics

Data structures and algorithms are the bread and butter of creating good code, so are good design and clean structure.

  • Cracking the coding interview
  • Elements of programming interviews
  • Clean Code by Robert Martin
  • Head First Design Patterns: A Brain-Friendly Guide

Python

  • Python Tricks: A Buffet of Awesome Python Features

C++

TODO

Linux

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.

Architecture and System Design

Once you get a few months of being a programmer, its important to learn how to architect your code. This will allow you to merge what you know about design patterns into code that is scalable and maintainable throughout the years to come. 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.

DevOps: Continuous Integration and Continuous Deployment

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.

  • The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations

Life Skills

Life skills is rather important, as software engineers tend to silo themselves rather than work together with the team. You can't finish the project alone and you have to leverage your teammates at some point to get the job done. How you communicate with your peers is just as important as how you code.

  • How to Win Friends & Influence People
  • The Schmuck in My Office: How to Deal Effectively with Difficult People at Work

Management

Idea meritocracy, an environment where the best idea wins, an interesting topic indeed. It might be too idealistic and hard to achieve but something that would make a team very efficient if done at modest doses.

  • Principles by Ray Dalio