Sign In

Jesse J.

Experienced Software Architect, Software Engineer, and Developer Advocate

Jesse J. is a Staff Software Engineer at Reforge based in Portland, Oregon.12 He is a veteran with over 20 years of experience in software and hardware focused roles.1 Jesse's LinkedIn profile indicates that he attended Portland State University.1 His professional background includes experience in embedded software engineering, as he has been described as a high-quality, high-velocity manager and developer with ample experience fielding performance.3

Jesse has worked for several companies throughout his career, including MO, CipherHealth, and Conversa Health.2 His expertise spans various areas of software development, and he has been referred to as an experienced Software Architect and Developer Advocate.4

Highlights

Aug 4 · linkedin

In recent conversations with a few different product managers, I've heard really strong pushback against doing any sort of meaningful architecture and systems design before having engineers start writing code. The most common reason given was, "we're AGILE and that means we don't try to design the whole system first, we just do it as we go".

From the AGILE Manifesto itself:

Principle #9: Continuous attention to technical excellence and good design enhances agility.

But doesn't spending time on architecture and systems design force you to over-plan, slow down time to delivery, and generally move us closer to "waterfall" software design?

No, but I can see why folks might think that way.

One of the paths that leads to this mentality is a misunderstanding of what architecture actually represents:

"Architecture represents the significant decisions, where significance is measured by cost of change." - Grady Booch

Put another way, architecture helps reveal where some of the potential "gotcha" points are in your idea/feature/project.

One of the biggest time and resource sinks I've seen in my career isn't building new things, it's changing things after they're built. These sinks grow as the system ages and become part of the shaky foundation your app continues to grow upon, further increasing the cost of change.

Growing up in a family of construction workers, I often heard the phrase, "Measure twice, cut once." If you cut boards to the wrong length, you might be able to use some of them but more than likely you'll need to go get new boards which will take additional time/money and slows down overall delivery.

How does this apply in software?

In this case, our "boards to measure" can be decisions like:

  • database choice
  • microservice versus monolith
  • programming language or framework
  • hosting choice (AWS, Google Cloud, data center, etc.)
  • external/vendor tools and integrations
  • and more...

Reversing these types of decisions once made can be very costly. When done correctly, spending the upfront time to think through the initial architecture and systems design of a project can help you recognize these potential points of reversal before you reach them. You can then use this knowledge to help make the best decisions you can with the information you currently have available.

An additional benefit of spending time upfront on architecture and systems design is the historical artifact aspect. If you do need to change a previous decision or make a new one, architecture and systems design documents give you a map of not only the decisions that have been made but how they interconnect across the system. With that information we should be able to more accurately assess both the upstream and downstream effects of our potential change.

In the end, don't shy away from doing some initial architecture and systems design work as it can often save you time, resources, and a fair amount of deadline slippage later! 😁

Related Questions

What are some of Jesse J.'s notable projects at Reforge?
How did Jesse J. transition from hardware to software roles?
What specific skills does Jesse J. bring to his role at Reforge?
Can you share any insights Jesse J. has on software engineering best practices?
What inspired Jesse J. to pursue a career in software engineering?
Jesse J.
Jesse J., photo 1
Jesse J., photo 2
Add to my network

Location

Portland, Oregon Metropolitan Area