<?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: Frank Puffer</title>
    <description>The latest articles on DEV Community by Frank Puffer (@fpuffer).</description>
    <link>https://dev.to/fpuffer</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%2F110582%2Fff558516-5280-405f-a049-6a5f49ce7b47.jpg</url>
      <title>DEV Community: Frank Puffer</title>
      <link>https://dev.to/fpuffer</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/fpuffer"/>
    <language>en</language>
    <item>
      <title>What makes you post on dev.to?</title>
      <dc:creator>Frank Puffer</dc:creator>
      <pubDate>Thu, 04 Apr 2019 17:59:51 +0000</pubDate>
      <link>https://dev.to/fpuffer/what-makes-you-post-on-dev-to-n6b</link>
      <guid>https://dev.to/fpuffer/what-makes-you-post-on-dev-to-n6b</guid>
      <description>&lt;p&gt;As for me, it is mostly because I am interested in feedback from outside the bubble of people I work with every day. (I have to admit that, if the topic is appropriate, I still prefer Stack Overflow and some other Stack Exchange communities because I can reach more people there. On the other hand, most interesting questions are off-topic there.)&lt;/p&gt;

&lt;p&gt;How about you? Especially those of you who put lots of work into uploading elaborate tutorials and essays.&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>meta</category>
      <category>writing</category>
    </item>
    <item>
      <title>OOP is great! And here is why!</title>
      <dc:creator>Frank Puffer</dc:creator>
      <pubDate>Sat, 15 Dec 2018 21:49:07 +0000</pubDate>
      <link>https://dev.to/fpuffer/oop-is-great-and-here-is-why-1o05</link>
      <guid>https://dev.to/fpuffer/oop-is-great-and-here-is-why-1o05</guid>
      <description>&lt;p&gt;My first impression of OOP, many years ago, coming from C programming: Cool, let's put everything into a class and declare some attributes. These are like global variables but without the bad smell. No more need to pass too many arguments around.&lt;/p&gt;

&lt;p&gt;It took me a few years to find out that this is not the real benefit of OOP.&lt;/p&gt;

&lt;p&gt;Unfortunately, when looking at OOP code today, many developers still seem to adhere to this mindset.&lt;/p&gt;

&lt;p&gt;Unfortunately this is how OOP is still being taught at schools.&lt;/p&gt;

</description>
      <category>oop</category>
      <category>programming</category>
      <category>coding</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Can we avoid the bullshit bubble?</title>
      <dc:creator>Frank Puffer</dc:creator>
      <pubDate>Wed, 12 Dec 2018 19:57:59 +0000</pubDate>
      <link>https://dev.to/fpuffer/how-can-we-avoid-the-bullshit-bubble-4fng</link>
      <guid>https://dev.to/fpuffer/how-can-we-avoid-the-bullshit-bubble-4fng</guid>
      <description>&lt;p&gt;A lot of software development deals with integrating some badly designed system with another badly designed system, resulting in a system that is even worse to use and to maintain. At least that's what I have been observing during the last few years, mainly in the domain of so-called enterprise software.&lt;/p&gt;

&lt;p&gt;Why is that? I am not sure but I guess it's because it generates revenue. It makes sense from an economical point of view. Crappy software is simply a sustainable source of income for some of us.&lt;/p&gt;

&lt;p&gt;But is it healthy for the developers or the users? Even though it might sometimes be highly intellectually challenging to work on this type of project, I guess that most of us are not interested in doing just another bullshit job. Furthermore, this effect is bad for the reputation of our profession as a whole.&lt;/p&gt;

&lt;p&gt;Did you make the same observation? Is there a way out?&lt;/p&gt;

&lt;p&gt;(By the way, luckily most of my own projects do not belong to this category, however some of them do.)&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>motivation</category>
      <category>programming</category>
      <category>career</category>
    </item>
    <item>
      <title>What makes companies switch from SVN to Git?</title>
      <dc:creator>Frank Puffer</dc:creator>
      <pubDate>Sat, 24 Nov 2018 21:56:55 +0000</pubDate>
      <link>https://dev.to/fpuffer/what-makes-companies-switch-from-svn-to-git-3687</link>
      <guid>https://dev.to/fpuffer/what-makes-companies-switch-from-svn-to-git-3687</guid>
      <description>&lt;p&gt;The pros and cons of Git and SVN have been discussed abundantly for many years. So what makes me ask this question anyway? Most discussions compare certain technical aspects in detail but do not ask how relevant these actually are. I like to take the discussion to a more pragmatic level.&lt;/p&gt;

&lt;p&gt;Let's face it. Most professional developers, including myself, are not really interested in version control. Of course they are aware that it is neccessary but they want to interact with it as little as possible and focus on their actual work instead. It is something that should more or less happen in the background. And of course as an employer you don't want the precious time of your developers to be spent on non productive stuff.&lt;/p&gt;

