<?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: iotcloudarchitect</title>
    <description>The latest articles on DEV Community by iotcloudarchitect (@iotcloudarchitect).</description>
    <link>https://dev.to/iotcloudarchitect</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%2F627079%2Fe5bcb548-3a28-4fe3-adc2-58ba5e2dd683.png</url>
      <title>DEV Community: iotcloudarchitect</title>
      <link>https://dev.to/iotcloudarchitect</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/iotcloudarchitect"/>
    <language>en</language>
    <item>
      <title>What about Agile Development?</title>
      <dc:creator>iotcloudarchitect</dc:creator>
      <pubDate>Thu, 06 Jan 2022 15:22:26 +0000</pubDate>
      <link>https://dev.to/iotcloudarchitect/what-about-agile-development-4g6g</link>
      <guid>https://dev.to/iotcloudarchitect/what-about-agile-development-4g6g</guid>
      <description>&lt;p&gt;This article shall give you an overview of agile development and help you decide whether Scrum or Kanban can meet your needs.&lt;/p&gt;

&lt;p&gt;But, first of all, a clarification about what agile means.&lt;/p&gt;

&lt;h2&gt;
  
  
  12 Principles of Agile Methodology
&lt;/h2&gt;

&lt;p&gt;In 2001, a group of experts in the field of software development methodologies and frameworks got together to define the &lt;a href="https://agilemanifesto.org/principles.html"&gt;12 principles of the Agile Manifesto&lt;/a&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Our highest priority is to &lt;strong&gt;satisfy&lt;/strong&gt; the customer through &lt;strong&gt;early&lt;/strong&gt; and &lt;strong&gt;continuous delivery&lt;/strong&gt; of valuable software.&lt;/li&gt;
&lt;li&gt;Welcome &lt;strong&gt;changing requirements&lt;/strong&gt;, even late in development. Agile processes harness change &lt;strong&gt;for the customer’s competitive advantage&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deliver&lt;/strong&gt; working software &lt;strong&gt;frequently&lt;/strong&gt;, from a couple of weeks to a couple of months, with &lt;strong&gt;preference&lt;/strong&gt; to the &lt;strong&gt;shorter&lt;/strong&gt; timescale.&lt;/li&gt;
&lt;li&gt;Business people and developers must &lt;strong&gt;work together daily&lt;/strong&gt; throughout the project.&lt;/li&gt;
&lt;li&gt;Build projects around motivated individuals. Give them the &lt;strong&gt;environment&lt;/strong&gt; and &lt;strong&gt;support they need&lt;/strong&gt;, and &lt;strong&gt;trust them&lt;/strong&gt; to get the job done.&lt;/li&gt;
&lt;li&gt;The most &lt;strong&gt;efficient&lt;/strong&gt; and &lt;strong&gt;effective method&lt;/strong&gt; of conveying information to and within a development team is &lt;strong&gt;face-to-face conversation&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Working software is the primary measure of progress.&lt;/li&gt;
&lt;li&gt;Agile processes promote &lt;strong&gt;sustainable development&lt;/strong&gt;. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.&lt;/li&gt;
&lt;li&gt;Continuous attention to &lt;strong&gt;technical excellence&lt;/strong&gt; and &lt;strong&gt;good design&lt;/strong&gt; enhances agility.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Simplicity&lt;/strong&gt; -- the art of maximizing the amount of work not done -- &lt;strong&gt;is essential&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The best architectures, requirements, and designs emerge from &lt;strong&gt;self-organizing teams&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;At regular intervals, the team &lt;strong&gt;reflects&lt;/strong&gt; on how to become &lt;strong&gt;more effective&lt;/strong&gt;, then tunes and adjusts its behavior accordingly. &lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Building Blocks of Agile Development
&lt;/h2&gt;

&lt;p&gt;Based on my experience, and completed by the 12 principles, I would propose the following building blocks of agile development depicted below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5uT8YGy---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pc8m2gkqmklg0d6e5bhx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5uT8YGy---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pc8m2gkqmklg0d6e5bhx.png" alt="Building Blocks of Agile Development" width="637" height="999"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In a nutshell a short description of the building blocks:&lt;/p&gt;

&lt;h3&gt;
  
  
  Objectives
&lt;/h3&gt;

&lt;p&gt;The objectives define the root cause of all the sweat and hurt when building software. The main aim should be a satisfied customer. In our case - with regards to agile development - the &lt;strong&gt;customer&lt;/strong&gt; would be happy if he could bring in his &lt;strong&gt;requirements and needs&lt;/strong&gt;, at any time, with any impact it means to the current development situation. Also, he appreciates the &lt;strong&gt;continuous delivery&lt;/strong&gt; of the software he requested at &lt;strong&gt;short time intervals&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Participants
&lt;/h3&gt;

&lt;p&gt;One of the basic ideas of agile development is that the &lt;strong&gt;customer&lt;/strong&gt;, &lt;strong&gt;business people&lt;/strong&gt;, and &lt;strong&gt;development team&lt;/strong&gt; work &lt;strong&gt;jointly together&lt;/strong&gt; to create the best solution possible, meeting the requirements. &lt;/p&gt;

&lt;h3&gt;
  
  
  Collaboration
&lt;/h3&gt;

