<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Programming Books</title>
    <link>https://programmingbooks.dev/</link>
    <description>Recent content on Programming Books</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    
	<atom:link href="https://programmingbooks.dev/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>A guide for beginners</title>
      <link>https://programmingbooks.dev/articles/beginner/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://programmingbooks.dev/articles/beginner/</guid>
      <description>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&amp;rsquo;s gentle for beginners, yet powerful and expressive.
If you enjoy your first encounter with programming, then consider reading the books Learn to Program and Explain the cloud like i’m 10 .</description>
    </item>
    
    <item>
      <title>About</title>
      <link>https://programmingbooks.dev/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://programmingbooks.dev/about/</guid>
      <description>- Who are you?
My name is Cenny Davidsson (pronounced Kenny), and I&amp;rsquo;m a software developer, CocoaHeads organizer and the author of this website.
- Did you make this website?
I made all of this website&amp;rsquo;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.</description>
    </item>
    
    <item>
      <title>Apprenticeship Patterns</title>
      <link>https://programmingbooks.dev/book_list/apprentice/apprenticeship_patterns/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://programmingbooks.dev/book_list/apprentice/apprenticeship_patterns/</guid>
      <description>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&amp;rsquo;t. I&amp;rsquo;m sure the advice given here will be helpful indefinitely throughout your career as a software developer.</description>
    </item>
    
    <item>
      <title>Changelog</title>
      <link>https://programmingbooks.dev/changelog/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://programmingbooks.dev/changelog/</guid>
      <description>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 2022-10-11 Added book Agile Testing Condensed 2022-09-14 Added book Grokking Simplicity  2022-08-17 Added book Programming Pearls 2022-08-15 Added book The Golden Ticket 2022-08-04 Added book Remote Mob Programming 2022-08-03 Added book Really Friendly Command Line Intro  2022-08-01 Added book Code with the Wisdom of the Crowd 2022-07-25 Added book Learn to Program  Added book Really Friendly Git Intro  Added book Designing Data-Intensive Applications  2022-07-22 Added book Crafting Interpreters  Added book Structure and Interpretation of Computer Programs 2022-03-11 Added article Start a Book Circle  </description>
    </item>
    
    <item>
      <title>Code</title>
      <link>https://programmingbooks.dev/book_list/journeyman/code/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://programmingbooks.dev/book_list/journeyman/code/</guid>
      <description>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.</description>
    </item>
    
    <item>
      <title>Coders at Work</title>
      <link>https://programmingbooks.dev/book_list/master/coders_at_work/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://programmingbooks.dev/book_list/master/coders_at_work/</guid>
      <description>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.</description>
    </item>
    
    <item>
      <title>Continuous Delivery</title>
      <link>https://programmingbooks.dev/book_list/master/continuous-delivery/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://programmingbooks.dev/book_list/master/continuous-delivery/</guid>
      <description>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.</description>
    </item>
    
    <item>
      <title>Design Patterns</title>
      <link>https://programmingbooks.dev/book_list/journeyman/design_patterns/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://programmingbooks.dev/book_list/journeyman/design_patterns/</guid>
      <description>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 .</description>
    </item>
    
    <item>
      <title>Designing Data-Intensive Applications</title>
      <link>https://programmingbooks.dev/book_list/master/designing_data_intensive/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://programmingbooks.dev/book_list/master/designing_data_intensive/</guid>
      <description>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.</description>
    </item>
    
    <item>
      <title>Domain-Driven Design</title>
      <link>https://programmingbooks.dev/book_list/master/domain_driven_design/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://programmingbooks.dev/book_list/master/domain_driven_design/</guid>
      <description>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.</description>
    </item>
    
    <item>
      <title>Don&#39;t Make Me Think</title>
      <link>https://programmingbooks.dev/book_list/journeyman/dont_make_me_think/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://programmingbooks.dev/book_list/journeyman/dont_make_me_think/</guid>
      <description>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.</description>
    </item>
    
    <item>
      <title>Grokking Algorithms</title>
      <link>https://programmingbooks.dev/book_list/apprentice/grokking_algorithms/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://programmingbooks.dev/book_list/apprentice/grokking_algorithms/</guid>
      <description>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 it easy to learn algorithms and data structures.</description>
    </item>
    
    <item>
      <title>Grokking Simplicity</title>
      <link>https://programmingbooks.dev/book_list/apprentice/grokking_simplicity/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://programmingbooks.dev/book_list/apprentice/grokking_simplicity/</guid>
      <description>Functional Programming is growing in popularity, and it&amp;rsquo;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.</description>
    </item>
    
    <item>
      <title>How to Read Programming Books</title>
      <link>https://programmingbooks.dev/articles/reading_books/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://programmingbooks.dev/articles/reading_books/</guid>
      <description>- What if I&amp;rsquo;m unfamiliar with the programming language of the book?