&lt;p&gt;When comparing SVN with Git, it is pretty safe to say that the latter is much more complex. More things can go wrong. And they will go wrong and cost money.&lt;/p&gt;

&lt;p&gt;Two examples:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;In SVN there is your local data and a central repository. That's easy to understand and there is a single source of truth. In Git, there are multiple repositories. A local one and potentially multiple remote ones. But that's not all. There is also a staging area and a stash. While all of this makes sense theoretically, it gives the developer a lot of things to keep in mind. It definitely adds complexity to her life.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In SVN, commits have simple consecutive numbers while in Git there are 40 digit hashes. I understand that in a distributed version control system, a numbering scheme like in SVN is not possible. But then, who really needs distributed version control? Is being able to work offline really such a big deal nowadays?&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You could add more items to this list, for example the cryptic command line interface of Git or the possibility to modify history.&lt;/p&gt;

&lt;p&gt;So why do companies keep switching from SVN to Git and not the other way round?&lt;/p&gt;

</description>
      <category>git</category>
      <category>productivity</category>
      <category>svn</category>
      <category>vcs</category>
    </item>
    <item>
      <title>Should Coding be Trivial?</title>
      <dc:creator>Frank Puffer</dc:creator>
      <pubDate>Sun, 11 Nov 2018 15:43:38 +0000</pubDate>
      <link>https://dev.to/fpuffer/should-coding-be-trivial-402b</link>
      <guid>https://dev.to/fpuffer/should-coding-be-trivial-402b</guid>
      <description>&lt;p&gt;This morning I listened to an interview with Leslie Lamport, a computer scientist who is also known as the initial developer of LaTeX.&lt;/p&gt;

&lt;p&gt;One of his statements was that coding should be trivial. The complex stuff should be dealt with before coding, by writing specifications, by creating diagrams and by the use of modeling tools. &lt;/p&gt;

&lt;p&gt;This is not the first time I hear such a statement. In fact I keep hearing them again and again. For quite a while I believed that this is the right approach to software development myself.&lt;/p&gt;

&lt;p&gt;It just doesn't work, at least not effectively. And there are reasons for that.&lt;/p&gt;

&lt;p&gt;When coding, you have excellent tools that provide instant feedback:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;An IDE with syntax checking search functionality, autocompletion, refactoring tools and so on.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A compiler and linker or an interpreter that provide more or less descriptive error messages and warnings.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Debugging tools&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Static analysis tools&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Unit tests&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These tools help you doing the right things and prevent you from creating bullshit.&lt;/p&gt;

&lt;p&gt;When writing specificaltions or other design documents it is completely different. Your word processor doesn't care if what you type make sense. Neither does your favoutite diagramming tool. You have no feedback. As a result there will be errors in the design. These errors will only be found during implementation. (Normally the design documents will not even be updated, but that's another story.)&lt;/p&gt;

&lt;p&gt;Now some people argue that the lack of feedback can be resolved by using modeling tools instead of word processors and diagramming programs.&lt;/p&gt;

&lt;p&gt;There are modeling tools that seem to work well for specific tasks. Probably for relational database design. Maybe for state machine definition in embedded systems design. But I have not seen any modeling tool for general software development that comes even close to providing the benefits listed above. These things have been promised for at least 30 years and still don't seem to exist.&lt;/p&gt;

&lt;p&gt;But what makes people so afraid of code? I don't know, but these possible reasons come to my mind:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;This is what I call the &lt;em&gt;write-only code&lt;/em&gt; mindset. People see code as the final product of the software industry. In most other industries, final products are extremely expensive to modify. I agree that this can also be the case with code - if the code is a mess - but it shouldn't be that way. That's why we have refactoring and code reviews.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;People obsessed with design documents often don't code themselves or haven't coded for a very long time. Their notion of coding is like writing assembly instructions, maybe C or Fortran. They don't know about the level of abstraction and the expressiveness that modern languages offer with features like interfaces, modules, generics or higher order functions.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I don't argue against planning parts of the design before coding. I also understand that design documents are useful to communicate, especially with people who don't code. My point is that it is more efficient to do as much as possible in code and use external documents only if required.&lt;/p&gt;

&lt;p&gt;Of course this only works if you take measures that prevent your code from turning into a mess. The most obvious are refactorings, code reviews, standards and of course coders that know what they are doing.&lt;/p&gt;

&lt;p&gt;Note: These issues are less severe in agile development because the cycles are smaller but they still exist.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>productivity</category>
      <category>design</category>
      <category>discuss</category>
    </item>
  </channel>
</rss>