&lt;p&gt;The beforehand mentioned participants will work together and will exchange their ideas regularly. Business people and the development team should meet in the best case on a &lt;strong&gt;daily&lt;/strong&gt; basis for at least a short synch about progress or discuss problems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;New&lt;/strong&gt; requirements or &lt;strong&gt;changes&lt;/strong&gt; of existing &lt;strong&gt;requirements&lt;/strong&gt; should be discussed and evaluated which impact they might have on the existing implementation.&lt;/p&gt;

&lt;p&gt;It is essential that all participants work together and &lt;strong&gt;support&lt;/strong&gt; each other to get the best result possible.&lt;/p&gt;

&lt;p&gt;Also - regularly - the participants shall &lt;strong&gt;reflect&lt;/strong&gt; their way of working together to optimize the process continuously.&lt;/p&gt;

&lt;h3&gt;
  
  
  Planning
&lt;/h3&gt;

&lt;p&gt;All requirements of the customer (mostly functional) and non-functional once shall be collected in a &lt;strong&gt;backlog&lt;/strong&gt;.&lt;br&gt;
There, all requirements can be estimated and prioritized.&lt;/p&gt;

&lt;p&gt;Based on the estimations and available development team size, the (constant) &lt;strong&gt;workload&lt;/strong&gt; can be defined to &lt;strong&gt;reasonable&lt;/strong&gt; plan the following implementation of features. &lt;/p&gt;

&lt;p&gt;Visualizing the tasks or user stories the team is currently working on creates &lt;strong&gt;transparency&lt;/strong&gt;. It helps to &lt;strong&gt;track&lt;/strong&gt; the &lt;strong&gt;progress&lt;/strong&gt; and to measure the iteration's quality.&lt;/p&gt;

&lt;h3&gt;
  
  
  Development
&lt;/h3&gt;

&lt;p&gt;Agile development requires &lt;strong&gt;a self-organizing team&lt;/strong&gt;. The team members are specialists and bring in their know-how, experience, and motivation.&lt;/p&gt;

&lt;p&gt;It is beneficial to have players with &lt;strong&gt;excellent technical skills&lt;/strong&gt; who can utilize the necessary technologies to implement the requirements perfectly.&lt;/p&gt;

&lt;p&gt;A key aspect in agile development is to &lt;strong&gt;focus on working software&lt;/strong&gt;. At the end of each iteration, the result should be a software increment covering the requested requirements.&lt;/p&gt;

&lt;p&gt;In order to be able to bring in the working power ideally, the development team should have the &lt;strong&gt;ideal environment&lt;/strong&gt;. Everything should be in place from the code editor and the code repository until the cloud-driven pipelines with automated testing to optimize the development process.&lt;/p&gt;




&lt;h2&gt;
  
  
  Focusses and Objectives of most agile frameworks
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Self-Organized Team
&lt;/h3&gt;

&lt;p&gt;It is crucial to have a team that works without the need for instructions in agile development. Every team member knows the process and the dos and don'ts and acts accordingly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pull-Principle
&lt;/h3&gt;

&lt;p&gt;The idea is that each development team member can take (pull) a job according to his availability. This means that everyone commits to a specific task at a particular time. &lt;br&gt;
No one will push tasks to a developer; instead, jobs are accepted and taken by the development team members.&lt;/p&gt;

&lt;h3&gt;
  
  
  Software Increment Orientation
&lt;/h3&gt;

&lt;p&gt;The result shall be shippable and working software at the end of each job or iteration. &lt;/p&gt;

&lt;h3&gt;
  
  
  Transparency
&lt;/h3&gt;

&lt;p&gt;Visualizing the tasks and their state is the key to making optimization opportunities visible and increasing efficiency.&lt;/p&gt;

&lt;h3&gt;
  
  
  Measure Progress
&lt;/h3&gt;

&lt;p&gt;It is essential to track and monitor the progress of the job or iteration.&lt;/p&gt;




&lt;h2&gt;
  
  
  Popular Agile Frameworks
&lt;/h2&gt;

&lt;p&gt;Following, a short description of two popular agile development frameworks: Scrum and Kanban.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scrum
&lt;/h3&gt;

&lt;p&gt;Scrum comes with a defined process as depicted below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--r3VrXSwr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kk5yirgra89hucnemknh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--r3VrXSwr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kk5yirgra89hucnemknh.png" alt="Scrum Process" width="880" height="328"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The product owner collects all &lt;strong&gt;requirements&lt;/strong&gt; in a &lt;strong&gt;backlog&lt;/strong&gt;, prioritizes them, and plans a &lt;strong&gt;manageable amount of work&lt;/strong&gt; in a &lt;strong&gt;defined time&lt;/strong&gt; (sprint). Therefore, it is often used to develop a new feature or an entirely new product.&lt;/p&gt;

&lt;p&gt;For the planning of a sprint, beforehand, the effort of the work will be estimated by the team in a virtual entity called story points. These story points will be used during the sprint to progress the team's velocity.&lt;/p&gt;

&lt;p&gt;At the end of each sprint, the &lt;strong&gt;results&lt;/strong&gt; are &lt;strong&gt;software increments&lt;/strong&gt;, e.g., new features or functions in an app.&lt;/p&gt;

&lt;p&gt;Also, in Scrum, there are clearly defined roles of the participants, and due to its &lt;strong&gt;restrictions&lt;/strong&gt;, it is supposed to be easier useable for teams with less experience.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kanban
&lt;/h3&gt;

