<?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: marcellusherlus</title>
    <description>The latest articles on DEV Community by marcellusherlus (@marcellusherlus).</description>
    <link>https://dev.to/marcellusherlus</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%2F373471%2F02072dd9-ebfc-4003-874a-d6be109f2602.png</url>
      <title>DEV Community: marcellusherlus</title>
      <link>https://dev.to/marcellusherlus</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/marcellusherlus"/>
    <language>en</language>
    <item>
      <title>Question about mind shift in developer teams</title>
      <dc:creator>marcellusherlus</dc:creator>
      <pubDate>Mon, 24 Aug 2020 13:43:04 +0000</pubDate>
      <link>https://dev.to/marcellusherlus/question-about-mind-shift-in-developer-teams-4ojc</link>
      <guid>https://dev.to/marcellusherlus/question-about-mind-shift-in-developer-teams-4ojc</guid>
      <description>&lt;p&gt;About a year ago I joined a new company and quickly started to realize, that there is room for improvement in the community -especially regarding knowledge exchange between the developers.&lt;/p&gt;

&lt;p&gt;So I tried to initialize a Hackathon, which was quite okay but after that, there were no further interest in this topic.&lt;/p&gt;

&lt;p&gt;I eventually founded  "Guilds" with some other colleagues, where we either try to figure out actual problems we could solve to be more productive, or we just exchange experience and make presentations about interesting topics we'd like to share.&lt;/p&gt;

&lt;p&gt;We have guilds like "Architecture", "Coding Standards", "Testing", "Backend Devs", "Frontend Devs", "DevOps".&lt;/p&gt;

&lt;p&gt;While the start was really good and productive (finding topics we want to discuss and find pain points each developer has at the moment). It now shifted in a way, that there are alway the same 5 colleagues who are motivated to talk in this guilds and to work something out for the next sessions.&lt;/p&gt;

&lt;p&gt;All the other attendees are more like the typical members in a group work. (They just listen and think it's very important what we are doing &lt;strong&gt;but never want to contribute to anything)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: We are currently 12 developer teams with approx. 40 developers in total.&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;So my question to you is, did you ever have a similar problems at a company?&lt;/p&gt;

&lt;p&gt;Did you find a solution to improve the mindset of your colleagues?&lt;/p&gt;

&lt;p&gt;Thanks in advance :) &lt;/p&gt;

&lt;p&gt;Marcel&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>challenge</category>
      <category>motivation</category>
      <category>help</category>
    </item>
    <item>
      <title>Short introduction into common programming paradigms</title>
      <dc:creator>marcellusherlus</dc:creator>
      <pubDate>Fri, 22 May 2020 13:53:56 +0000</pubDate>
      <link>https://dev.to/marcellusherlus/short-introduction-into-common-programming-paradigms-4k06</link>
      <guid>https://dev.to/marcellusherlus/short-introduction-into-common-programming-paradigms-4k06</guid>
      <description>&lt;p&gt;&lt;em&gt;This article was originally posted at:&lt;br&gt;
&lt;a href="https://kindred.one/2020/05/22/Programming-Paradigms"&gt;https://kindred.one/2020/05/22/Programming-Paradigms&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is my first post on a platform ever and it has several goals for myself.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Firstly I’m not a fluent english speaker (I’m from Germany ) so I want to train my english with posts like this and I will hopefully find the motivation to write more in the future&lt;/li&gt;
&lt;li&gt;Secondly I have seen that I’m quite unfamiliar with programming paradigms and working on this article has forced me to dig deeper into that topic&lt;/li&gt;
&lt;li&gt;Last but not least I hope that I can help some of you guys to get a basic understanding of different paradigms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So let’s start our journey.&lt;br&gt;
&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  The Term Paradigm
&lt;/h2&gt;

&lt;p&gt;Often used in scientific fields or the business world, it defines a thinking approach and different procedures to solve specific problems.&lt;/p&gt;

&lt;p&gt;Let me explain it using an example:&lt;/p&gt;

&lt;p&gt;A common paradigm is to lecture the students, drown them in theories, books and paperwork.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;paradigm shift&lt;/strong&gt; would be, if you now get a new cool teacher who lets your class work and solve problems in groups and through cooperating.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you change paradigms you change the way you think about a specific problem.&lt;/strong&gt;&lt;br&gt;
&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Programming Paradigms
&lt;/h2&gt;

&lt;p&gt;Are a way to classify different programming languages. There are different ways to do so.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Evaluate the syntax and grammar of a language&lt;/li&gt;
&lt;li&gt;Evaluate the logical structure of a program (how the code is organised)&lt;/li&gt;
&lt;li&gt;And &lt;a href="https://en.wikipedia.org/wiki/Programming_paradigm"&gt;some more&lt;/a&gt;

&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Why do we have/need different paradigms?
&lt;/h2&gt;

&lt;p&gt;As I mentioned before, a paradigm is just a way of looking and thinking about a problem. There will always be the possibility to solve a problem with another paradigm.&lt;/p&gt;

&lt;p&gt;Additionally it might be, that one paradigm may be better, more efficient or just easier for solving a given problem.&lt;/p&gt;

&lt;p&gt;I found a very good &lt;a href="https://blog.redelastic.com/what-is-reactive-programming-bc9fa7f4a7fc"&gt;blog post&lt;/a&gt;  about a specific paradigm shift and why it was needed.&lt;br&gt;
&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Basic Paradigms
&lt;/h2&gt;

&lt;p&gt;There is a plethora (a new word i’ve learned yay! &amp;lt;(^ . ^)&amp;gt;) of programming paradigms out there and I will cover some of the basic ones, which are luckily just a few.&lt;/p&gt;

