Programming
Computers
An underrated aspect of programming is understanding computers; for engineers and self-taught programmers, it might be challenging to understand the intricacies of computers. CPU course, what is a CPU It is written by high-schoolers, so it is an exciting read.
API
How does one explain an API in a good way? It is quite a broad subject. On the one hand, what I first thought of as an API is just how you can talk with other computers through the internet; when people said there is an API for that, they meant that someone had made a database or service that you could get the data for. However, an API is more than that; it is a method of interfacing with other programs. The Python programming language is an API, and when I use a library from Microsoft or AWS, I use their API.
To me, thinking of an API as a contract is a useful metaphor. This 'contract' ensures that if you make a request in a specific, agreed-upon format, you will receive a predictable response. An API is a structurally agreed-upon way for two programs to interact with each other.
Links
- Uncle Bob sessions on Clean Code Interesting high-level talks on code and code writing and programming. Robert C Martin is very well known for the clean code standard, etc.
- Reduce Friction Interesting blog post.
- The best time to reduce friction for your team was the moment it came into being, and the second best time is now.
- Process is the way you habitually do things.
- Ceremony is a thing you do every time, ritualistically, usually involving other people.
- Friction is a useful metaphor here because each of those examples oppose motion: they demand more energy be invested in moving the project than would be required if they weren’t there.
- A process that is predictable and time-consuming but has to be done by hand is toil.
- Automate ruthlessly. This is where I have seen the most surprising pushback. We’re programmers. Automating processes is what we do!
- Recommended reading for developers
- More Learning for Developers
- Reflections on a decade of coding.
- FastAPI docs on async are very intuitive and good.
- Reflections on a decade of coding
- Three Virtues of a Great Programmer
- Software Engineering Practices
- Premature Optimization
- Programming is mostly thinking.
- Videoes with Crash Courses and other Guides
- 10k Hours of coding lessons
Thoughts
- My old boss said there are usually two roads to learning programming: the syntax and the underlying principles of programming. Switching languages after learning the latter is usually much more straightforward. I agree with this statement to an extent, but I feel like it is more of the transitory phase where you first learn programming syntax and make the language do the heavy lifting, and then you become more proficient. With the concepts and logic, I become more into the latter category.
- "Going to school to study software engineering is mostly good for understanding how to communicate with other software engineers. You understand the lingua" - Coworker.
- "Code is just the residue of the work." - Tim Ottinger.
- "Code that is working in production is superior to code that has never operated in real life." - Tim Ottinger.
- You are not your code, and you are not your ideas. Do not take criticism of your work as criticism of you as a person.