&lt;p&gt;The primary purpose of Kanban is the &lt;strong&gt;visualization&lt;/strong&gt; of work. Like in Scrum, the requirements (&lt;strong&gt;stories&lt;/strong&gt;) are collected and then planned for implementation (&lt;strong&gt;to do&lt;/strong&gt;). The stories will be written on cards and put onto the Kanban board as depicted below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3Tc2Fqzb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kfou5l79rpp4d3ic7i04.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3Tc2Fqzb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kfou5l79rpp4d3ic7i04.png" alt="Kanban Board" width="866" height="654"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In Kanban, an essential principle is to &lt;strong&gt;focus&lt;/strong&gt; on a sensible amount of &lt;strong&gt;work&lt;/strong&gt; that the development team can &lt;strong&gt;achieve&lt;/strong&gt;. Therefore, the number of cards in the board columns is limited. The current number of cards in a column is called the &lt;strong&gt;work in progress&lt;/strong&gt; (WIP) and shows the team's current velocity.&lt;/p&gt;

&lt;p&gt;Like in Scrum, the result of each of the stories should be a new software increment.&lt;/p&gt;

&lt;p&gt;In contrast to Scrum, Kanban does &lt;strong&gt;not require specific roles&lt;/strong&gt; and is not as restrictive. Therefore it is more flexible and can be used for reactive jobs, like planning a bug-fixing for productive software.&lt;/p&gt;




&lt;h2&gt;
  
  
  Do you need an agile framework?
&lt;/h2&gt;

&lt;p&gt;The following diagram shall give you help with deciding whether you need an agile framework:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--K0Ut2vJW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rlunf9hqzyqyxhlu2hp9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--K0Ut2vJW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rlunf9hqzyqyxhlu2hp9.png" alt="Decision Tree Agile" width="827" height="1130"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;Which is the proper development framework for your project? I can't tell you. But I hope this article gave you some insights into whether it could be an agile development framework.&lt;/p&gt;

&lt;p&gt;Photos on &lt;a href="https://unsplash.com"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>agile</category>
      <category>productivity</category>
      <category>efficiency</category>
      <category>team</category>
    </item>
    <item>
      <title>What about a blockchain?</title>
      <dc:creator>iotcloudarchitect</dc:creator>
      <pubDate>Tue, 28 Dec 2021 10:17:10 +0000</pubDate>
      <link>https://dev.to/iotcloudarchitect/what-about-a-blockchain-3pci</link>
      <guid>https://dev.to/iotcloudarchitect/what-about-a-blockchain-3pci</guid>
      <description>&lt;p&gt;The basic idea of a blockchain is to store information immutably, transparently, and traceable inside a duplicated and distributed ledger. The ledger consists of blocks, and every block is cryptographically connected to the previous block. Each block contains transactions that the participants of the blockchain beforehand validated.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--v8_7-jD7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wanqx5srgtl6v496zcgy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--v8_7-jD7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wanqx5srgtl6v496zcgy.png" alt="Blockchain Concept" width="847" height="543"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This article gives a high-level overview of the concept of a blockchain used for transactional systems but not a detailed step-by-step instruction about implementing the technology. &lt;br&gt;
Furthermore, it shall help you decide whether your system or idea could use a blockchain approach.&lt;/p&gt;




&lt;h2&gt;
  
  
  Centralized Transaction Processing
&lt;/h2&gt;

&lt;p&gt;In centralized transaction-based solutions, at least one central instance acts as a gate for decisions or manages essential parts of a process. Everyone interacting with it has to trust these middlemen.&lt;/p&gt;

&lt;p&gt;Let's take an example.&lt;/p&gt;

&lt;p&gt;You want to give $100 to Peter. To cash transfer the money from your bank account to the bank account of Peter, you have to utilize financial institutions, e.g., banks, to process the transferal. In this case, your bank and Peter's bank are middlemen, which means they are central instances of the process. Also, between both banks, there is another middleman, the clearinghouse, which establishes the trust between both banks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--m0F0T45t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mjgtlclewkiesvp4m5td.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--m0F0T45t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mjgtlclewkiesvp4m5td.png" alt="Traditional Bank Transaction Process" width="880" height="572"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Following, the steps of the process depicted above:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You will instruct your bank (B1) to send $100 to Peter's bank account.&lt;/li&gt;
&lt;li&gt;B1 will first check whether you have at least $100 you can send.&lt;/li&gt;
&lt;li&gt;Next, B1 will tell the clearinghouse (C) to transfer $100 to Peter's bank account.&lt;/li&gt;
&lt;li&gt;C will take the $100 from B1, contact Peter's bank (B2), and move the money.&lt;/li&gt;
&lt;li&gt;(B2) will put the $100 into Peter's bank account.&lt;/li&gt;
&lt;li&gt;Peter finally got the $100.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The process perfectly shows that the banks are middlemen to you and Peter. And between the banks, the clearinghouse is the middlemen. &lt;br&gt;
A lot of intermediaries, right?&lt;/p&gt;




&lt;h2&gt;
  
  
  Blockchain-based Transaction Processing
&lt;/h2&gt;

