<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Cenny Davidsson</title>
    <description>The latest articles on DEV Community by Cenny Davidsson (@cennydavidsson).</description>
    <link>https://dev.to/cennydavidsson</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F827379%2F9c0ae9e6-5557-42b0-bc82-80d3e5002125.jpeg</url>
      <title>DEV Community: Cenny Davidsson</title>
      <link>https://dev.to/cennydavidsson</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cennydavidsson"/>
    <language>en</language>
    <item>
      <title>Start a book circle</title>
      <dc:creator>Cenny Davidsson</dc:creator>
      <pubDate>Fri, 18 Mar 2022 17:18:35 +0000</pubDate>
      <link>https://dev.to/cennydavidsson/start-a-book-circle-2b0b</link>
      <guid>https://dev.to/cennydavidsson/start-a-book-circle-2b0b</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;- Why should I start a book circle?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Have you ever read a programming book or an article that enlightened you and then found no one to talk to about it? What you are lacking is a forum to discuss what you've read. &lt;/p&gt;

&lt;p&gt;Even if you have experienced peers, they might not be well versed in the topic, resulting in a one-sided conversation. A book circle allows you and your peers to discuss these topics in a structured way. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;- My team/manager won't set aside the time for it.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A book circle can be a perfect opportunity to come together as a team and discuss ideas before trying them. There is no point in trying something if not everyone is convinced that it is worth trying.&lt;/p&gt;

&lt;p&gt;People, in my experience, are more likely to try something if it comes from a source with authority, like an author from a well-regarded programming book.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;- Where do I start?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;All you need is one other person who wants to try. An excellent place to start looking is with your current team at work, or maybe you know some alumni who might be interested.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;- What should we read?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you (or your team) are struggling with something, in particular, you should start there. For example, &lt;a href="https://amzn.to/3uLSY8d"&gt;Clean Code&lt;/a&gt; and &lt;a href="https://amzn.to/3LsVZ3b"&gt;Refactoring&lt;/a&gt; are good candidates if code quality is lacking. &lt;a href="https://amzn.to/3gJgQ3R"&gt;Test-Driven Development&lt;/a&gt; should generate interesting discussions if the team is not practicing TDD. &lt;a href="https://amzn.to/3Lxv7iu"&gt;User Stories Applied&lt;/a&gt; if planning or story writing is problematic.&lt;/p&gt;

