<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>admin, Autor bei voltage IT</title>
	<atom:link href="https://voltage-it.com/en/author/admin/feed/" rel="self" type="application/rss+xml" />
	<link>https://voltage-it.com/author/admin/</link>
	<description>Mit agilem Softwareengineering  das Business gestalten.</description>
	<lastBuildDate>Mon, 26 Apr 2021 09:01:09 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.5.6</generator>

<image>
	<url>https://voltage-it.com/wp-content/uploads/2021/03/cropped-favicon-rund-voltage-it-32x32.png</url>
	<title>admin, Autor bei voltage IT</title>
	<link>https://voltage-it.com/author/admin/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Why agile software development is the perfect approach for IoT projects</title>
		<link>https://voltage-it.com/en/why-agile-software-development-is-the-perfect-approach-for-iot-projects/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 26 Apr 2021 09:01:07 +0000</pubDate>
				<category><![CDATA[internet of things]]></category>
		<category><![CDATA[Software Architecture]]></category>
		<guid isPermaLink="false">https://voltage-it.com/?p=1269</guid>

					<description><![CDATA[<p>One challenge for development teams in IoT projects is to cover a wide range of capabilities in areas such as hardware, networks, security, cloud platforms, analytics, artificial intelligence, and interfaces (API).</p>
<p>Der Beitrag <a href="https://voltage-it.com/en/why-agile-software-development-is-the-perfect-approach-for-iot-projects/">Why agile software development is the perfect approach for IoT projects</a> erschien zuerst auf <a href="https://voltage-it.com/en/">voltage IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="et_pb_section et_pb_section_0 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_0">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_0  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_0  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p><b>Although agile principles are widely used in software development today, many IoT projects are still implemented in the traditional (increasingly outdated) way. As a result, many IoT projects take much longer than planned or even fail completely.</b></p>
<p><span style="font-weight: 400;">One challenge for development teams in IoT projects is to cover a wide range of capabilities in areas such as hardware, networks, security, cloud platforms, analytics, artificial intelligence, and interfaces (API). These capabilities have traditionally been highly siloed in most organizations. In many cases, sharing and collaboration between &#8220;silos of responsibility&#8221; works in a very limited way, if at all. A common vision is missing.</span></p>
<p><span style="font-weight: 400;">However, in IoT projects, development teams need to work in an integrated way towards a common goal. This is one of the main reasons why traditional IoT development using waterfall methods reaches its limits. This starts with project control: an IoT project that is planned and controlled using methods and tools of traditional project management, such as GANTT charts, sooner or later gets out of hand and, in the worst case, ends up in chaos. This is what our experience shows.</span></p></div>
			</div><div class="et_pb_module et_pb_image et_pb_image_0">
				
				
				
				
				<span class="et_pb_image_wrap "><img fetchpriority="high" decoding="async" width="594" height="432" src="https://voltage-it.com/wp-content/uploads/2021/04/Agile-collaboration-instead-of-responsibility-silos.png" alt="" title="Agile collaboration instead of responsibility silos" srcset="https://voltage-it.com/wp-content/uploads/2021/04/Agile-collaboration-instead-of-responsibility-silos.png 594w, https://voltage-it.com/wp-content/uploads/2021/04/Agile-collaboration-instead-of-responsibility-silos-480x349.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 594px, 100vw" class="wp-image-1276" /></span>
			</div><div class="et_pb_module et_pb_text et_pb_text_1  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p style="text-align: center;"><b>Teams in IoT development: Agile collaboration instead of responsibility silos</b></p></div>
			</div><div class="et_pb_module et_pb_text et_pb_text_2  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><blockquote>
<p><span style="font-weight: 400;">“</span><i><span style="font-weight: 400;">Projects implemented with Agile show a 64% success rate as compared to 49% for the projects implemented with traditional methodologies.</span></i><span style="font-weight: 400;">” &#8211;</span><a href="https://www.informationweek.com/devops/why-iot-development-is-heading-to-agile/a/d-id/1334647"><span style="font-weight: 400;">Boris Shiklo, CTO at ScienceSoft.</span></a></p>
</blockquote>
<p><span style="font-weight: 400;">Agile software development focuses on value creation instead of implementing specific functions. Along value chains, small working parts of the software are created in iterations instead of working towards a complete product (as a sum of functions). In software development, this offers the great advantage that users can provide feedback and change requirements during the development phase without putting the entire project in jeopardy. </span></p>
<p><span style="font-weight: 400;">This is particularly crucial in IoT projects, as the technical requirements and the interaction between various disciplines and areas of responsibility are usually much more complex than in &#8220;normal&#8221; software projects.</span></p>
<blockquote>
<p><span style="font-weight: 400;">“</span><i><span style="font-weight: 400;">IoT projects are successful only if everyone involved works on a common vision. Thinking in silos of responsibility does not lead to success.</span></i><span style="font-weight: 400;">” &#8211; Igor Pshul, Solution Architect.</span></p>
</blockquote>
<p><a href="https://agilemanifesto.org/iso/de/principles.html"><b>Agile Software Manifesto (2001)</b></a> <span style="font-weight: 400;">&#8211; excerpt</span></p>
<ul>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Working software is more important than comprehensive documentation</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Individuals and interactions are more important than processes and tools</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Collaboration with customers is more important than contract negotiation</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Responding to change is more important than following a plan</span></li>
</ul>
<p><span style="font-weight: 400;">In IoT projects, where teams from various areas of the architecture &#8211; frontend, middleware and hardware &#8211; have to work together in an integrated manner, smooth interaction between individuals is crucial &#8211; communication is a critical factor for success. To ensure optimal interaction, there needs to be a willingness within the team to follow a common vision, on the one hand, and project management that establishes collaboration across responsibility lines, on the other.</span></p>
<p>&nbsp;</p>
<h2><span style="color: #800080;">The role of the project manager in agile IoT projects</span></h2>
<p><span style="font-weight: 400;">The success of IoT projects depends on the interaction between developers from different areas of the IoT architecture. This also changes the role of project management &#8211; away from tasks and timelines to people. &#8220;People management&#8221; instead of &#8220;project management&#8221;.</span></p>
<p><span style="font-weight: 400;">The project management goal in IoT projects is to enable developers to take on changing roles in agile teams in any situation &#8220;Project managers&#8221; &#8211; whether &#8220;product owners&#8221; or &#8220;scrum masters&#8221; &#8211; must be able to dynamically control roles and competencies in their teams and create the conditions to ensure that interaction between developers and the teams runs smoothly at all times. </span></p>
<blockquote>
<p><span style="font-weight: 400;">“</span><i><span style="font-weight: 400;">Now it’s a team sport to the extreme [&#8230;]. We have many more releases, but the prototypes are smaller and there are many more components.</span></i><span style="font-weight: 400;">.” &#8211;</span><a href="https://www.oreilly.com/content/creating-functional-teams-for-the-iot/"> <span style="font-weight: 400;">Harel Kodesh, former CTO at GE Software.</span></a></p>
</p>
</blockquote>
<h2><span style="color: #800080;">Shared vision &amp; vertical orientation in the team</span></h2>
<p><span style="font-weight: 400;">In times when technologies and requirements for software systems are changing faster and faster, architectures are also changing &#8211; moving away from individual functions (horizontally) in monoliths to value chains (vertically) in modular systems. Accordingly, the organization of teams in IoT projects must also be vertically oriented. Instead of specialized teams for the development of separate functions, cross-functional teams are created to implement the features of a value chain. </span></p>
<p><span style="font-weight: 400;">The challenge for project managers, especially in companies that traditionally &#8221; think horizontally,&#8221; is to establish a vertical orientation in the team (and in the product). This requires an agile culture and a shared vision for the product and the path leading to the result. If this culture and vision are missing in the team (or even only among individual developers), friction is inevitable and the risk of failure is extremely high.</p>
<p></span></p>
<h2><span style="color: #800080;">Overcoming communication barriers</span></h2>
<p><span style="font-weight: 400;">In an ideal IoT project, developers from all areas of the system architecture work together in agile teams. In practice, however, especially in international projects, different languages, time zones, cultures, and ways of working can make collaboration and exchange difficult, and in the worst case even impossible. Here, project management has to build bridges. </span></p>
<p><span style="font-weight: 400;">Creative workarounds are often needed to resolve communication blockades between teams. Here&#8217;s an example from our practice: If collaboration between the software (frontend, middleware) and hardware (firmware) departments is poor &#8211; for example, because different languages, cultures, time zones, etc. clash &#8211; then project management may have to work with the software team to find ways to develop without access to the hardware. One solution, for example, is to simulate the hardware with the help of a digital twin.</span></p></div>
			</div><div class="et_pb_module et_pb_image et_pb_image_1">
				
				
				
				
				<span class="et_pb_image_wrap "><img decoding="async" width="531" height="484" src="https://voltage-it.com/wp-content/uploads/2021/04/Digital-twin-helps-neutralize-communication-barriers.png" alt="" title="Digital twin helps neutralize communication barriers" srcset="https://voltage-it.com/wp-content/uploads/2021/04/Digital-twin-helps-neutralize-communication-barriers.png 531w, https://voltage-it.com/wp-content/uploads/2021/04/Digital-twin-helps-neutralize-communication-barriers-480x438.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 531px, 100vw" class="wp-image-1278" /></span>
			</div><div class="et_pb_module et_pb_text et_pb_text_3  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p style="text-align: center;"><b>Example: Digital twin helps neutralize communication barriers</b></p></div>
			</div><div class="et_pb_module et_pb_text et_pb_text_4  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><span style="font-weight: 400;">Such a workaround via simulation using a digital twin allows project blockages to be eliminated pragmatically, even if the development of a digital twin was never planned in the first place. However, this only makes sense if the effort is in an appropriate ratio to the reduction of communication friction and thus to an increase in the speed of development in the project.</span></p>
<p><span style="font-weight: 400;">In addition, developers from the software team must be able to simulate the hardware. This calls for true full-stack development that goes beyond the scope of &#8220;standard&#8221; software development. That is why we at voltage IT stand for holistic full-stack development instead of development in responsibility and competence clusters.</span></p>
<h2><span style="color: #800080;">Our Vision: 100% Holistic Development in Autonomous Teams</span></h2>
<p><span style="font-weight: 400;">Software development is a team sport, not a solitary discipline. IoT projects are only successful if competencies within and between the teams involved are managed well, strengths are combined, and responsibilities are bundled. The aim is to assemble teams that can solve problems autonomously. The challenge for project owners is to find the ideal balance between control and autonomy. </span></p>
<p><span style="font-weight: 400;">At voltage IT we follow these principles:</span></p>
<ul>
<li style="font-weight: 400;" aria-level="1"><b>Responsibilities &amp; accountabilities follow objectives, not roles in the team<br />
</b><span style="font-weight: 400;">Agile software development is oriented towards value creation instead of features. Responsibilities &amp; accountabilities in the team are distributed in such a way that the features of a value chain can be implemented quickly and efficiently. For this purpose, classic roles and responsibilities may have to be broken up. Specialized teams are replaced by cross-functional teams in which the necessary competencies are combined in the best possible way.</span></li>
</ul>
<ul>
<li style="font-weight: 400;" aria-level="1"><b>Full-stack development and competencies in the team, not in individuals<br />
</b><span style="font-weight: 400;">If competencies are distributed evenly among as many project participants as possible, it is easier and more flexible to form agile teams that are able to develop autonomously. In addition, the distribution of competencies reduces the project risk due to the failure of individual developers (&#8220;bus factor&#8221;). </span></li>
</ul>
<ul>
<li style="font-weight: 400;" aria-level="1"><b>Using agile methods, such as pair programming, to increase autonomy<br />
</b><span style="font-weight: 400;">Autonomous teams are able to respond to new project requirements and find solutions on their own. In addition, autonomous teams can continuously ensure the quality of development with the help of agile working methods and tools. At voltage IT, we rely on &#8220;pair programming&#8221;, where developers work together in pairs, develop simultaneously and check quality. </span></li>
</ul>
<ul></ul>
<h2><span style="color: #800080;">Conclusion: Agile development is perfect for IoT projects</span></h2>
<p><span style="font-weight: 400;">Just as applications in the IoT are organized in a decentralized manner, software development must also be organized decentrally. Agile leadership takes the place of traditional project management based on the waterfall principle. Cross-functional teams work autonomously and holistically along value chains, instead of working off functional requirements in an externally determined and tightly meshed manner At voltage IT, this is not just a vision and a claim, but a successful reality in complex IoT projects.</span></p>
<h4><span style="color: #800080;">Worth reading</span></h4>
<ul>
<li aria-level="1"><a href="https://www.scrum.org/resources/blog/how-much-autonomy-should-teams-get-their-agile-leader"><b>How Much Autonomy Should Teams get from Their Agile Leader?</b></a> <span style="font-weight: 400;">(scrum.org)</span></li>
</ul>
<ul>
<li aria-level="1"><a href="https://www.youtube.com/watch?v=8OKdilyNOIg"><b>Allen Holub on Software Craftsmenship and agile Principles</b></a> <span style="font-weight: 400;">(Video)</span></li>
</ul>
<p><b></b></p>
<h4><span style="color: #800080;">Need help? Let’s talk!</span></h4>
<p><span style="font-weight: 400;">For many years we aim to enable companies to make the right IT decisions and to get software systems they sustainably benefit from and manage themselves in the long term. Our mission: Building &#8220;reasonable&#8221; solutions beyond technology hype.</span></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div>
<p>Der Beitrag <a href="https://voltage-it.com/en/why-agile-software-development-is-the-perfect-approach-for-iot-projects/">Why agile software development is the perfect approach for IoT projects</a> erschien zuerst auf <a href="https://voltage-it.com/en/">voltage IT</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Stop &#8220;quick &#038; dirty&#8221;! Now is the time to return to &#8220;reasonable&#8221; software development</title>
		<link>https://voltage-it.com/en/stop-quick-dirty-now-is-the-time-to-return-to-reasonable-software-development/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 13 Apr 2021 12:48:05 +0000</pubDate>
				<category><![CDATA[Software Architecture]]></category>
		<guid isPermaLink="false">https://voltage-it.com/?p=1199</guid>

					<description><![CDATA[<p>"Quick &#38; dirty" software development saves time short-term, but can do more harm than good in the long run This calls for rethinking software development and returning to quality craftsmanship. Learn here what it takes to achieve this.</p>
<p>Der Beitrag <a href="https://voltage-it.com/en/stop-quick-dirty-now-is-the-time-to-return-to-reasonable-software-development/">Stop &#8220;quick &amp; dirty&#8221;! Now is the time to return to &#8220;reasonable&#8221; software development</a> erschien zuerst auf <a href="https://voltage-it.com/en/">voltage IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="et_pb_section et_pb_section_1 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_1">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_1  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_5  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p><b>&#8220;Quick &amp; dirty&#8221; software development saves time short-term, but can do more harm than good in the long run This calls for rethinking software development and returning to quality craftsmanship. Learn here what it takes to achieve this.</b></p>
<p>Software that is developed quickly but poorly causes immense damage worldwide &#8211; most of it through software failures in operation. <a href="https://www.it-cisq.org/the-cost-of-poor-software-quality-in-the-us-a-2020-report.htm"><span>According to studies</span></a>, the cost of failures due to poor software quality in the US was $1.56 trillion in 2020. This is 10 times more expensive than preventing or fixing errors in development before the software goes live.</p>
<p>As software evolves and grows, its architecture tends to become more complex. This makes maintaining the software difficult and error-prone. Moreover, if design, architecture and source code are poorly crafted from the beginning, sooner or later every adjustment, no matter how small it is, can become a nightmare for product owners and developers.<span class="Apple-converted-space"> </span></p>
<p>The challenge for developers is to avoid errors in the programming code or to detect bugs as early as possible so that they can be fixed at relatively low cost. To achieve this, software craftsmanship and quality management must interact closely from the very first line of code. The basis for high-quality and sustainable software is already laid in code line 1.<span class="Apple-converted-space"> </span></p>
<p>Reasonable software development aims to balance speed and quality in the best possible way. The key is in good software design, created sustainably rather than &#8220;quick &amp; dirty&#8221;.</p>
<h4><span style="color: #800080;">Basic Values of our Software Craftsmanship</span></h4>
<ul>
<li><b>Quality:</b> Software should not only work, but also be well crafted</li>
<li><b>Added value:</b> We do not only react to changes, but constantly add value</li>
<li><b>Team:</b> Not individuals create great results, but a community of professionals</li>
<li><b>Cooperation</b>: Productive partnerships instead of just cooperation with customers</li>
</ul>
<p><span>Source: <a href="https://manifesto.softwarecraftsmanship.org/">manifesto.softwarecraftsmanship.org</a></span></p>
<h2><span style="color: #800080;"><br />Deliver complex software quickly and at top quality</span></h2>
<p>Thanks to advanced tools and methods, software code is nowadays published faster than ever before. This allows companies to develop new features in less time. At the same time, the complexity of functions is growing, which used to take much more time for development and testing than it does today. However, this positive trend reaches its limits when software quality suffers from time pressure and complex requirements.<span class="Apple-converted-space"> </span></p></div>
			</div><div class="et_pb_module et_pb_image et_pb_image_2">
				
				
				
				
				<span class="et_pb_image_wrap "><img loading="lazy" decoding="async" width="617" height="432" src="https://voltage-it.com/wp-content/uploads/2021/04/reasonable-software-development.png" alt="" title="reasonable-software-development" srcset="https://voltage-it.com/wp-content/uploads/2021/04/reasonable-software-development.png 617w, https://voltage-it.com/wp-content/uploads/2021/04/reasonable-software-development-480x336.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 617px, 100vw" class="wp-image-1211" /></span>
			</div><div class="et_pb_module et_pb_text et_pb_text_6  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p><b>The challenge: </b>The faster companies develop new functions, the more difficult it is to ensure software quality and reliability. Very short testing cycles increase the risk that more errors will go undetected and find their way into production. Depending on the frequency and scope of software customizations, these errors accumulate and sooner or later let software design and architecture erode. The cost of finding and fixing bugs in a rotten system increases with each customization.</p>
<p><b>The cost of an error in the software development process</b></p>
<p>Finding and fixing critical software bugs during operation is <a href="https://www.it-cisq.org/the-cost-of-poor-software-quality-in-the-us-a-2020-report.htm"><span>10 times more expensive</span></a> than finding and fixing them before the software is put into operation. It is therefore worth investing in the prevention of errors through clean code and good software design at the beginning, instead of developing &#8220;quick &amp; dirty&#8221; under time pressure.</p></div>
			</div><div class="et_pb_module et_pb_image et_pb_image_3">
				
				
				
				
				<span class="et_pb_image_wrap "><img loading="lazy" decoding="async" width="1134" height="654" src="https://voltage-it.com/wp-content/uploads/2021/04/SDLC-costs.png" alt="" title="SDLC costs" srcset="https://voltage-it.com/wp-content/uploads/2021/04/SDLC-costs.png 1134w, https://voltage-it.com/wp-content/uploads/2021/04/SDLC-costs-980x565.png 980w, https://voltage-it.com/wp-content/uploads/2021/04/SDLC-costs-480x277.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1134px, 100vw" class="wp-image-1215" /></span>
			</div><div class="et_pb_module et_pb_text et_pb_text_7  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p style="text-align: center;">Source: altexsoft.com</p></div>
			</div><div class="et_pb_module et_pb_text et_pb_text_8  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h2><span style="color: #800080;">The downside of &#8220;quick &amp; dirty” development</span></h2>
<p><b>Software erosion, decay or rot refers</b> to the creeping deterioration of software as a result of poor planning and/or implementation. Indications for software erosion are e.g. the accumulation of program errors, more difficult adaptability, decreasing performance, as well as incompatibilities with new features and future software environments. In the medium term the software gets a &#8220;code smell&#8221;, whereby the source code still works, but is poorly structured. The software gradually becomes a legacy system and thus ends functionally and economically unusable.</p>
<h4><span style="color: #800080;">Symptoms of rotten software design</span></h4>
<ol>
<li><b>Rigidity:</b> the system is difficult and costly to change</li>
<li><b>Fragility: </b>small changes have unpredictable consequences for the system</li>
<li><b>Inflexibility:</b> individual components are difficult to isolate</li>
<li><b>Viscosity:</b> software architecture is difficult to maintain when changed</li>
<li><b>Unnecessary complexity: </b> the software contains infrastructure with no tangible benefit</li>
<li><b>Unnecessary repetition:</b> architecture contains repetitive code structures</li>
<li><b>Opacity:</b> source code is difficult to read and understand</li>
</ol>
<p>Source: based on Robert C. Martin</p>
<h2><span style="color: #800080;">Sustainable software development instead of &#8220;quick &amp; dirty&#8221;</span></h2>
<p>High-quality software depends on high-quality design and code. The path for quality is set in the design, because the plan for a computer software is as important as the plan for a house &#8211; poorly designed implementation ends in chaos. The software design defines what is to be built in the form of software code. That’s why both &#8211; design and code &#8211; require the highest level of craftsmanship.</p>
<h4><span style="color: #800080;">The role of good software design</span></h4>
<p>Good design costs time and effort today, but pays off by making it easier to develop the software in the future. Poor design saves time and effort in the short term, but creates technical debt that slows software development productivity in the long run.</p></div>
			</div><div class="et_pb_module et_pb_image et_pb_image_4">
				
				
				
				
				<span class="et_pb_image_wrap "><img loading="lazy" decoding="async" width="672" height="363" src="https://voltage-it.com/wp-content/uploads/2021/04/cumulatice-fuctionality.png" alt="" title="cumulatice-fuctionality" srcset="https://voltage-it.com/wp-content/uploads/2021/04/cumulatice-fuctionality.png 672w, https://voltage-it.com/wp-content/uploads/2021/04/cumulatice-fuctionality-480x259.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 672px, 100vw" class="wp-image-1207" /></span>
			</div><div class="et_pb_module et_pb_text et_pb_text_9  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p style="text-align: center;"><span>Source:<a href="https://martinfowler.com/bliki/DesignStaminaHypothesis.html"> martinfowler.com</a></span></p></div>
			</div><div class="et_pb_module et_pb_text et_pb_text_10  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h4><span style="color: #800080;">Good versus bad software design</span></h4></div>
			</div><div class="et_pb_module et_pb_image et_pb_image_5">
				
				
				
				
				<span class="et_pb_image_wrap "><img loading="lazy" decoding="async" width="690" height="370" src="https://voltage-it.com/wp-content/uploads/2021/04/good-vs-bad-design-1.png" alt="" title="good-vs-bad-design" srcset="https://voltage-it.com/wp-content/uploads/2021/04/good-vs-bad-design-1.png 690w, https://voltage-it.com/wp-content/uploads/2021/04/good-vs-bad-design-1-480x257.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 690px, 100vw" class="wp-image-1242" /></span>
			</div><div class="et_pb_module et_pb_text et_pb_text_11  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p style="text-align: center;">Source: based on <a href="https://www.geeksforgeeks.org/difference-between-good-design-and-bad-design-in-software-engineering/"><span>geeksforgeeks.org</span></a></p></div>
			</div><div class="et_pb_module et_pb_text et_pb_text_12  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h4><span style="color: #800080;">The role of good software code</span></h4>
<p>The quality and structure of the source code are crucial for crafting software sustainably. If software code is developed quickly and &#8220;dirty&#8221; due to time pressure and cost restrictions from the beginning, errors will occur causing costs later in the project. Unlike &#8220;clean code&#8221;, written in a simple and structured way, the costs for adapting &#8220;dirty&#8221; code grow over time.</p></div>
			</div><div class="et_pb_module et_pb_image et_pb_image_6">
				
				
				
				
				<span class="et_pb_image_wrap "><img loading="lazy" decoding="async" width="1024" height="713" src="https://voltage-it.com/wp-content/uploads/2021/04/costs-dirty-clean-code-1024x713.png" alt="" title="costs-dirty-clean-code" srcset="https://voltage-it.com/wp-content/uploads/2021/04/costs-dirty-clean-code-1024x713.png 1024w, https://voltage-it.com/wp-content/uploads/2021/04/costs-dirty-clean-code-980x682.png 980w, https://voltage-it.com/wp-content/uploads/2021/04/costs-dirty-clean-code-480x334.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1024px, 100vw" class="wp-image-1205" /></span>
			</div><div class="et_pb_module et_pb_text et_pb_text_13  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p style="text-align: center;"><span>Source:<a href="https://www.geeksforgeeks.org/7-tips-to-write-clean-and-better-code-in-2020/"> geeksforgeeks.org</a></span></p></div>
			</div><div class="et_pb_module et_pb_text et_pb_text_14  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p>Only the developer who wrote the &#8220;dirty and fast code&#8221; is able to cope with it, but after some time and thousands of lines every developer will struggle to understand his own code. And what happens if he/ she is absent, for example due to illness, vacation or because he moves to another company? Then disaster can strike &#8211; the so-called &#8220;bus factor&#8221; illustrates this.<b></b></p>
<p><b>Side note: The &#8220;bus factor&#8221;</b> quantifies the minimum number of developers in a team who must suddenly disappear from a project so that a project grinds to a halt due to lack of code knowledge. If only one developer knows the code, the risk is extremely high that a project ends up in chaos if this developer drops out. Therefore, we recommend to always share code knowledge within the team. If developers have to work on third-party code, the effort increases immensely, since they need to understand the individual structure before they can adapt it. And even if they do, it is still hard to assess the risks of changes, since hidden links in the system are not easy to identify. &#8220;Clean code&#8221;, on the other hand, makes it much easier for developers who haven&#8217;t written the code themselves to understand structures and make changes with minimal risk.</p>
<p>&#8220;<i>Clean code is simple and direct. Clean code reads like well-written prose. Clean code never obscures the designer’s intent but rather is full of crisp abstractions and straightforward lines of control</i>.&#8221; &#8211;<a href="https://www.goodreads.com/quotes/7029841-clean-code-is-simple-and-direct-clean-code-reads-like"><span>Grady Booch</span></a> (Aauthor of Object Oriented Analysis and Design with Applications)</p>
<p><span><b>Recommended reading</b> on the importance of architecture for software sustainability:<br /><a href="https://voltage-it.com/en/blog/">Software Architecture for SMB: Microservices vs Monolith &#8211; What’s the best solution?</a><span class="Apple-converted-space"> </span></span></p>
<h2><b><br /></b><span style="color: #800080;">Agile software development according to craft principles</span></h2>
<p>Developing software quick &amp; dirty causes immense technical debts and makes product owners in companies suffer. That is why we at voltage IT follow the principles of &#8220;Software Craftsmanship&#8221; in solution development, which consistently prioritizes sustainable quality over short-term success.<span class="Apple-converted-space"> </span></p>
<p>Sustainable software design and clean code play a central role in our projects. For the implementation we use agile methods and tools:</p>
<ul>
<li><b>TDD (Test Driven Development): </b>The functionality of each software feature is monitored via at least one automated test. This ensures security and confidence in code changes and enables fast development cycles without manual test runs.</li>
<li><b>Pair Programming/ Continuous Code Review: </b>While one developer writes the code, another provides ongoing feedback and makes suggestions for improvement. This results in higher quality code while the developer continues working and saves subsequent code reviews.</li>
<li><b>Refactoring: </b>Well-made software must be deeply and continuously refactored to remain well-made. With refactoring, the internal structure of existing code is adapted without changing the system’s behavior.</li>
<li><b>Continuous Delivery: </b>Code is adapted in very short cycles so that changes remain verifiable for the entire team at all times. This enables avoiding large, hidden software errors in production and to fix smaller defects at lightning speed.</li>
</ul>
<p><b>Final words in conclusion:</b> In many areas of our lives, manual tasks could be rationalized by assembly lines and automation, which in many cases has its justification from an economic point of view. Over many years and in many projects we have learned that assembly line work in software development is limited and does more harm than good. Good software still needs good craftsmanship, and that will remain the case.</p>
<h4><span style="color: #800080;">Worth reading</span></h4>
<ul>
<li><a href="https://refactoring.com/"><span><b>Refactoring</b></span></a> &#8211; Short introduction by Martin Fowler (refactoring.com)</li>
<li><a href="https://martinfowler.com/bliki/DesignStaminaHypothesis.html"><span><b>DesignStaminaHypothesis</b></span></a> &#8211; Is it worth the effort to design software well? (martinfowler.com)</li>
<li><a href="https://www.it-cisq.org/the-cost-of-poor-software-quality-in-the-us-a-2020-report.htm"><span><b>Cost of Poor Software Quality</b></span></a> in the US: 2020 Report (it-cisq.org)</li>
</ul>
<h4><span style="color: #800080;">Need help? Let’s talk!</span></h4>
<p>For many years we aim to enable companies to make the right IT decisions and to get software systems they sustainably benefit from and manage themselves in the long term. Our mission: Building &#8220;reasonable&#8221; solutions beyond technology hype.</p></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div>
<p>Der Beitrag <a href="https://voltage-it.com/en/stop-quick-dirty-now-is-the-time-to-return-to-reasonable-software-development/">Stop &#8220;quick &amp; dirty&#8221;! Now is the time to return to &#8220;reasonable&#8221; software development</a> erschien zuerst auf <a href="https://voltage-it.com/en/">voltage IT</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Software Architecture for SMB: Microservices vs Monolith &#8211; What’s the best solution?</title>
		<link>https://voltage-it.com/en/software-architecture-for-smb-microservices-vs-monolith-whats-the-best-solution/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 01 Feb 2021 16:52:34 +0000</pubDate>
				<category><![CDATA[Software Architecture]]></category>
		<guid isPermaLink="false">https://voltage-it.com/software-architecture-for-smb-microservices-vs-monolith-whats-the-best-solution/</guid>

					<description><![CDATA[<p>Der Beitrag <a href="https://voltage-it.com/en/software-architecture-for-smb-microservices-vs-monolith-whats-the-best-solution/">Software Architecture for SMB: Microservices vs Monolith &#8211; What’s the best solution?</a> erschien zuerst auf <a href="https://voltage-it.com/en/">voltage IT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="et_pb_section et_pb_section_2 et_section_regular" >
				
				
				
				
				
				
				<div class="et_pb_row et_pb_row_2">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_2  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_15  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p><span><b>Microservices have been hyped for years, but they are not always the best solution. What small and medium-sized businesses with limited resources often ignore: Microservice architectures are true resource hogs, despite all the advantages they offer in day-to-day operations. Learn more about (often doomed) alternatives here.</b></span></p>
<p><span>To avoid misunderstandings: Microservice architectures are not unsuitable for SMEs as such; however, they do have some pitfalls that should be taken into account. To take full advantage of the flexibility that microservices undoubtedly offer, companies must be able to handle decentralized development and maintenance within their IT organization. This is often a major challenge.</span></p>
<p><span>“<i>Companies that don&#8217;t have mature teams for software development and maintenance should critically question whether they can really afford microservices.</i>.” &#8211; Igor Pshul, Solution Architect</span></p>
<p><span>Monolithic architectures are often seen as the outdated counter-model to microservices. However, they are not as bad as their reputation, provided they are implemented with a high level of quality. In (often ideologically driven) debates about software architectures the advantages of monolithic architectures are frequently ignored.</span></p>
<p><span>Which architectural style is the right one in each individual case cannot be decided by what is technologically currently fashionable. Instead, the key factor is which approach is feasible for a company and is better suited to achieving its business goals. That&#8217; s why we at voltage IT support our customers both objectively and with a clear view to long-term success.</span></p>
<p><span>The challenge every company faces sooner or later: by eroding their architecture, software systems gradually become more error-prone and inefficient. Even the smallest adjustments can result in a great deal of anxiety and pain. In the following, we will give advice on how you can prevent this with the right architecture.<br /> </span></p>
<h2><span style="color: #800080">Microservice architecture: features, requirements, pros &amp; cons</span></h2>
<p><span>Microservices represent an architectural style of software applications that consist of small services (microservices). Each individual service is executed in its own process and communicates via interfaces (HTTP, REST API) with other services or systems in the company.<span class="Apple-converted-space"> </span></span></p>
<p><span>Services are organized around business functions, managed in a largely decentralized manner, and can be deployed independently and fully automated. Microservices can be developed in different programming languages and use different technologies for storing data. Services are implemented using containers that are orchestrated (provisioned, scaled and managed) with Kybernetes.</span></p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_3">
				<div class="et_pb_column et_pb_column_3_5 et_pb_column_3  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_16  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h4><span style="color: #800080">Advantages of microservice architectures:</span></h4>
<ul>
<li><span><b>Flexibility</b>: easily replaceable and extendable due to modularization</span></li>
<li><span><b>Sustainability:</b> software development fully under control long-term</span></li>
<li><span><b>Risk:</b> changes to the overall system less risky</span></li>
<li><span><b>Freedom:</b> different technologies can be used</span></li>
<li><span><b>Scalability:</b>granular expansion as needed</span></li>
</ul></div>
			</div>
			</div><div class="et_pb_column et_pb_column_2_5 et_pb_column_4  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_image et_pb_image_7">
				
				
				
				
				<span class="et_pb_image_wrap "><img loading="lazy" decoding="async" width="274" height="241" src="https://voltage-it.com/wp-content/uploads/2021/02/345.png" alt="" title="345" class="wp-image-690" /></span>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_4">
				<div class="et_pb_column et_pb_column_2_5 et_pb_column_5  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_image et_pb_image_8">
				
				
				
				
				<span class="et_pb_image_wrap "><img loading="lazy" decoding="async" width="182" height="214" src="https://voltage-it.com/wp-content/uploads/2021/02/860.png" alt="" title="860" class="wp-image-696" /></span>
			</div>
			</div><div class="et_pb_column et_pb_column_3_5 et_pb_column_6  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_17  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h4><span style="color: #800080">Challenges:</span></h4>
<ul>
<li><span><b>Resources:</b> different teams needed for maintenance and development</span></li>
<li><span><b>Communication:</b> Manage independent deployment units</span></li>
<li><span><b>Performance:</b> Latency in the interaction of services and systems</span></li>
<li><span><b>Infrastructure:</b> Redundancies through independent deployment processes</span></li>
<li><span><b>Security:</b>Every API is a potential point of attack for cybercriminals</span></li>
<li><span><b>Architecture:</b> Keep decentralized service structure (avoid “monolithization&#8221;)</span></li>
</ul></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_5">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_7  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_18  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p><span><b>Conclusion:</b> Microservice architectures are flexible in terms of adaptation and further development. However, this requires distributed teams to be deployed and coordinated. With highly distributed systems, companies tend to develop an overhead for administration and communication.</span></p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_6">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_8  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_19  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p><span></span></p>
<h2><span style="color: #800080">Monolithic architecture: features, requirements, pros &amp; cons</span></h2>
<p><span>Unlike distributed systems based on microservices, monolithic software architectures combine all functional elements in a single homogeneous entity. The systems&#8217; components are deployed and operated in a common process. Accordingly, these systems can only be scaled as a whole.</span></p>
<p><span>The advantages of monolithic architectures largely correspond to the disadvantages of microservice architectures and vice versa.<span class="Apple-converted-space"> </span></span></p>
<p><span></span></p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_7">
				<div class="et_pb_column et_pb_column_3_5 et_pb_column_9  et_pb_css_mix_blend_mode_passthrough">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_20  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><h4><span style="color: #800080"> Advantages of Monolithic Architectures: </span></h4>
<ul>
<li><span><b>Development:</b> &#8220;classic&#8221; implementation and easy roll-out </span></li>
<li><span><b>Communication:</b>one deployment unit managed centrally</span></li>
<li><span><b>Performance:</b> &#8220;short&#8221; communication paths between components </span></li>
</ul>
<h4><span style="color: #800080"> Challenges: </span></h4>
<ul>
<li><span> <b>Scalability:</b> &#8220;one size fits all&#8221; reaches its limits as complexity grows </span></li>
<li><span> <b>Sustainability:</b> software development increasingly cause effort and fear </span></li>
<li><span> <b>Risk:</b> changes to the overall system increasingly risky </span></li>
<li><span> <b>Freedom:</b>limited to technologies that work together </span></li>
</ul></div>
			</div>
			</div><div class="et_pb_column et_pb_column_2_5 et_pb_column_10  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_image et_pb_image_9">
				
				
				
				
				<span class="et_pb_image_wrap "><img loading="lazy" decoding="async" width="107" height="202" src="https://voltage-it.com/wp-content/uploads/2021/02/400.png" alt="" title="400" class="wp-image-694" /></span>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_8">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_11  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_21  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner">Conclusion: Monolithic architectures are easy to develop, roll out and operate with lean resources. They are often more performant than service-based architectures. However, monolithic systems (especially if there are weaknesses in development) tend to become more cumbersome to adapt and extend, e.g., with components for AI or automation, as complexity increases. </div>
			</div><div class="et_pb_module et_pb_text et_pb_text_22  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p><span></span></p>
<h2><span style="color: #800080"> Modular monoliths: Combining the best of both worlds </span></h2>
<p><span> What is often ignored in ideological debates about software architectures is that microservices and monoliths are not mutually exclusive. The optimum is somewhere between the two. Smart programmers combine the best of both worlds and create systems that don&#8217;t follow architectural styles dogmatically. The key is the business value that results from smartly combining different approaches. </span></p>
<p><span></span></p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_9">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_12  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_image et_pb_image_10">
				
				
				
				
				<span class="et_pb_image_wrap "><img loading="lazy" decoding="async" width="800" height="600" src="https://voltage-it.com/wp-content/uploads/2021/02/slide.034.png" alt="" title="slide.034" srcset="https://voltage-it.com/wp-content/uploads/2021/02/slide.034.png 800w, https://voltage-it.com/wp-content/uploads/2021/02/slide.034-480x360.png 480w" sizes="(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 800px, 100vw" class="wp-image-700" /></span>
			</div><div class="et_pb_module et_pb_text et_pb_text_23  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p style="text-align: center"><span>Source:<a href="http://www.codingthearchitecture.com/2014/07/06/distributed_big_balls_of_mud.html"> Simon Brown @ codingthearchitecture.com</a></span></p></div>
			</div>
			</div>
				
				
				
				
			</div><div class="et_pb_row et_pb_row_10">
				<div class="et_pb_column et_pb_column_4_4 et_pb_column_13  et_pb_css_mix_blend_mode_passthrough et-last-child">
				
				
				
				
				<div class="et_pb_module et_pb_text et_pb_text_24  et_pb_text_align_left et_pb_bg_layout_light">
				
				
				
				
				<div class="et_pb_text_inner"><p><span>At voltage IT, we focus on structured software development, which starts monolithically but can take advantage of microservices at any time. We achieve this, for example, by creating a clear vertical structure according to functionalities and developing according to highest quality standards: domain driven design, test driven development, to avoid erosion and tight coupling of individual modules, so that each module can be subsequently extracted to a microservice.</span></p>
<p><span>We call this &#8220;reasonable&#8221; software engineering because we are not guided by the microservice hype, but strategically build the basis for systems that focus on the actual requirements and can be maintained and flexibly developed by companies or their service providers themselves in the long term.<span class="Apple-converted-space"> </span></span></p>
<p><span><b>Worth reading</b></span></p>
<ul>
<li><a href="https://martinfowler.com/articles/microservices.html"><span>Microservices</span></a><span> &#8211; brief introduction by James Lewis (martinfowler.com)</span></li>
<li><a href="https://martinfowler.com/bliki/MonolithFirst.html"><span>MonolithFirst</span></a><span> &#8211; good reasons for starting with monoliths (martinfowler.com)</span></li>
<li><a href="https://martinfowler.com/articles/dont-start-monolith.html"><span>Don’t start with a monolith</span></a><span>&#8211; When monoliths<span class="Apple-converted-space"> </span>are not suitable (martinfowler.com)</span></li>
<li><a href="http://www.codingthearchitecture.com/2014/07/06/distributed_big_balls_of_mud.html"><span>Distributed big balls of mud</span></a><span> &#8211; About distributed architectures (codingthearchitecture.com)</span></li>
</ul>
<p><span><b>Need help? Let’s talk!</b></span></p>
<p><span>For many years we aim to enable companies to make the right IT decisions and to get software systems they sustainably benefit from and manage themselves in the long term. Our mission: Building &#8220;reasonable&#8221; solutions beyond technology hype.</span></p></div>
			</div>
			</div>
				
				
				
				
			</div>
				
				
			</div>
<p>Der Beitrag <a href="https://voltage-it.com/en/software-architecture-for-smb-microservices-vs-monolith-whats-the-best-solution/">Software Architecture for SMB: Microservices vs Monolith &#8211; What’s the best solution?</a> erschien zuerst auf <a href="https://voltage-it.com/en/">voltage IT</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