&lt;p&gt;Let's see how the same process would work on the blockchain cryptocurrency Bitcoin:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--n9VNgDZd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kef5cwe09keb22btxtkn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--n9VNgDZd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kef5cwe09keb22btxtkn.png" alt="Blockchain Transaction Process" width="880" height="714"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Following, the steps of the process depicted above:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;First of all, all participating nodes must have the latest version of the ledger containing all blocks each containing transactions.&lt;/li&gt;
&lt;li&gt;You will now send one bitcoin to Peter utilizing a (transaction) node (A).&lt;/li&gt;
&lt;li&gt;A will verify whether you have one bitcoin that you can send and if everything is okay, it will bundle the transaction into a block.&lt;/li&gt;
&lt;li&gt;The miners (B, C) validate the transaction using algorithms (mining process).&lt;/li&gt;
&lt;li&gt;After all miners agree, the block will be put into the blockchain on the ledger and every node gets an update.  Peter received one bitcoin from you.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;As you can see in this process, no single entity is responsible; all nodes together validate and decide about the transaction based on cryptographic security and clearly defined methods.&lt;/p&gt;




&lt;h2&gt;
  
  
  Trust is key
&lt;/h2&gt;

&lt;p&gt;A blockchain can substitute existing systems, but it has to, first of all, create trust. The participants need to trust the implementation of blockchain technology like they did it with the middleman concept.&lt;/p&gt;

&lt;p&gt;Here is how blockchain creates trust:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--m0kIKIjh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ic9wey91kzx7oqqdxdzf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--m0kIKIjh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ic9wey91kzx7oqqdxdzf.png" alt="Blockchain Trust" width="880" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The next chapter describes the benefits mentioned above.&lt;/p&gt;




&lt;h2&gt;
  
  
  Benefits of a blockchain approach
&lt;/h2&gt;

&lt;p&gt;Following, the most obvious benefits:&lt;/p&gt;

&lt;h3&gt;
  
  
  Redundancy
&lt;/h3&gt;

&lt;p&gt;The ledger is duplicated and distributed to every participant. Also, each update will be synchronized to every copy of the ledger. Therefore, no one can delete the ledger.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cryptography
&lt;/h3&gt;

&lt;p&gt;A blockchain network self-organizes itself. It uses consensus algorithms and cryptography to secure transactions between multiple partners without the need for a trusted middleman in between.&lt;/p&gt;

&lt;h3&gt;
  
  
  Immutability
&lt;/h3&gt;

&lt;p&gt;A blockchain records the blocks and their bundled transactions immutable by design. Once a block is attached to the ledger, it is cryptographically connected to the previous block. The nodes will immediately detect changes of blocks.&lt;/p&gt;

&lt;h3&gt;
  
  
  Traceability
&lt;/h3&gt;

&lt;p&gt;Everyone with a copy of the ledger can verify which transaction happened at which time. The entire history of actions is recorded, not just a snapshot.&lt;/p&gt;

&lt;h3&gt;
  
  
  Transparency
&lt;/h3&gt;

&lt;p&gt;Every transaction is processed the same defined way and is documented and validated by the nodes. Inside the ledger, all blocks are recorded and therefore visible to everyone.&lt;/p&gt;




&lt;h2&gt;
  
  
  Do you need a blockchain?
&lt;/h2&gt;

&lt;p&gt;The following diagram shall help you to figure out whether your idea or system could be driven by a blockchain approach:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--d14e2iiB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3r24mntds5f41aqfytkr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--d14e2iiB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3r24mntds5f41aqfytkr.png" alt="Do you need a blockchain" width="880" height="1084"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Real-live examples for blockchain solutions
&lt;/h2&gt;

&lt;p&gt;The following diagram shows potential real-life solutions derived from the benefits a blockchain approach offers:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3A3ZDX_---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gwrf7z3715138qql6maf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3A3ZDX_---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gwrf7z3715138qql6maf.png" alt="Real-life blockchain examples" width="880" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For sure, the examples mentioned above are not collectively exhaustive. There are a lot more. But a reasonable solution should always take care of at least 2 or 3 of the benefits a blockchain approach offers. Otherwise, you do not need fully-fledged blockchain technology.&lt;/p&gt;




&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;The worst thing you could do is create a blockchain system without a specific problem you are trying to solve, just because it is en vogue to have a solution in your product store. It is not just how you store data; it is about creating an ecosystem that self-organizes itself in a highly secure way. As always: think problem first, then solutions.&lt;/p&gt;

&lt;p&gt;Photos on &lt;a href="https://unsplash.com"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>introduction</category>
      <category>concept</category>
      <category>process</category>
    </item>
    <item>
      <title>Becoming a great solution architect – Chapter 3 – The Responsibilities</title>
      <dc:creator>iotcloudarchitect</dc:creator>
      <pubDate>Thu, 23 Dec 2021 07:07:56 +0000</pubDate>
      <link>https://dev.to/iotcloudarchitect/becoming-a-great-solution-architect-chapter-3-the-responsibilities-2hp4</link>
      <guid>https://dev.to/iotcloudarchitect/becoming-a-great-solution-architect-chapter-3-the-responsibilities-2hp4</guid>
      <description>&lt;h2&gt;
  
  
  1 - Get All Involved, Aligned, and Committed
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kUsqCZ3X--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ph0stw7h39988osmh8hb.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kUsqCZ3X--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ph0stw7h39988osmh8hb.jpg" alt="Get All Involved, Aligned, and Committed" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The fundament of an excellent solution architecture is to &lt;br&gt;
understand the problem holistically. It means understanding all stakeholders’ requirements, all constraints, and formulate the essence of a system that solves the problem in total.&lt;/p&gt;

