<?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>Software &#8211; White Box Technologies</title>
	<atom:link href="https://whitebox.tech/software/feed/" rel="self" type="application/rss+xml" />
	<link>https://whitebox.tech</link>
	<description></description>
	<lastBuildDate>Fri, 21 Mar 2025 11:15:21 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>

<image>
	<url>https://mlnpsz1zk9fy.i.optimole.com/w:16/h:16/q:mauto/ig:avif/dpr:2/https://whitebox.tech/wp-content/uploads/2024/07/favicon-1.ico</url>
	<title>Software &#8211; White Box Technologies</title>
	<link>https://whitebox.tech</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Mastering Software Architecture: The Knowledge You Can&#8217;t Afford to Miss</title>
		<link>https://whitebox.tech/mastering-software-architecture/</link>
					<comments>https://whitebox.tech/mastering-software-architecture/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 21 Mar 2025 11:12:11 +0000</pubDate>
				<category><![CDATA[Software]]></category>
		<guid isPermaLink="false">https://whitebox.tech/?p=4319</guid>

					<description><![CDATA[At White Box, we go beyond simply building software; we develop scalable, high-performing, and future-proof solutions. Our process encompasses everything from analysis and architecture to UI/UX design, development, deployment, and thorough testing. We ensure that every phase is executed with precision and expertise. It is crucial to recognize that great software doesn&#8217;t arise by chance. [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>At White Box, we go beyond simply building software; we develop scalable, high-performing, and future-proof solutions. Our process encompasses everything from analysis and architecture to UI/UX design, development, deployment, and thorough testing. We ensure that every phase is executed with precision and expertise.</p>



<p>It is crucial to recognize that great software doesn&#8217;t arise by chance. It begins with a strong architectural foundation.</p>



<p></p>



<h2 class="wp-block-heading">Why Software Architecture Matters?</h2>



<p>A well-structured architecture is essential for the success of any software project. Without it, even the most promising applications may struggle to scale, become difficult to maintain, and ultimately fail.</p>



<p>While you can&#8217;t become an expert overnight by reading a book, having the right resources will guide you toward building better, more intelligent, and more adaptable systems. Read more about <a href="https://whitebox.tech/technical-excellence/" data-type="page" data-id="3421">White Box Core Concepts</a></p>



<p>At <strong>White Box</strong>, we highly recommend two game-changing resources:</p>



<p>📖 <strong>Clean Architecture</strong> by <em>Robert Martin (Uncle Bob)<br></em> 🎥 <strong><strong><strong>Software Architecture Fundamentals</strong></strong></strong> by <em>Neal Ford &amp; Mark Richards</em></p>



<p></p>



<h2 class="wp-block-heading"><strong>Clean Architecture – Robert Martin (Uncle Bob)</strong></h2>



<p><a href="https://en.wikipedia.org/wiki/Robert_C._Martin" data-type="link" data-id="https://en.wikipedia.org/wiki/Robert_C._Martin" target="_blank" rel="noreferrer noopener nofollow">Robert Martin</a>, commonly known as Uncle Bob, is a highly respected figure in the software development community. His book, <a href="https://www.amazon.com/Clean-Architecture-Craftsmans-Software-Structure/dp/0134494164" data-type="link" data-id="https://www.amazon.com/Clean-Architecture-Craftsmans-Software-Structure/dp/0134494164" target="_blank" rel="noreferrer noopener nofollow">Clean Architecture</a>, is an essential reading for any developer who aspires to create enduring software.</p>



<p>What makes this book so valuable? It teaches you how to design modular, flexible, and maintainable architectures that can withstand the test of time. Rather than focusing on a single framework or technology, Uncle Bob’s principles are timeless, making them relevant to nearly any software project.</p>



<p>At White Box, we have integrated these principles into our development process, allowing us to create software that is both efficient and easy to extend and maintain.</p>



<p>If you are committed to writing high-quality, enduring code, this book is essential reading.</p>



<p></p>



<h2 class="wp-block-heading"><strong><strong>Software Architecture Fundamentals</strong> – Neal Ford &amp; Mark Richards</strong></h2>



<p>If you want a hands-on approach, <a href="https://nealford.com/videos/safund-understanding-the-basics.html" data-type="link" data-id="https://nealford.com/videos/safund-understanding-the-basics.html" target="_blank" rel="noreferrer noopener nofollow">this video series</a> by Neal Ford and Mark Richards is an excellent resource. It covers theoretical concepts and delves into the real-world applications of software architecture.</p>



<p>Here’s what you’ll get from it:</p>



<p>📌 <strong>Architectural styles</strong> – Learn about different types of architecture (monolithic, microservices, event-driven, etc.) and when to use them.<br>📌 <strong>Common mistakes (antipatterns)</strong> – Avoid the pitfalls that lead to <strong>unscalable, inefficient, and messy software</strong>.<br>📌 <strong>Practical insights</strong> – Gain practical insights from two industry veterans who have learned what strategies are effective and which ones are not.</p>



<p>This series distinguishes itself by encouraging critical thinking about architecture, rather than merely adhering to a set of guidelines. It is ideal for developers seeking to enhance their skills and acquire real-world architectural knowledge.<br></p>



<h2 class="wp-block-heading"><strong>Applying This Knowledge to Real Projects</strong></h2>



<p>To effectively learn software architecture, it&#8217;s essential to apply theoretical concepts to real projects. At White Box, we promote a culture of experimentation, encouraging our team members to explore new architectural patterns. However, we also emphasize the importance of understanding and adhering to fundamental principles throughout this process.</p>



<p>By integrating these advanced techniques into our projects, we not only enhance our team&#8217;s skills but also improve the overall design and performance of our software solutions.</p>



<p>Here’s how you can start applying these principles:</p>



<p>✅ <strong>Think before you code</strong> – Plan your architecture before jumping into development.</p>



<p>✅ <strong>Prioritize modularity</strong> – Keep components independent and loosely coupled.</p>



<p>✅ <strong>Avoid complexity</strong> – A simple, well-structured system is always better than an over-engineered one.</p>



<p>✅ <strong>Learn from mistakes</strong> – Study real-world architectural failures and understand what went wrong.</p>



<p>✅ <strong>Document your design</strong> – Maintain clear documentation to ensure that the architecture is understandable and maintainable for others.&nbsp;</p>



<p>✅ <strong>Implement testing early</strong> – Integrate testing into your development process to catch issues early and ensure quality.&nbsp;</p>



<p>✅ <strong>Prepare for security</strong> – Integrate security considerations into your architecture from the beginning to protect against vulnerabilities.&nbsp;</p>



<p>✅<strong>Stay updated with industry trends</strong> – Keep learning about new technologies and architectural patterns that can enhance your approach.&nbsp;</p>



<p></p>



<h2 class="wp-block-heading"><strong>Start Your Software Architecture Journey Today!</strong></h2>



<p>Software architecture is not just a technical skill; it embodies a mindset that enables you to create enduring software. Whether you learn through books, videos, or hands-on experiences, dedicating time to mastering architecture fundamentals will significantly benefit your career.</p>



<p>🚀 <strong>Which architectural principles or books have helped you the most? Let’s discuss this in the comments</strong></p>
]]></content:encoded>
					
					<wfw:commentRss>https://whitebox.tech/mastering-software-architecture/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Sales and Marketing Tool Case study</title>
		<link>https://whitebox.tech/sales-and-marketing-tool-case-study/</link>
					<comments>https://whitebox.tech/sales-and-marketing-tool-case-study/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 12 Apr 2024 15:56:16 +0000</pubDate>
				<category><![CDATA[Software]]></category>
		<guid isPermaLink="false">https://temp.whitebox.tech/?p=1590</guid>

					<description><![CDATA[Challenge: Our customer’s B2B sales team needed help managing their complex sales process, getting useful feedback and insights about their activity and expected sales results. Existing off-the-shelf tools were assessed but did not meet the expectations of the sales management team so White Box Technologies was asked to build a custom solution to fit their [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p></p>



<h3 class="wp-block-heading">Challenge:</h3>



<p>Our customer’s B2B sales team needed help managing their complex sales process, getting useful feedback and insights about their activity and expected sales results. Existing off-the-shelf tools were assessed but did not meet the expectations of the sales management team so White Box Technologies was asked to build a custom solution to fit their needs perfectly.</p>



<h3 class="wp-block-heading">Solution:</h3>



<p>Custom-built Sales Management Tool, covering the whole sales process and keeping track of salespeople’s activity and results.</p>



<h3 class="wp-block-heading"><strong>User Group:&nbsp;</strong></h3>



<p>Sales and marketing professionals (managers and agents)</p>



<h3 class="wp-block-heading"><strong>Context</strong>:<strong>&nbsp;</strong></h3>



<p>Our customer, a large multi-national company in the field of Telecommunications, was in need of a tool to assist with their sales and marketing activities, managing the whole sales process from marketing Leads to closing successful sales Opportunities.</p>



<p>After the evaluation of multiple of off-the-shelf Sales Management solutions, our customer decided to entrust us to build a custom solution for them, perfectly tailored to their complex sales process – which gives them an important competitive advantage.</p>



<h3 class="wp-block-heading"><strong>Project</strong>:<strong>&nbsp;</strong></h3>



<p>The project involved a team of 6 software engineers from White Box, testers and Operations team, working together with the Product Owner and Business Analyst from the Customer. The team used Scrum framework to organize its activities and managed to deliver the initial version of the software in 8-9 months, working in 2 week sprints.</p>



<p>Years later, the product is still being evolved by a similar size team from White Box, delivering new features and changes to existing processes, with ease and low risk for unexpected bugs.</p>



<p>Our team is responsible for the whole development life cycle, from analysis of new requirements, development, testing and Level 2 support, handling incidents and solving all issues that may occur in a production environment.</p>



<h4 class="wp-block-heading">Maintaining Flexibility</h4>



<p>This relative flexibility of the solution after years of evolving requirements following ever-changing business needs, was made possible by taking constant care of the quality of design (using principles such as: <strong>Clean Architecture, DDD, Modularity</strong>, low coupling, etc) as well as the quality of the code (making constant use of SOLID principles, OOP paradigms, design patterns, etc).</p>



<p>Good architecture is key to the future flexibility of any software product and our team took great care to keep the architecture clean at all times. Architecture is not just what the team decides at the beginning of the project, architecture is what evolves out of the code written every day by every developer, so it is essential that all team members are aware of their role in keeping the code easy to maintain and to understand in the future, as well as delivering the current requirement from the sprint backlog.</p>



<h4 class="wp-block-heading">Technology</h4>



<h4 class="wp-block-heading"><strong>Stack</strong></h4>



<p>The technology stack we considered most suitable for this project:</p>



<ul class="wp-block-list">
<li><strong>Java </strong>in the backend, using <strong>Spring </strong>for dependency injection, Spring Security, Spring Transactions, JPA, Hibernate, Elasticsearch for fast fuzzy queries, Relational database for persistence and data querying, Kafka message broker for integrating with other software systems, Redis for cacheing, etc.</li>



<li><strong>Angular </strong>in the front-end, with <strong>Angular Materia</strong>l design components</li>



<li><strong>Deployed in Docke</strong>r containers in a Kubernetes cluster on prem</li>



<li>Continuous Integration / Automated builds and deployments using <strong>TeamCity</strong></li>



<li>Thousands of <strong>automated tests</strong> (unit, integration, API) checking the integrity of our system at every commit and providing feedback in under 20 minutes (for acceptance testing pipeline cycle)</li>
</ul>



<h4 class="wp-block-heading"><strong><strong>Architecture</strong></strong></h4>



<p>The architecture of our solution was designed using principles from: Hexagonal Architecture/Ports-and-adaptors (concepts first introduced by Alistair Cockburn), DDD (Domain-Driven Design, developed by Eric Evans), with a rich domain model containing all of the business logic (handling the essential complexity) and isolated from the infrastructure details (handing the accidental complexity of our system).</p>



<h4 class="wp-block-heading"><strong><strong>Success Factors</strong></strong></h4>



<p>The team had a high level of autonomy, choosing their own tools, technologies and way of working together to achieve the business goals of our customer.</p>



<p>Passionately discovering all business details needed to fully cover the complexity of our customer’s sales and marketing proprietary processes, in a way becoming sales and marketing experts ourselves, striving to talk the language of our users and become trusted advisors also in aspects related to the business side, not only technical.</p>



<p>Constant evaluation and improvement in the way we work, interact with our customer, communicate among ourselves and with all other stakeholders.</p>



<p>Continuous improvement for us as software professionals, keeping up to date with the evolution of technology, best practices and learning from the best in the world in order to bring the most value to our customers’ projects. We read books, attend conferences, watch training videos and share our passion and knowledge among us, in order to be sure we are near the top, not only compared to our local competition, but in the global context. </p>



<p>Our job provide us the unique opportunity of being world class software engineers, regardless of our location, it is only up to us if we make use of this opportunity, by channeling our passion for software and our determination to improve.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://whitebox.tech/sales-and-marketing-tool-case-study/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Quality in Software</title>
		<link>https://whitebox.tech/quality-in-software/</link>
					<comments>https://whitebox.tech/quality-in-software/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 06 Feb 2023 08:47:24 +0000</pubDate>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Software Architecture]]></category>
		<category><![CDATA[Software Development]]></category>
		<guid isPermaLink="false">https://temp.whitebox.tech/?p=1058</guid>

					<description><![CDATA[Quality As in almost every other industry, we hear the word quality a lot in Software. What company does not display it proudly on their website or advertise it in their marketing material? Ask any sales rep of any software company and they will say quality is most important and is what they deliver on [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">Quality</h3>



<p>As in almost every other industry, we hear the word quality a lot in Software. What company does not display it proudly on their website or advertise it in their marketing material? Ask any sales rep of any software company and they will say quality is most important and is what they deliver on every project.</p>



<p>Yet still, in reality, most projects are seriously lacking quality and most members of our profession have a hard time giving a very convincingly definition of what quality means. Most projects, in best case scenarios, start by looking pretty and in good shape while newborn and very young, but do not age gracefully and sooner than anyone would hope, development slows down significantly and many changes result in unexpected (and apparently unrelated) failures and sometimes even costly bugs.</p>



<h4 class="wp-block-heading">How it&#8217;s built is just as important as what it does</h4>



<p>So what does quality mean? What are the characteristics of a genuinely well-built software product and why do they matter? According to Robert C. Martin (Clean Architecture) any software product has two main values:</p>



<ul class="wp-block-list">
<li>first, the more obvious value, the functionality it provides to the Business (the customer). It is the what, that the Customer has hired us to deliver. Hopefully, at go-live, our software does exactly what it was asked of it and exactly what is needed at that moment.</li>



<li>however, there’s a second, maybe even more important quality: how easy it is to change the software, to accommodate new requirements in the future. This is not very obivous at first, when ideally most of the requirements are already built into the product. But if this was done at the expense of its flexibility, its ability to easily change with time, the first value will diminish very rapidly until the whole project becomes virtually useless and needs to be rebuilt.</li>
</ul>



<p>In real life, most projects are so focused on What they deliver that the How it’s achieved is given a seat somewhere back in the stands, at nosebleed distance from the main stage. This is partly because how well a software system is build is not very easy to measure, especially if the customer is not exactly savvy in terms of software architecture, clean code and the best practices of our profession.</p>



<h4 class="wp-block-heading">How to achieve quality</h4>



<p>Building a software that remains relatively easy and safe to change as years (and tonns of new requirements) go by is no trivial thing. It takes constant care, from the start of the project and throughout it’s lifetime. Here are some of the things that can help, if applied diligently.</p>



<p>According to Dave Farley (Modern Software Engineering), in order to deliver quality in our day to day work, we need to focus on two main competences:</p>



<ul class="wp-block-list">
<li>we need to become experts at learning</li>



<li>we need to become experts at managing complexity</li>
</ul>



<h5 class="wp-block-heading"><strong>Learning</strong></h5>



<p>Beside being one of the best predictors of job motivation, constant learning is the essence of what Software Development is all about: beside the most obvious part of our constant learning, the technology we employ and the techniques for applying our knowledge to the problem domain, we are in a profession of learning mainly because before we build anything useful, we must first be sure we understand very well what we’re supposed to build.&nbsp;</p>



<p>According to Dave Farley, this is accomplished using the behaviours of:&nbsp;</p>



<ul class="wp-block-list">
<li>Working iteratively</li>



<li>Employing fast, high-quality feedback</li>



<li>Working incrementally</li>



<li>Being experimental</li>



<li>Being empirical</li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>&#8220;Software development is an exercise in exploration and discovery. We are always trying to learn more about what our customers or users want from the system, how to better solve the problems presented to us, and how to better apply the tools and techniques at our disposal.</p>



<p>[..] Learning is at the heart of everything that we do. These practices are the foundations of any effective approach to software development, but they also rule out some less effective approaches.&#8221; (Dave Farley)</p>
</blockquote>



<h5 class="wp-block-heading"><strong>Complexity</strong></h5>



<p>The real enemy of a software developer doing a good job, in terms of the quality they produce, is often the complexity of the systems we need to work on. If we were asked to work on simple, disposable apps, with short lifespans and no prospect for them to ever change, then this whole discussion about how things are done would have no point.&nbsp;</p>



<p>However, in Enterprise Software at least, systems are used for many years (sometimes decades), with the expectation of flexibility and adaptability with the changing business requirements. And one element that adds most complexity to our software in an Enterprise environment is the integration with other systems, upstream and downstream.&nbsp;</p>



<p>Most modern software systems are complex and large, too complex and large to completely fit into our brain at any time, regardless of how smart our engineers are. So we need to use techniques to properly manage this complexity, among which, according to Dave Farley, top candidates are:</p>



<ul class="wp-block-list">
<li>Modularity</li>



<li>Cohesion</li>



<li>Separation of concerns</li>



<li>Information hiding/abstraction</li>



<li>Coupling</li>
</ul>



<h4 class="wp-block-heading">Maintaining Flexibility</h4>



<p>Maintaining the flexibility of a solution, after years of evolving requirements following ever-changing business needs, is made possible by taking constant care of the quality of design (using principles such as: Clean Architecture, DDD, Modularity/Cohesion, low coupling, etc) as well as the quality of the code (making constant use of SOLID principles, OOP paradigms, design patterns, etc).</p>



<p>Good architecture is key to the future flexibility of any software product and our team took great care to keep the architecture clean at all times. Architecture is not just what the team decides at the beginning of the project, architecture is what evolves out of the code written every day by every developer, so it is essential that all team members are aware of their role in keeping the code easy to maintain and to understand in the future, as well as delivering the current requirement from the sprint backlog.</p>



<p>One way to ensure the architecture can support such flexibility over the long term si to&nbsp;design using principles from: Hexagonal Architecture/Ports-and-adaptors (concepts first introduced by Alistair Cockburn), DDD (Domain-Driven Design, developed by Eric Evans) &#8211; with a rich domain model containing all of the business logic (handling the essential complexity) and isolated from the infrastructure details (handing the accidental complexity of our system).</p>
]]></content:encoded>
					
					<wfw:commentRss>https://whitebox.tech/quality-in-software/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
