Episode 32: "Righting Software" with Juval Lowy

Our guest for this episode is author, teacher, and keynote speaker, Juval Lowy.

Hosts: Fahad Shoukat and Andrew Wolfe

Guest: Juval Lowy

Juval Lowy is the founder of IDesign and a master software architect. Over the past 20 years, Juval has led the industry in architecture and project design with some of his ideas such as microservices serving as the foundation of software design and development. He has helped countless companies deliver quality software on schedule and on budget and has mentored hundreds of architects across the globe, sharing his insights, techniques, and breakthroughs, in architecture, project design, development process, and technology. Juval participated in the Microsoft internal strategic design reviews and is a frequent speaker at the major international software development conferences. He also published several bestsellers, and his recent book is Righting Software (Addison-Wesley, 2019). Juval conducts Master Classes around the world, teaching thousands of professionals the skills required of modern software architects and how to take an active role in the design, process, and technology. Microsoft recognized Juval as a Software Legend as one of the world's top experts and industry leaders.

Show Notes

Software Architecture

  • Architecture can be summed up as business enablement. It's easy to describe software architecture, but difficult to practice.
  • We see a high turnover rate in software architecture because of the comprises. You start out with big goals but give in to expediency, deadlines, and excuses. That erodes you overtime. IF you don't compromise and insist on doing it right, you can last longer over time and not burn out.
  • "Earn Your Complexity" is the idea of starting simple. As long as you keep it simple filling your head with all the things you need right now. It's knowing where you're at and knowing where you want to be over time. You can apply that to architecture and code and it will relieve the pressure.
  • Software systems used to be complicated, but now they are complex systems. You lose in engineering when you give into complexity. If the project has an unknown level of complexity, it should never be done.

"Righting Software"

  • It focuses on saving our capsized industry. The reason the industry is so bad is because we've lowered the bar. Success today in software is anything that doesn't bankrupt the company right now. If you define success correctly, then 95% of projects actually fail.
  • The objective of the book is to help people succeed and become mature engineers.
  • To fix the software industry, we just have to implement sound, simple engineering principles that every mechanical engineer or bridge-builder knows, into how we build software.
  • In software, there's no physical waste like in a physical engineering project. It doesn't mean that there is no waste, it means that the waste is hidden. The way to solve it is by adhering to the simple engineering principles.
  • In our world, people are more interested in doing agile, than being agile. Being agile takes a lot of hard work.
  • Agile was developed in the late 90s as a cure for Waterfall. Now, Agile is a disease masquerading around as its own cure. Developers don't want to do agile, they just want to code.
  • For good project design, you have to know roughly how long a project will take and how much it will cost. Anything valuable requires time, resources, energy, and planning. You try to minimize risk by making educated decisions. We must be making educated decisions or you fail before writing the first line of code.

Scientists vs Engineers

  • Our entire pipeline is broken. Universities teach students science, not engineering when it comes to software education. Science and engineering are 2 completely different ways of thought.
  • The way we do software today is similar to the Dark Ages. There were islands of knowledge and hygiene, but for the most part, people had short lifespans and were covered in mud. It took 1,000 years to solve the Dark Ages. Why did it take so long to emerge from the Dark Ages? Islands of knowledge were not enough.
  • Computer science is knowing that a tomato is a fruit. Software engineering is knowing that the tomato doesn't belong in a fruit salad.
  • In science, if something is useful it's irrelevant. The only way they know something is good is if another scientist says that it's good. For an engineer, they would never do anything unless someone wants it, there's money for it, and there has to be use for it.

Software Fundamentals

  • Any best practice in any field, you don't have to understand why every principle works to be able to apply it. You don't have to understand why the simple engineering practices are good to be able to apply it to your work.
  • In our field, we are aren't worried about the fundamentals, but we should always be working and practicing good fundamental system design. True mastery is knowing the fundamentals well.
  • Functional decomposition is abstract. It contradicts the nature of the universe because it tries to violate the first law of thermodynamics. The first law states that you can never add value without sweating. Architects like adding value, but by doing it easily. The allure of the free lunch is irresistible. Microservices like this always fail.

Integrity in the Software Industry

  • There must always be trust between the customer and the engineer. Those with integrity will do things correctly. Every attempt of doing the job without the fundamentals never works. We cannot expect different results when we continue to do the same thing.
  • You can finish projects on time and under budget. You have to push away jobs. You increase your demand by insisting on working correctly. If you succumb to the whims of a lunatic manager or hopelessly lost customer, you dilute your value as an engineer.
  • You only lose gigs when you start working like the quacks and the charlatans. There is never a downside to working correctly. It's the responsible and professional thing to do.
  • The only way to meet a deadline is to be on time throughout the process. You have to have precision throughout your project.
  • There has to be a phase shift over time. We believe it's going to happen sooner rather than later. The combination of simple software principles and new technologies will help us push forward.

Thanks for reading through! We want to share our best Thoughtful Software Practices with you in a free E-book. Grab your copy by subscribing to the Thoughtful Software newsletter.

Build Thoughtful Software
Fahad Shoukat
Written by

Fahad Shoukat

Fahad has a B.S. in Electrical Engineering and an MBA. He brings over 15+ years in Business Development, Strategy, Sales, Product, and Marketing in various industries such as software development and Internet of Things (IoT). His experiences have led him on an unwavering pursuit to meet thoughtful people and build thoughtful software.