&lt;p&gt;The solution architect must also set up a collaboration framework to consider, debate, and determine the solution concepts. Close communication with the key stakeholders is essential since agile development offers opportunities to adjust the solution.&lt;/p&gt;

&lt;p&gt;He analyzes the risks and costs, monitors the quality, and keeps an eye on time planning and resources with the product owner or project manager.&lt;/p&gt;




&lt;h2&gt;
  
  
  2 - Scope, Simplify, and Structure the Problem
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---nTn5lg7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h9ys2dd2ak8clh0evlzz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---nTn5lg7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h9ys2dd2ak8clh0evlzz.jpg" alt="Scope, Simplify, and Structure the Problem" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the beginning, the solution’s scope must be clear, which helps to focus on the essential parts and avoids spending time on unnecessary topics. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Be clear about what the solution will cover (and what’s out of scope).&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The solution architect slices the problem into relevant parts to identify processes and functions and transform them into a manageable solution component model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Simplifying and structuring is key.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An essential point of the solution architects’ work – besides the “pure translation” from functions and processes into technology – is to draw a picture of the envisioned solution, so every stakeholder understands.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Big Picture of the solution helps to fight for the same thing.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  3 - Select and Evaluate the Key Technologies
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6lb5B-Zq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xdeqkoch1yptfatbd4ce.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6lb5B-Zq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xdeqkoch1yptfatbd4ce.jpg" alt="Select and Evaluate the Key Technologies" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;An essential part of a solution architect’s work is to choose and evaluate the best fitting technologies the solution runs. One step here might be creating a prototype for a proof-of-concept to validate the technology regarding different aspects like performance, stability, and scalability.&lt;/p&gt;

&lt;p&gt;Furthermore, he advises the technology stack covering the entire end-to-end perspective.&lt;/p&gt;

&lt;p&gt;Besides, the solution architect identifies the potential cost of the environments, significantly what the monthly fee is for operating the solution after go-live.&lt;/p&gt;




&lt;h2&gt;
  
  
  4 - Consider Solution Design Principles and Architecture Design Pattern
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XlHpqS8d--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c5dwxp7h5pjzzzuewcpy.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XlHpqS8d--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c5dwxp7h5pjzzzuewcpy.jpg" alt="Consider Solution Design Principles and Architecture Design Pattern" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Like a professional craftsman, the solution architect utilizes guides, tools, and best practices.&lt;/p&gt;

&lt;p&gt;There are a lot of Architecture Design Patterns already published across the internet, covering different aspects.&lt;/p&gt;

&lt;p&gt;Here, some examples of cloud-specific patterns (see in detail in &lt;a href="https://www.oreilly.com/library/view/cloud-architecture-patterns/9781449357979/"&gt;Bill Wilder’s book “Cloud Architecture Patterns” at O’Reilly’s&lt;/a&gt;):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Horizontally Scaling Compute Pattern – providing more instances of one service in parallel&lt;/li&gt;
&lt;li&gt;Colocate Pattern – deploying components that work together in the same region/data center&lt;/li&gt;
&lt;li&gt;CDN Pattern – Distribute content across the internet in regions close to the user&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are a lot more, also “traditional” patterns like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Client/Server – one service provides data, the other one consumes&lt;/li&gt;
&lt;li&gt;Microservice – a (web) service which covers the aspects of a single business domain with dedicated data storage and clearly defined interfaces&lt;/li&gt;
&lt;li&gt;MVC – separation of a user interface application into model, view, and controller logic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Besides the patterns, the solution architect applies solution design principles like the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scalability – a solution must be capable of (dynamically) increasing itself according to the demand (Horizontal or vertical scaling)&lt;/li&gt;
&lt;li&gt;Security – a solution must be secure regarding the communication between components, data in rest, accessibility of service administration, etc.&lt;/li&gt;
&lt;li&gt;Resiliency – a solution must be capable of being stable also at times of intensive load and can recover from exceptional states&lt;/li&gt;
&lt;li&gt;Fail-Over Capability – a solution must be able to continue working even if instances of components are not available&lt;/li&gt;
&lt;li&gt;Single Point of Failure – it must be clear which components are crucial to mitigate potential risks&lt;/li&gt;
&lt;li&gt;Accessibility, Availability – a solution must be deployed as close as possible to the users (low latency) and must guarantee a high up-time&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  5 - Comply with Non-Functional Requirements
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bClfHN1I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h04m7zuy1gf1cjt4ownc.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bClfHN1I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h04m7zuy1gf1cjt4ownc.jpg" alt="Comply with Non-Functional Requirements" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Besides the functional requirements, there are several other things the solution architect is considering for the solution listed as follows (examples):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cost Optimization – finding the perfect mix of technologies and infrastructure to solve the problem, and to spend a minimum of money&lt;/li&gt;
&lt;li&gt;User Experience – supporting the UX team to find the ideal user interface, guiding users intuitively through the solution&lt;/li&gt;
&lt;li&gt;Quality Assurance – support with (automated) testing of the solution’s components to deliver high-quality applications&lt;/li&gt;
&lt;li&gt;Performance – support with load testing to ensure the expected number of concurrent users and client services&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  6 - Consider Staging Environments and Enterprise Architecture
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--k7avvSSj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tlu8i6s2zstfx4xcp4w0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k7avvSSj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tlu8i6s2zstfx4xcp4w0.jpg" alt="Consider Staging Environments and Enterprise Architecture" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The solution architect advises the staging concept and the required technology fundament in dev, test, ref, and prod environment.&lt;br&gt;
Also, supporting the introduction of continuous integration (CI) and continuous deployment (CD) might be essential.&lt;/p&gt;

