# Readings

## **History**

* Hackers: Heroes of the Computer Revolution by Steven Levy
* The Soul of a New Machine by Tracy Kidder
* Revolution OS (documentary movie) (2001)
* Pratul’s [software engineering favourites](https://www.youtube.com/playlist?list=PL6RVaoR9G67DfjgtH5oW1OLrWQ2j6IQl3)

***

## For early programmers

[Get better at programming by learning how things work](https://jvns.ca/blog/learn-how-things-work/)

[How to ask good questions](https://jvns.ca/blog/good-questions/)

[Moving faster](https://www.scattered-thoughts.net/writing/moving-faster/)

<https://www.youtube.com/watch?v=PUv66718DII>

***

## **People, teams & projects**

* Radical Candor by Kim Malone Scott
* The Mythical Man Month by Frederick Brooks
* Peopleware: Productive Projects and Teams by Tom DeMarco, Tim Lister
* The Manager's Path by Camille Fournier

***

## **Computer science & meta**

* Conceptual Blockbusting by James L. Adams
* Code Complete 2 by Steve McConnell
* Programming Pearls by Jon L. Bentley
* The Practice of Programming by Brian W. Kernighan, Rob Pike

***

## **Software engineering**

* Working Effectively with Legacy Code by Michael Feathers
* Practical Object Oriented Design Patterns: in Ruby by Sandi Metz
* Test Driven Development: By Example by Kent Beck
* Get better at programming by learning how things work - <https://jvns.ca/blog/learn-how-things-work/> by Julia Evans

***

## **Agile & related processes**

* User Stories Applied: For Agile Software Development by Mike Cohn
* Software Estimation: Demystifying the Black Art by Steve McConnell

[Writing system software: code comments.](http://antirez.com/news/124)

***

## **Release engineering**

* The Phoenix Project: A Novel about IT, DevOps, and Helping Your Business Win by Gene Kim, Kevin Behr, George Spafford
* Accelerate: The Science of Lean Software and DevOps by Nicole Forsgren, Jez Humble, Gene Kim
* Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation by Jez Humble, David Farley

***

## **Android / Java / Kotlin**

* Reactive Programming with RxJava by Tomasz Nurkiewicz, Ben Christensen
* Effective Java by Joshua Bloch
* Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
* Androids: The Team That Built the Android Operating System by Chet Hasse

***

## **Web / JavaScript**

* Eloquent JavaScript by Marijn Haverbeke

***

## Object-oriented programming

{% embed url="<https://www.youtube.com/watch?v=XXi_FBrZQiU>" %}

***

## Testing

{% embed url="<https://www.youtube.com/watch?v=eOYal8elnZk>" %}

{% embed url="<https://www.youtube.com/watch?v=URSWYvyc42M>" %}

***

## Front-end state management

{% embed url="<https://www.youtube.com/watch?v=0IKHxjkgop4>" %}

{% embed url="<https://www.youtube.com/watch?t=1076s&v=-lVVfxsRjcY>" %}

{% embed url="<https://www.youtube.com/watch?v=1zj7M1LnJV4>" %}

***