&lt;p&gt;In General there are two main paradigms, while each following paradigm is a subset of one of them.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Imperative&lt;/strong&gt; (Give a step by step instruction on what to do ➝ HOW to solve a specific problem)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Declarative&lt;/strong&gt; (Give the task to be solved ➝ WHAT we want to be solved)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is a great &lt;a href="https://stackoverflow.com/a/1784702/13301308"&gt;answer&lt;/a&gt; with code examples.&lt;br&gt;
&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Examples of imperative languages
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;C++&lt;/li&gt;
&lt;li&gt;C#&lt;/li&gt;
&lt;li&gt;Pascal&lt;/li&gt;
&lt;li&gt;Java&lt;/li&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;Swift&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/List_of_programming_languages_by_type#Imperative_languages"&gt;Source&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Examples of declarative languages
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;SQL&lt;/li&gt;
&lt;li&gt;Prolog&lt;/li&gt;
&lt;li&gt;Curry&lt;/li&gt;
&lt;li&gt;Regular Expressions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/List_of_programming_languages_by_type#Declarative_languages"&gt;Source&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Other Paradigms
&lt;/h2&gt;

&lt;p&gt;As mentioned before, you can assign other ‘sub-paradigms’ to one of the two main paradigms (imperative, declarative).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Imperative

&lt;ul&gt;
&lt;li&gt;Structured&lt;/li&gt;
&lt;li&gt;Procedural&lt;/li&gt;
&lt;li&gt;Object oriented&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Declarative

&lt;ul&gt;
&lt;li&gt;Functional&lt;/li&gt;
&lt;li&gt;Logic

&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Structured
&lt;/h3&gt;

&lt;p&gt;Add simple program flow structures to the coding syntax. The most popular and frequent structures that come with this paradigm are &lt;strong&gt;iteration&lt;/strong&gt;, &lt;strong&gt;selection&lt;/strong&gt; and &lt;strong&gt;subroutines&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Iteration&lt;/strong&gt; A control structure that allows some lines of code to be executed many times (while/ for loops)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Selection&lt;/strong&gt; A control structure where the program chooses between two or more options. (if blocks)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Subroutines&lt;/strong&gt; A control structure that defines callable units (methods, functions, classes)

&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Procedural
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Procedural_programming"&gt;Some say&lt;/a&gt; the &lt;strong&gt;Procedural&lt;/strong&gt; paradigm derives from the &lt;strong&gt;Structured&lt;/strong&gt; paradigm.&lt;/p&gt;

&lt;p&gt;Since the borders between this two paradigms are unclear I would rather not cover &lt;strong&gt;Procedural&lt;/strong&gt; to not mess things up.&lt;/p&gt;

&lt;p&gt;But if you are interested in that, take a look &lt;a href="https://softwareengineering.stackexchange.com/questions/117092/whats-the-difference-between-imperative-procedural-and-structured-programming"&gt;here&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&lt;br&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Object Oriented
&lt;/h3&gt;

&lt;p&gt;Object-oriented programming (OOP) is by far the most known programming paradigm.&lt;/p&gt;

&lt;p&gt;It based on the concept of “objects”, which may contain data in the form of fields (attributes) and methods.&lt;/p&gt;

&lt;p&gt;For example, a cat is an object which has certain attributes such as size, race, age, etc. It also has certain methods such as jump, eat, run and so on.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Cat

  float size
  char race
  int age

  function jump(height: int)
    # Code for jumping

  function run(speed: int)
    # Code for running
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To interact with a cat you just need to create one and call it’s functions&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class CatSimulator2000

  Cat leo = new Cat()
  leo.jump(20)
  leo.run(10)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;h3&gt;
  
  
  Functional
&lt;/h3&gt;

&lt;p&gt;Although the functional paradigm is a prehistoric rock it got quite more attention with the rise of multi-core processing. Through them the interest in functional programs that support concurrency more readily has increased.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Principles&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One of the main concepts in functional programming is the elimination of side effects and hidden impacts in a code base. To achieve that there are some rules to follow.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Immutable State &amp;amp; Variables&lt;/li&gt;
&lt;li&gt;Higher Order Functions&lt;/li&gt;
&lt;li&gt;Recursion instead of Loops&lt;/li&gt;
&lt;li&gt;Pure Functions&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Since this topic is too big to cover in this brief overview, I recommend you to read this &lt;a href="https://www.keycdn.com/blog/functional-programming"&gt;post&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Logic
&lt;/h3&gt;

&lt;p&gt;This one would exceed the scope I have set myself for this post, but I would like to refer you to this &lt;a href="https://hackernoon.com/try-logic-programming-with-c-compiler-602a8977406f"&gt;article&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;There are a lot of different paradigms out there,  but only a few are used frequently. In software projects you will mostly see OOP and functional programming languages in production. If you encounter other ones, they will be at least some sub-form of imperative or declarative.&lt;/p&gt;

&lt;p&gt;It’s worth mentioning that a lot of programming languages can be assigned to one ore more paradigm. We call that &lt;a href="https://en.wikipedia.org/wiki/Comparison_of_multi-paradigm_programming_languages#Language_overview"&gt;multi-paradigm languages&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I hope I was able to provide you with a basic overview about some of the classic programming paradigms. If you’re brave and want to learn everything about the paradigms in the world then one of the following links could be a good starting point.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/List_of_programming_languages_by_type"&gt;https://en.wikipedia.org/wiki/List_of_programming_languages_by_type&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Programming_paradigm"&gt;https://en.wikipedia.org/wiki/Programming_paradigm&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Feedback is welcome :)&lt;/em&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>writing</category>
      <category>blogging</category>
      <category>coding</category>
    </item>
  </channel>
</rss>