&lt;p&gt;He considers the enterprise services in the on-premise data center, mainly applications about data exchange, identity management, and handling regulatory requirements.&lt;/p&gt;

&lt;p&gt;Besides the processes, the solution architect considers the interfaces of enterprise applications the solution needs to communicate and give advice for the integration to the development team.&lt;/p&gt;




&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;All the responsibilities mentioned here are the essence of my personal experience and opinion and reflect best practice guides from other solution architects. In case you believe this article can help others sharpen their focus, or reflect themselves, feel free to share it.&lt;/p&gt;

&lt;p&gt;Hope to see you again in the next chapter!&lt;/p&gt;

&lt;p&gt;Photos on &lt;a href="https://unsplash.com"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>career</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Become A Great Solution Architect – Chapter 2 – The Requirements</title>
      <dc:creator>iotcloudarchitect</dc:creator>
      <pubDate>Wed, 22 Dec 2021 17:10:45 +0000</pubDate>
      <link>https://dev.to/iotcloudarchitect/become-a-great-solution-architect-chapter-2-the-requirements-29c2</link>
      <guid>https://dev.to/iotcloudarchitect/become-a-great-solution-architect-chapter-2-the-requirements-29c2</guid>
      <description>&lt;h2&gt;
  
  
  1 - Vision
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CJWV6PF6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9goyrkf6xd42lxefs183.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CJWV6PF6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9goyrkf6xd42lxefs183.jpg" alt="Vision" width="650" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A great solution architect can draw the big picture of a solution in a fashion all stakeholders can read and understand. And he can present it, including all the objectives and how every stakeholder can contribute.&lt;/p&gt;

&lt;p&gt;A common understanding of the solution is essential for the success of the entire project. Because, if some stakeholders have a different opinion or interpretation of the solution, this could cause a problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Transparency is a crucial success factor.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So, if everyone in the project team, from the product owner over the business analysts to every developer and operational staff, can tell you the same story about the solution, the solution architect did a great job.&lt;/p&gt;




&lt;h2&gt;
  
  
  2 - Communication &amp;amp; Presentation Skills
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XRQ2EtMU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wyaza9thwmizo7bg5ixx.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XRQ2EtMU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wyaza9thwmizo7bg5ixx.jpg" alt="Communication &amp;amp; Presentation Skills" width="650" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A great solution architect is a great communicator since this ability is a vital part of his competence. Along the entire road to successfully realize the defined solution, there is a lot to discuss, negotiate, and specify with every single stakeholder. Therefore, the solution architect listens carefully, explains properly, gives valuable advice, and understands the stakeholders’ intentions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Being present on the project – even virtually – gives stakeholders confidence in your work.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Presenting the architecture, results of proofs-of-concept, and sharing insights about the progress of the implementation process and the quality of deliverables is an essential part of his work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do good things, and tell about it.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  3 - Organizational and Leadership Skills
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KB4pJjg0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7bcqpbot8zbm6ljp7wc9.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KB4pJjg0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7bcqpbot8zbm6ljp7wc9.jpg" alt="Organizational and Leadership Skills" width="650" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Of course, the solution architect does not play the role of a project manager on top of his work. But, since he gets directly involved due to his essential position inside the project, he has to deal with deadlines, given resources, and must be focused on the project’s results. His objective is to succeed in achieving the milestones.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Go the extra mile – it’s more than merely writing a concept and test implementation.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Besides this more visual part of work, a great solution architect mentors the lead developer and, if necessary, parts of the development team. His objective is to get an impression of how the development team implements the architecture. In case there is a mismatch, you better know about it in an early stage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mentor the team which implements your ideas.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  4 - Modelling Methods, Frameworks, and Best Practises
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jRfWqBGG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v214rvvqz19rnwwyobly.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jRfWqBGG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v214rvvqz19rnwwyobly.jpg" alt="Modelling Methods, Frameworks, and Best Practises" width="650" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A vital part of a solution architect’s work is to document the architectural approach in a standardized way. Here, architecture design patterns can scaffold the fundaments of the solution architecture.&lt;/p&gt;

&lt;p&gt;Modeling methods like the Unified Modelling Language (UML) depict the solution architecture in a fashion the development team understands and uses it as the basis for their implementation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Standards are your friend.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Since more and more software projects go the agile way, the solution architect is familiar with frameworks like Scrum and Kanban, which help to organize the development and delivery process but also found the planning of product features.&lt;/p&gt;

&lt;p&gt;The solution architect is continuously looking for best-practice approaches and game-changing tools and technologies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stay open to new impressions.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  5 - Knowledge of Software Development
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iu5NpM7Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hvangfsblbv8qv292867.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iu5NpM7Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hvangfsblbv8qv292867.jpg" alt="Knowledge of Software Development" width="650" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At the end of the day, the development team will implement the architected solution. It is, of course, not part of the solution architect’s job. But, it is beneficial to understand how developers think, how they act, and what things they do not know in detail.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Software developer experience helps to assess the developers’ progress and quality and offers the possibility to support the team.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Besides, a solution architect shall be able to code on its own – at least for technical evaluations or entire proofs-of-concept. Therefore, the knowledge of at least one of the top three popular programming languages will boost his possibilities. We are currently (2020) talking about JavaScript (EcmaScript 6, TypeScript, NodeJS), Python, Java, and C#.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Coding skills are helpful, but you don’t need to write production-ready code.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In case there is a need to assess code quality, the solution architect could dive in, but then his knowledge of the particular programming language must be excellent.&lt;/p&gt;




