# 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>" %}

***


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://university.obvious.in/product-design/mobile-engineering/readings.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