&lt;p&gt;Avoid programming books about specific programming languages or frameworks. Syntax or features are usually not that interesting (but don't disregard programming books like &lt;a href="https://amzn.to/3J0ya11"&gt;Seven Language in Seven Weeks&lt;/a&gt;, an excellent resource for paradigm comparison).&lt;/p&gt;

&lt;p&gt;Don't pick long and difficult programming books. Picking &lt;a href="https://amzn.to/3pVrxpa"&gt;The Art of Computer Programming&lt;/a&gt; is probably a poor choice because of its complexity and length.&lt;/p&gt;

&lt;p&gt;Remember, books are just opinions and interpretations of data. &lt;a href="https://www.programmingbooks.dev/articles/book_is_wrong"&gt;You don’t have to agree with the author&lt;/a&gt;. Just try to understand them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;- What do I need to prepare?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Decide on a programming book to read. If you have people already signed up, do some research on what interests them and make an educated guess of what you think will work. Then check with the group if they want to read it.&lt;/p&gt;

&lt;p&gt;Pick a day and time of the week and set aside at least 30 minutes or more for discussion. &lt;/p&gt;

&lt;p&gt;There will be times when not all can attend, and you need to decide what's most important, progress, or that everyone can participate.&lt;/p&gt;

&lt;p&gt;Keep the reading pace consistent. For example, if you usually read 20 pages a session, don't expect participants to read much more than that for any week. &lt;/p&gt;

&lt;p&gt;Have an accessible resource that clearly states what pages to read for which dates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;- What should my role be?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You should act as a moderator and help facilitate discussions. Ask questions to people. If some people talk more than others, ask the people that don't speak that much and give them space.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;- What if we are people with mixed skill levels?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Having different backgrounds will give different perspectives on a topic, which is good. Things that might be obvious to you are maybe not to others, and you can likely learn from their insights as well.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;- What if people don't like it?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If some people don't like the book circle, ask them why and adjust accordingly. Book circles are more fun if people attend and are engaged in the discussions. The goal is to learn together and encourage each other.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;- That's it?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As usual, there is no perfect formula, so you have to be a little agile about it and adapt to your members. So start your book circle, and let &lt;a href="https://twitter.com/cennydavidsson"&gt;me&lt;/a&gt; know how it goes!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>books</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>When programming books are wrong</title>
      <dc:creator>Cenny Davidsson</dc:creator>
      <pubDate>Sat, 12 Mar 2022 08:15:06 +0000</pubDate>
      <link>https://dev.to/cennydavidsson/when-programming-books-are-wrong-3eca</link>
      <guid>https://dev.to/cennydavidsson/when-programming-books-are-wrong-3eca</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;- I read a programming book on your &lt;a href="https://www.programmingbooks.dev"&gt;list&lt;/a&gt;, and I think the author is wrong.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;The point of reading a programming book is to learn. Disregarding an author’s opinion without reflection will yield little reward. However, there are often lessons to be learned even if you disagree.&lt;/p&gt;

&lt;p&gt;Look at the programming book &lt;a href="https://amzn.to/3uLSY8d"&gt;Clean Code&lt;/a&gt; by &lt;em&gt;Uncle Bob&lt;/em&gt;. A popular programming book from 2008 that uses Java, often a target of criticism like it is dated and not relevant anymore. Does that make it a poor book to learn principles and practices? Not at all! One only needs to consider the context surrounding the statement. Here is a sentence from the third chapter about functions.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The ideal number of arguments for a function is zero (niladic).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This statement makes no sense in Haskell (or lambda calculus) since all functions take one argument, and functions with zero arguments are illegal. Does that mean that the ideal function can not exist in Haskell?&lt;/p&gt;

&lt;p&gt;No, this is an unfair judgment. Uncle Bob wrote this book with an OOP (Object-Oriented Programming) perspective with examples in Java. The point is that many arguments can be complicated to use and understand. It can also be a smell of too many dependencies. &lt;/p&gt;

&lt;p&gt;Always try to see where the author is coming from and what lesson they are trying to teach. For example, the first chapter of &lt;a href="https://amzn.to/3uLSY8d"&gt;Clean Code&lt;/a&gt; says something important:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Books on art don’t promise to make you an artist. All they can do is give you some of the tools, techniques, and thought processes that other artists have used. So too this book cannot promise to make you a good programmer. It cannot promise to give you “code-sense.” All it can do is show you the thought processes of good programmers and the tricks, techniques, and tools that they use.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;- The examples contain bad and ugly code.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Programmers usually jump to code examples because we want to see how it works. &lt;/p&gt;

&lt;p&gt;One should not blatantly copy code examples. Examples are there to illustrate an idea. It is about showing you what the text is discussing.&lt;/p&gt;

&lt;p&gt;A great example of this is in the programming book &lt;a href="https://amzn.to/3h2oNlb"&gt;Design Patterns&lt;/a&gt; by &lt;em&gt;GoF&lt;/em&gt; (Gang of Four). I have seen people transcribe the examples in this book from C++ to their language of choice, and what they usually end up with is a more complex solution than is needed.&lt;/p&gt;

&lt;p&gt;The irony is that the definition of a design pattern stated earlier in the book (which is a quote from another book) says this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>beginners</category>
      <category>programming</category>
      <category>books</category>
    </item>
    <item>
      <title>Beginners and programming books</title>
      <dc:creator>Cenny Davidsson</dc:creator>
      <pubDate>Tue, 08 Mar 2022 11:56:35 +0000</pubDate>
      <link>https://dev.to/cennydavidsson/beginners-and-programming-books-227b</link>
      <guid>https://dev.to/cennydavidsson/beginners-and-programming-books-227b</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;- Don't know if I'm smart enough to be a programmer.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;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 continue reading.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;- I want to learn to code. Should I read programming books?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Reading programming books is an excellent way to learn new ideas and techniques. As a beginner, one must avoid picking a programming book that is too advanced.&lt;/p&gt;

&lt;p&gt;Popular programming books like &lt;a href="https://amzn.to/3HB5zhn"&gt;Clean Code&lt;/a&gt; and &lt;a href="https://amzn.to/3K0L8fo"&gt;Refactoring&lt;/a&gt; assume some experience. Beginners will have no reference to the subjects discussed in these books. Reading them too early will only confuse you instead of enlightening you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;- What book do you recommend to start with?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It's essential to make sure the programming book you chose is directed towards beginners. Programming books that assume you know some programming already should be avoided.&lt;/p&gt;

&lt;p&gt;I recommend buying any book that targets beginners with an easy language to learn. I would go with &lt;a href="https://amzn.to/3vAY8Ex"&gt;Ruby Programming for Beginners&lt;/a&gt; or &lt;a href="https://amzn.to/3MaUcQy"&gt;Python Crash Course&lt;/a&gt;. Javascript is not an easy programming language, but it's popular, so &lt;a href="https://amzn.to/3K8udY9"&gt;JavaScript Crash Course&lt;/a&gt; might also be an option. &lt;/p&gt;

&lt;p&gt;Note that relying solely on a programming book to learn programming can be unnecessarily burdensome.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;- What should I do then?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Find someone who can help you, a teacher, or anyone with some experience. It's essential to have someone to turn to when you get stuck or have questions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;- I don't know any programmers.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you don't know anyone who does programming professionally (or as a hobby), try finding a mentor on &lt;a href="https://codingcoach.io"&gt;codingcoach.io&lt;/a&gt;, or contact a local school offering programming courses.&lt;/p&gt;

&lt;p&gt;It is always good to join a local &lt;a href="https://www.meetup.com/"&gt;meetup.com&lt;/a&gt; group and get to know programmers in your town.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;- Okay, can I start reading now?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Programming is a craft, and you will learn from doing it more than reading about it. So, in addition to reading the introductory programming book you picked, make sure to do all exercises in it. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;- I'm done with the introductory programming book, but building something feels daunting.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Read &lt;a href="https://amzn.to/3pvGez5"&gt;Explain the Cloud Like I’m 10&lt;/a&gt;. It will demystify computers, apps, and networks.&lt;/p&gt;

&lt;p&gt;Your following programming book should be &lt;a href="https://amzn.to/3K3mfQd"&gt;Exercises for Programmers&lt;/a&gt;. It's language-agnostic and contains no solutions. The first exercise starts simple, and each following one introduces one new concept so that you won't get overwhelmed.&lt;/p&gt;

&lt;p&gt;Once you have completed &lt;a href="https://amzn.to/3K3mfQd"&gt;Exercises for Programmers&lt;/a&gt;, you should have more than enough experience to start building a hobby project. Avoid grandiose ideas of changing the world and pick something simple and small to develop, and let it grow with time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;- And after I've done all that?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Start reading the programming books under the &lt;a href="https://www.programmingbooks.dev/#apprentice"&gt;Apprentice&lt;/a&gt; section. Also, you should start applying for internships and get some real-life experience.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>books</category>
      <category>ruby</category>
      <category>python</category>
    </item>
  </channel>
</rss>