&lt;h2&gt;
  
  
  6 - DevOps
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--X3CrcLiZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jeq21a0h81qn3w69d2de.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--X3CrcLiZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jeq21a0h81qn3w69d2de.jpg" alt="DevOps" width="650" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It defines an approach to shorten the software development life cycle and provides continuous delivery of high-quality software with the help of a dedicated toolchain.&lt;/p&gt;

&lt;p&gt;Since the solution must finally run in the production environment, the solution architect, the development team, and the operations team shall work together to find an excellent process and to select the vital supporting technologies.&lt;/p&gt;

&lt;p&gt;To ensure that, the solution architect helps with the setup of DevOps processes, like the planning of the building, automatic testing, packaging, releasing, configuring, and monitoring.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The objective is to define an (automated) process to build, test, and deploy properly working software.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The solution architect considers the DevOps approach during his architectural work by examining the staging environments, e.g., development, testing, acceptance/reference, and production.&lt;/p&gt;




&lt;h2&gt;
  
  
  7 - Analytical Skills
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4aXiAMqA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3ayagjyg7lawrb4zhuz2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4aXiAMqA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3ayagjyg7lawrb4zhuz2.jpg" alt="Analytical Skills" width="650" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A great solution architect is an excellent listener and structures the insights he gets accordingly. Collecting data, interviewing stakeholders, and reflecting the gained information will help get a holistic picture of the problem.&lt;/p&gt;

&lt;p&gt;Based on this treasure, he can focus on details to fully understand the business needs and processes.&lt;/p&gt;

&lt;p&gt;Another essential attitude of a great solution architect is always to reflect and question the information he gets.&lt;/p&gt;




&lt;h2&gt;
  
  
  8 - Tech Domain and Industry Knowledge
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--k8Hr18VJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wr43pyfwrcwlwfh6783g.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k8Hr18VJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wr43pyfwrcwlwfh6783g.jpg" alt="Tech Domain and Industry Knowledge" width="650" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;An experienced solution architect has a lot of expertise in different types of projects enabled by various technologies. Furthermore, he specializes in some way towards key tech domains, e.g., IoT, Cloud, AI, Big Data, etc.&lt;/p&gt;

&lt;p&gt;There usually are a lot of best-practice approaches, architecture design patterns, and out-of-the-box examples well known in these tech domains. Furthermore, an experienced solution architect gained a lot of knowledge from proofs-of-concept and knows about the pitfalls of key technology implementations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Experience with technology stacks is significant.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Besides the knowledge of specific technologies, it is beneficial to know about the processes, methodologies, and do’s and don’ts of particular industries. Industries like finance, healthcare, energy, automotive, etc., have their own rules and restrictions. Especially in the phase of interviewing or reviewing the business (functional) requirements, domain knowledge can help identify mistakes in specifications. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Industry know-how is beneficial but not crucial.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;All the requirements mentioned here are the essence of my personal experience and opinion and reflect the demands of companies hiring solution architects. Of course, it can’t be a collectively exhaustive line-up, but I deem it touches the most prominent topics.&lt;/p&gt;

&lt;p&gt;In case you believe this article can help others sharpen their focus, or reflect themselves, feel free to share it.&lt;/p&gt;

&lt;p&gt;Hope to see you again in the next chapter!&lt;/p&gt;

&lt;p&gt;Photos on &lt;a href="https://unsplash.com"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>career</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Become A Great Solution Architect – Chapter 1 – The Mindset And Attitude</title>
      <dc:creator>iotcloudarchitect</dc:creator>
      <pubDate>Wed, 22 Dec 2021 08:09:07 +0000</pubDate>
      <link>https://dev.to/iotcloudarchitect/become-a-great-solution-architect-chapter-1-the-mindset-and-attitude-f97</link>
      <guid>https://dev.to/iotcloudarchitect/become-a-great-solution-architect-chapter-1-the-mindset-and-attitude-f97</guid>
      <description>&lt;h2&gt;
  
  
  1 - Understand the problem
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpa8p21dcs7ocn6jkkt1l.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpa8p21dcs7ocn6jkkt1l.jpg" alt="Understand the problem"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The first essential thing I want to mention right at the beginning is: Think problems first, then solutions!&lt;/p&gt;

&lt;p&gt;Please don’t start thinking about technologies before you didn’t understand your customer’s problem precisely. Thinking in solutions from the start might guide you in the wrong direction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problems might seem the same from a first look; however, the solutions are always different in the end!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It would help if you always take your time to study the requirements in detail and be not afraid to ask and challenge the elements with the product owner or business analyst.&lt;/p&gt;

&lt;p&gt;Since the solution architect is the binding element between the functional requirements and the technical solution, he must understand both sides to make the right decisions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Better to ask one time “to often” than to continue without precise understanding!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you don’t follow the advice, you might get into trouble in a later phase of the project since there were one or more crucial things you did not see or did not spend enough detail on it.&lt;/p&gt;