Don&amp;rsquo;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 books are mostly there to demonstrate ideas (unless the book is there to teach you the syntax and features of a programming language).</description>
    </item>
    
    <item>
      <title>Is Test-Driven Development good?</title>
      <link>https://programmingbooks.dev/articles/tdd/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://programmingbooks.dev/articles/tdd/</guid>
      <description>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 code possible to make the test pass.</description>
    </item>
    
    <item>
      <title>Peopleware</title>
      <link>https://programmingbooks.dev/book_list/master/peopleware/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://programmingbooks.dev/book_list/master/peopleware/</guid>
      <description>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.</description>
    </item>
    
    <item>
      <title>Refactoring</title>
      <link>https://programmingbooks.dev/book_list/journeyman/refactoring/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://programmingbooks.dev/book_list/journeyman/refactoring/</guid>
      <description>Refactor isn&amp;rsquo;t rewriting as much as it&amp;rsquo;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&amp;rsquo;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 your code.</description>
    </item>
    
    <item>
      <title>Seven Languages in Seven Weeks</title>
      <link>https://programmingbooks.dev/book_list/journeyman/seven_languages_in_seven_weeks/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://programmingbooks.dev/book_list/journeyman/seven_languages_in_seven_weeks/</guid>
      <description>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 languages with little application, but understanding them might be more beneficial than you first might think.</description>
    </item>
    
    <item>
      <title>Small, Sharp Software Tools</title>
      <link>https://programmingbooks.dev/book_list/apprentice/small-sharp-software-tools/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://programmingbooks.dev/book_list/apprentice/small-sharp-software-tools/</guid>
      <description>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.</description>
    </item>
    
    <item>
      <title>Start a Book Circle</title>
      <link>https://programmingbooks.dev/articles/book_circle/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://programmingbooks.dev/articles/book_circle/</guid>
      <description>- 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.</description>
    </item>
    
    <item>
      <title>Structure and Interpretation of Computer Programs</title>
      <link>https://programmingbooks.dev/book_list/master/sicp/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://programmingbooks.dev/book_list/master/sicp/</guid>
      <description>This classic programming book teaches concurrent programming, functional programming, lazy evaluation, and nondeterministic programming.</description>
    </item>
    
    <item>
      <title>System Design Interview</title>
      <link>https://programmingbooks.dev/book_list/journeyman/system_design_interview/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://programmingbooks.dev/book_list/journeyman/system_design_interview/</guid>
      <description>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.</description>
    </item>
    
    <item>
      <title>Talks that inspire</title>
      <link>https://programmingbooks.dev/articles/videos/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://programmingbooks.dev/articles/videos/</guid>
      <description>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&amp;rsquo;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 explains why that is so.</description>
    </item>
    
    <item>
      <title>Test-Driven Development</title>
      <link>https://programmingbooks.dev/book_list/journeyman/test_driven_development/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://programmingbooks.dev/book_list/journeyman/test_driven_development/</guid>
      <description>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&amp;rsquo;t think of a better place to start than with this book.</description>
    </item>
    
    <item>
      <title>The Art of Agile Development</title>
      <link>https://programmingbooks.dev/book_list/journeyman/art_of_agile/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://programmingbooks.dev/book_list/journeyman/art_of_agile/</guid>
      <description>Agile development isn&amp;rsquo;t scrum or any other process for that matter. Instead, it&amp;rsquo;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.</description>
    </item>
    
    <item>
      <title>The Art of Unit Testing</title>
      <link>https://programmingbooks.dev/book_list/apprentice/art_of_unit_testing/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://programmingbooks.dev/book_list/apprentice/art_of_unit_testing/</guid>
      <description>Test code is essential for a healthy software project. If you have no tests, you can&amp;rsquo;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.</description>
    </item>
    
    <item>
      <title>The Manga Guide to Databases</title>
      <link>https://programmingbooks.dev/book_list/journeyman/manga_guide_to_databases/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://programmingbooks.dev/book_list/journeyman/manga_guide_to_databases/</guid>
      <description>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.</description>
    </item>
    
    <item>
      <title>The Object-Oriented Thought Process</title>
      <link>https://programmingbooks.dev/book_list/apprentice/object_oriented_thought/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://programmingbooks.dev/book_list/apprentice/object_oriented_thought/</guid>
      <description>The fundamentals of Object-Oriented Programming (OOP) are easy to overlook. Don&amp;rsquo;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.</description>
    </item>
    
    <item>
      <title>The Pragmatic Programmer</title>
      <link>https://programmingbooks.dev/book_list/journeyman/pragmatic_programmer/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://programmingbooks.dev/book_list/journeyman/pragmatic_programmer/</guid>
      <description>This programming book will define and give you the recipe to be a pragmatic programmer. So don&amp;rsquo;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&amp;rsquo;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 another time a few years down the road.</description>
    </item>
    
    <item>
      <title>The UNIX Programming Environment</title>
      <link>https://programmingbooks.dev/book_list/master/unix_programming_environment/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://programmingbooks.dev/book_list/master/unix_programming_environment/</guid>
      <description>UNIX is (and probably always will be) an important part of developing software, therefore it&amp;rsquo;s wise to understand what it is and how it works.</description>
    </item>
    
    <item>
      <title>When Programming Books are Wrong</title>
      <link>https://programmingbooks.dev/articles/book_is_wrong/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://programmingbooks.dev/articles/book_is_wrong/</guid>
      <description>- 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 will yield little reward.</description>
    </item>
    
  </channel>
</rss>