OPRETO BLOG

The Importance of Software Architects in Agile Development

The Importance of Software Architects in Agile Development

6 minute read

The role of the Architect in an agile delivery group is a crucial one that is often misunderstood, with its importance understated. But architecture is critical to the success of any software project, and even more so in an Agile software team, as the Architect has additional key roles there. Armed with technical expertise and the ability to provide direction, Architects ensure that projects are completed with high quality, efficiency, and the right tooling. In addition, architects manage technical risk, foster collaboration, and play a key role in driving innovation within the team and the organization. The combination of technical knowledge, leadership, and strategic thinking makes the Architect an indispensable member of any agile delivery team. In this article, we will examine the role of the Architect in greater detail, highlighting the essential responsibilities and the benefits of having one on your agile delivery team. Providing Technical Direction During an agile softwar...

When Everything is Excellent, Nothing is Excellent

When Everything is Excellent, Nothing is Excellent

5 minute read

The current crop of generative AI (ChatGPT, Dall-e 2, etc) may be a blessing for individuals, but they could prove a pestilence for our civilization in the short term. For every door they open, it seems to me they also threaten to wipe away whole towns of visual artists and copywriters. And as consumers of information, we are doomed to be overwhelmed, our attention span drowned in torrents of content. Our eyes and minds will be overfull. Our time will be drained away by too much being said too well, and sharing platforms that monopolize our attention too well. I am full of sadness for my ten year old daughter, who just discovered cartooning. It’s all she wants to do. Her room is littered with sheaves of paper covered with pirouetting sausage-limbed mannequin sketches, as she explores the dance in drawing; paper mountains of eye sketches (squinting eyes, glaring eyes, cute eyes, dragon eyes); piles of tortuously drawn hands, wrought by tiny hands and an ever growing collection of pe...

To Infinity and Beyond: The Efflorescence of SaaS

To Infinity and Beyond: The Efflorescence of SaaS

7 minute read

There are many software systems that can help your business grow and succeed; many of these have undergone capitalization and become well-known Software as a Service (SaaS) offerings, while some are open source software systems you can freely download, modify and host yourself. It is increasingly rare to commission and run software systems built to your specifications by software artisans. You might be asking yourself whether to pay the subscription costs for a SaaS product, or if you’re better off putting in some development and deployment work to host and support your own in-house systems. Well, there is a secret benefit to using SaaS solutions that makes it more appealing for nearly any use case, with one glaring exception where it makes more sense to run your own servers. All software systems cost money and time. The systems you choose to host yourself incur hosting fees, development and support costs, and often, at the small size of a boot-strapping startup, the time and energ...

Swiss Army Knives Are Agile

Swiss Army Knives Are Agile

4 minute read

Every discipline and every niche has a “Swiss Army knife of X”. Why are they so prevalent, and what makes them so valuable to engineers and software developers? In the summer of 2003, I acquired my first truly useful Swiss Army knife. I had been working my first term as an electrical engineering co-op on the floor of an automotive aluminum foundry. The facility was highly automated, particularly by foundry standards, and one of our suppliers, Güdel, one day brought branded Classic SD pocket knives in as promotional swag. My supervisor tossed one across the office to me, and it became one of a few lasting impacts he had on my life: two decades later, I still carry one with me everywhere I go (though I’m on my fourth or fifth now, thanks to encounters with airport regulations and nightclub bouncers over the years). The Classic SD is a small knife, 58 millimeters long and weighing 21 grams. It has seven tools: a blade, a screwdriver and nail file, scissors, tweezers, a toothpick, and...

How to Start New Agile Software Projects: Selecting An Architecture

How to Start New Agile Software Projects: Selecting An Architecture

3 minute read

In my last post, I described the initial phase of determining the trajectory for a greenfield softtware project. Once you have established your vision and created a roadmap, the next step is to decide how the software system is to be built. This involves finding a suitable architecture for the system and devising a macroscopic design of the different components and interactions involved. This post is part of a series. Check out the other posts in How to Start New Agile Software Projects. Identify Qualities, Constraints & Risks I usually rely on the following documents to accomplish this step: Architecture diagram In order to produce a useful architectural diagram of your solution, you need to spend some time thinking about how much architecture is actually required of the project. After all, every system has an architecture, whether it was planned or not. You could rely on a canned architecture that is tied to the infrastructure or framework you’ve decided to use, or you c...

