Anyone can be a programmer, but not everyone wants to. The easiest way to find out is to try it. So, if you ever wondered if programming was for you, you should try it. Where to start? You can pick any programming language to learn; I recommend to try Ruby because it’s gentle for beginners, yet powerful and expressive. If you enjoy your first encounter with programming, then consider reading…
- Who are you? My name is Cenny Davidsson (pronounced Kenny), and I’m a software developer, CocoaHeads organizer and the author of this website. - Did you make this website? I made all of this website’s content, and the idea is also mine. I do get help with design from a friend of mine (Jovo ve ). Without him, this website would most likely be plain HTML without images or stylings.
We all struggle with the same issues in our journey to mastery, especially early in our careers when we are apprentices. This programming book contains common problems for developers and discusses how to go past them. Knowing this early in your career will give an immense advantage to those who don’t. I’m sure the advice given here will be helpful indefinitely throughout your career as…
2023-11-1 Added Getting Clojure to futher reading of Seven Languages in Seven Weeks 2023-7-11 Added book Elegant Objects Vol. 2 2023-6-19 Added book Elegant Objects Vol. 1 2023-5-22 Added book The Design of Everyday Things 2023-5-8 Added book The Manga Guide to Databases 2023-5-6 Added book Software Teaming 2023-4-23 Added book Smart Until It’s Dumb 2022-10-23 Added book Don’t Make Me Think…
Code is what you as a developer writes to solve problems for users, but what is code, and why does it work? This programming book explores the origins of code and takes you on a computer-building journey starting from logic and gates.
Listen to your elders, there are plenty of good programmers that have come before you and if you really want to become great at our craft you would be wise to listen to them. This book have collected insights from 15 great minds that are worth reading.
Getting software in the hand of users is fast and often is essential for an agile team because agile is all about small feedback loops. Achieving this is no easy task as it requires a lot of technical excellence from the team.
Design patterns describe a problem and a general solution that can be applied in many variations depending on your context. Pattern familiarity can significantly enhance your ability to design modular and decoupled code, but also to understand frameworks and communicate ideas. If you find this book difficult I can recommend to first read Head First Design Patterns .
Distributed systems backed by databases are extremely common. Designing a distributed system is nontrivial because, by nature, it involves many components and external interfaces that bind you to early mistakes.
Domain-Driven Design (DDD) is a big topic, and this is the book that started it. It explains everything you need to know to make a difference in how your business communicates and your team writes code.
The right tool for the right problem is the name of the game. For smaller projects, the choice of databases has little impact. In distributed systems, what database you use can make a huge difference in response times.
Understanding algorithms is understanding how to decompose problems and using the right tools for the job. For example, being good at memorizing sorting algorithms will bring you nowhere, but understanding how and why they work will always be helpful and make you a better problem solver. This programming book is an easy and friendly introduction to algorithms with playful illustrations that make…
Functional Programming is growing in popularity, and it’s a paradigm with a lot to teach about how to design a system. This book covers how to minimize mutability and separate concerns, and the last chapter briefly introduces reactive programming and the onion architecture. Thinking like a functional programmer can help you write simpler code and reduce system complexity.
- What if I’m unfamiliar with the programming language of the book? Don’t be frightened if you have difficulty following the book due to an unfamiliar programming language. Instead, go to its documentation (or check out codecademy.com ) and learn how to use variables, types, functions, and control flow. This knowledge will get you through most programming books. Code examples in many…
What is Test-Driven Development (TDD)? If you have read some of the books on my reading list , you are most likely familiar with TDD. If that is not the case, Test-Driven Development by Example is a great place to start (it is a fun and brief read). TDD is the practice of writing a test for a behavior you want, and once that test is proven to fail, you implement it with the most straightforward…
Sometimes we treat people like machines. In some occupations, this can work. In software projects, it creates problems that can be hard to fix. People are what make software projects succeed or fail. Few problems are technical. Having a well-functioned team is more important than a modern tech stack.
Refactor isn’t rewriting as much as it’s evolving the code in small steps to improve the code. Since we seldom get something right the first time and our code will need to change (That’s why we call it software), refactoring is something we need to do as new requirements come. Being good at refactoring and knowing how and when to do it can make it or break it for the quality of…
This programming book introduces seven paradigms through seven programming languages. The ideas and concepts from these languages have influenced many modern languages today. Without Haskell there would surely be no Swift , Kotlin , or Elm . Exposing oneself to new ideas and concepts is helpful for perspective and problem-solving. For example, Prolog and Erlang might seem like strange programming…
Working with files, text, and networks is common for a developer, and the Command-Line Interface (CLI) can likely automate most of the tediousness of these tasks pretty quickly. Being proficient with the CLI is the most cross-platform skill you can learn and will most likely always be helpful and outlive any programming language and environment.
- Why should I start a book circle? A book circle is a great way to facilitate discussions and explore topics as a team. It creates opportunities to explore new ideas and re-evaluate old habits. - Where do I start? All you need is one other person who wants to try. An excellent place to start looking is with your current team, or maybe you know some alumni who might be interested.
This is not a book about getting good at interviews, at least not only that. This is a book about understanding how distributed systems work and what problems have to be solved for a system to work sustain the workload a successful product could generate.
TDD, Where Did It All Go Wrong Test-driven development (TDD) is simple, but we often get it wrong. It takes time to get good at TDD, and you’ll make mistakes. Ian Cooper has identified these mistakes and gives us some guidance. Seven Ineffective Coding Habits of Many Programmers Some of your habbits may be more harmful than useful. Kevlin Henney as the excelnt talker he is delightfullly…
Test-Driven Development (TDD) is the idea of writing test code before production code and letting that drive your design. TDD is one of the most rewarding techniques one can learn. Learning TDD is tough and will take time; I can’t think of a better place to start than with this book.
Agile development isn’t scrum or any other process for that matter. Instead, it’s a collection of values and principles guiding your team and organization to work better. This programming book discusses the first 20 years of agile development, what went wrong, and what worked, giving concrete examples and advice on what practices you and your team can adopt to become more agile.
Test code is essential for a healthy software project. If you have no tests, you can’t refactor your code safely or avoid regression effortlessly. Poorly written tests can become a burden instead of an advantage if one is not careful. Writing good tests is a skill like any other, and this is a great resource to learn how to improve your test writing skills.
Knowing your way around SQL and databases is vital for most projects. This fun introduction to designing and using databases will not make you a database guru, but it will give you enough to get stuff done and prepare you for other database books if you wish to learn more.
The fundamentals of Object-Oriented Programming (OOP) are easy to overlook. Don’t do that; there is plenty to learn from OOP. There are many misconceptions about OOP; it can be an excellent tool for designing maintainable applications if appropriately used.
This programming book will define and give you the recipe to be a pragmatic programmer. So don’t expect to be one just because you read it once. Instead, you need to follow their advice and take it to heart without being dogmatic. I’m sure your definition of a pragmatic programmer will change after you have read this programming book, and it will likely change again after reading it…
- I read a programming book on your list , and I think the author is wrong. Reading programming books should challenge your thinking and understanding. Disagreeing with the author is not wrong. But try to look at what they are saying from their perspective and ask yourself why you disagree. The point of reading a programming book is to learn. Disregarding an author’s opinion without reflection…