&lt;h2&gt;
  
  
  2 - Stay High-Level
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg408mjngfr7pu9eazpag.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg408mjngfr7pu9eazpag.jpg" alt="Stay High-Level"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The solution architect creates a high-level solution architecture that holistically considers all requirements; nevertheless, it describes the solution from a helicopter perspective.&lt;/p&gt;

&lt;p&gt;Based on the solution architecture document, and the selected technologies, the lead developer creates a technical concept regarding the implementation.&lt;/p&gt;

&lt;p&gt;There might be some cases where the solution architect might be the only one familiar with a chosen technology, and so he also needs to write the technical documentation. But this should happen for the minority of cases since the development team must do the implementation.&lt;/p&gt;




&lt;h2&gt;
  
  
  3 - Be Open For Feedback
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwewk5ng6ja1j78v3r967.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwewk5ng6ja1j78v3r967.jpg" alt="Be Open For Feedback"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Live is a continuous journey of gathering knowledge, and due to this fact, each individual can make mistakes. Moreover, no one can know everything. Therefore, the solution architect should be open to qualified feedback.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Feedback is a gift!&lt;/strong&gt; (even it turns out later that the input wasn’t adequate)&lt;/p&gt;

&lt;p&gt;It is always valuable to consider a second meaning, especially during the solution architecture documents’ review process. Two eyes see more than one, right?&lt;/p&gt;

&lt;p&gt;A good example is, for instance, the feedback from the operations team. If they complain about the chosen technologies, this could turn out into a real problem, since those guys have to run the solution after development.&lt;/p&gt;

&lt;p&gt;Besides, it could be a problem regarding implementation quality, if it turns out that the development team does not own the appropriate skills to realize the solution. In the best case, qualification training before the start of implementation is mitigation here.&lt;/p&gt;




&lt;h2&gt;
  
  
  4 - Stay Open-Minded
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgwvm9rsxjtddbxj8urt6.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgwvm9rsxjtddbxj8urt6.jpg" alt="Stay Open-Minded"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A solution architect is continuously scanning new technologies, methods, processes, and tools that could help him architect kick-ass solutions. Still, the new stuff must pay into problem-solving.&lt;/p&gt;

&lt;p&gt;The inspiration comes, among others, from reading other architects’ blogs, studying best practice approaches, or try real-world examples of solutions based on new technologies.&lt;/p&gt;

&lt;p&gt;Furthermore, attending conferences or workshops can enlarge one’s horizon, and sharing knowledge inside the company would be a fruitful option.&lt;/p&gt;

&lt;p&gt;A solution architect must have a broad knowledge of different technologies. But he should have at least one specialization, something he is a real master, e.g., IoT, Cloud, Big Data, AI, etc.&lt;/p&gt;




&lt;h2&gt;
  
  
  5 - Feel and Take the Responsibility
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnlyn4xioqrw5z3guivk7.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnlyn4xioqrw5z3guivk7.jpg" alt="Feel and Take the Responsibility"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The solution architect is responsible for not less than the success of the running solution. Sure, he does not code on its own or setups the production environment, but the product owner will blame him for missing the objectives in the end.&lt;/p&gt;

&lt;p&gt;Consequently, the solution architect should take an eye on the quality of all the project’s concerns, and especially the solution’s matters.&lt;/p&gt;




&lt;h2&gt;
  
  
  6 - Eye for Quality
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg3jllyfewuh0smbww907.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg3jllyfewuh0smbww907.jpg" alt="Eye for Quality"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After handing over the reviewed solution architecture documents, the implementation by the development teams starts. Up from now, the solution architect must rely on the experience, knowledge, and leadership skills of the lead developer.&lt;/p&gt;

&lt;p&gt;For example, the solution architect should monitor the progress and efficiency of the development team to support them proactively.&lt;/p&gt;




&lt;h2&gt;
  
  
  7 - Leader and Motivator
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc130swo4trocnka7hbwc.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc130swo4trocnka7hbwc.jpg" alt="Leader and Motivator"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Part of the job of a solution architect is to guide, mentor, and challenge the development team. Especially with the lead developer, he should have a close relationship.&lt;/p&gt;

&lt;p&gt;The lead developer is the one to work tightly with the developers, and his motivation and experience will directly impact the work of the entire team.&lt;/p&gt;




&lt;h2&gt;
  
  
  8 - Keep Agile, but also say: "No!"
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Femy9592y2doe7kue45f4.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Femy9592y2doe7kue45f4.jpg" alt="Leader and Motivator"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;During the implementation of the solution, there will come requests for changes. The solution architect must verify the claims and prove what kind of difference it might have on the current architecture or the ongoing development.&lt;/p&gt;

&lt;p&gt;In case it turns out that there would be a need for an impacting transformation, he should take a clear position and evaluate potential negative results.&lt;/p&gt;

&lt;p&gt;The solution architect is responsible for the entire solution! Due to this fact, he should not try to be everybody’s darling, since this is not realizable. It’s about the art of making compromises.&lt;/p&gt;




&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;I won’t say that if you cannot cover all the aspects that you are not a good solution architect. Maybe I also forgot an element you would expect to be listed here.&lt;/p&gt;

&lt;p&gt;But it should give you a brief overview of the experience I gained over many years of professional work as a solution architect, and from the view of a developer or lead developer.&lt;/p&gt;

&lt;p&gt;Hope to see you again in the next chapter!&lt;/p&gt;

&lt;p&gt;Photos on &lt;a href="https://unsplash.com" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>career</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