How to Start New Agile Software Projects: Vision & Mapping

How to Start New Agile Software Projects: Vision & Mapping

3 minute read

If you’re a technical leader overseeing the development of a greenfield software project, then you know how crucial it is to get the design right. In this article and the next, we’ll explore how to approach the initial technical modeling of the system. We’ll look at some of the best practices for making critical decisions to establish an efficient development plan that will lead to maximum system quality and reliability. We’ll cover concepts such as the high-level characteristics of a system, user story maps, and what product roadmaps should look like. This post is part of a series. Check out the other posts in How to Start New Agile Software Projects. In a follow-up post later this week, we’ll also discuss how to evaluate risk and use that knowledge to plan the initial system architecture. Identify Requirements The path to an effective software solution is paved with untold perils, many of which are difficult to predict at the outset. The initial design phase allows us to iden...

Tools Startups Can Use in 2023

Tools Startups Can Use in 2023

10 minute read

Business startups face many different and complex challenges, and all of them threaten to slow down or break momentum during the challenging initial stages of business development. Luckily there are a variety of approaches, techniques, and tools available in 2023 to help you get started, bust through barriers, and break stalemates. From using services provided by others to adopting process changes that build good habits from within, here are the four biggest blockage-breakers we have used at Opreto in 2022 to keep our business moving forward. Tool 1: Adopt Opinionated Software Systems There are many software systems that can help your business grow and succeed; many of these have undergone capitalization and become well-known Software as a Service (SaaS) offerings. With comparatively small monthly costs, the subscription model used by these services offers a way to quickly deploy and test the various tools and determine their fit. Once you find one, an entire role can be augmente...

Experiment and Leap

Experiment and Leap

3 minute read

As a technical leader, you must make software development decisions that minimize risk for your company, and doing nothing may seem like the safest path. However, sometimes the risk of doing nothing can be the most significant. So, how do you know when to take a leap and go for it and when to hold steady? Software development can be like a roller coaster ride - thrilling highs, nerve-wracking drops, and unwelcome surprises. But it can also teach us an essential lesson about risk-taking: sometimes, you must go out of your comfort zone and take a leap of faith to succeed. The consequences of inaction In software development, it pays to be paranoid. It’s easy to get caught up in the excitement of creating something new and shiny, but the optimal move is often to take a step back and ask yourself: what happens if I do nothing? What are the potential risks involved in introducing changes to the software now? Taking a few moments to assess the situation is like having insurance - you ...

Detroit River Boat Tracker Project

Detroit River Boat Tracker Project

8 minute read

You’ll often hear about the importance of getting started, breaking ground, getting moving on a thing. Whether you have a specific goal you want to achieve, or you just want to get your feet in the door of a particular industry or technological stack, the outlook from a thousand feet can be daunting. So how do you choose where to begin? What non-trivial, useful chunk of that goal can you attack right now, that will set you on a realistic path toward that final objective? In my decades of sometimes stumbling, sometimes walking, and sometimes sprinting through this process across a wide swath of technology combinations, I can think of few clearer examples of the right approach than a project I’ve assembled over the past couple years. I live in Windsor, on a street aptly named Riverside Drive. A variety of boats, including much of the shipping traffic of the Great Lakes (yes, we call thousand-foot lake freighters “boats” here), pass through a segment of the Detroit River approximatel...

How to Start New Agile Software Projects: Business Domain Discovery

How to Start New Agile Software Projects: Business Domain Discovery

4 minute read

How do you help someone solve a problem if you don’t speak the same language? You learn their language and teach them a bit of yours. Without a shared language, you won’t understand the problem, and your solution may not end up being a fit. You are endangering the entire project. Read on to find out how I establish a shared language with new clients. This post is part of a series. Check out the other posts in How to Start New Agile Software Projects. As an Agile Software Architect and a startup founder, I am one of the first to develop new client relationships and projects. When the client starts working with us, I have to discover enough about the project to solve their problem as quickly and efficiently as possible. Motivation The Domain of the project encompasses the entire problem space. It usually consists of a set of processes, an ecosystem, and a set of users of the system. Users or stakeholders that have the highest level of knowledge of the domain are called Domain Expe...