No recipe against bad developers


Date of recording: 27.01.2023.

In this podcast episode, we talked to our guest Charaf Hassan, Dean of the Faculty of Electrical Engineering and Information Technology at the Budapest University of Technology and Economics, and Sándor Mester about software architecture and software quality.


Participants


Sándor Mester - Moderator Mester Sándor
Hassan Charaf - BME Dean of the Faculty of Electrical Engineering and Computer Science Charaf Hassan
András Tresch - Quattrosoft managing director Tresch András

Note that the podcast is in Hungarian.


Summary


We discussed software architecture and software quality with Sándor Mester and Dr. Hassan Charaf, Dean of BME (Budapest University of Technology and Economics).

At the beginning of the podcast, we talked about the importance of software architecture. Hassan emphasized that in the software industry, we work with patterns - these are functional, proven methods. A good architect has two perspectives: developer and business. Key qualities include openness, communication skills, accepting and correcting mistakes.

We discussed that there's no "certified architect" degree - this position is achieved through experience. I agreed that a developer can become an architect, but not automatically - it requires experience, aptitude, and problem-solving skills. An architect must not only design but also be able to help at the source code level when needed.

Hassan presented the evolution of software development from monolithic to microservice approaches:

  • Initial monolithic software was difficult to maintain
  • Object-oriented approach better localized errors
  • Component-oriented approach (Corba, Com) created tightly coupled systems
  • Loosely coupled web services emerged in the early 2000s
  • Currently, microservice architecture dominates

Regarding microservices, I shared my opinion that we shouldn't overdo fragmentation. I agree with the approach that a microservice is what a 6-8 person team can develop, and it's not advisable to treat every single call point as a separate service, as this becomes unmanageable.

Hassan emphasized there's no consensus in the architecture world, and the right approach depends on the task. I also highlighted the importance of transaction management - I've seen examples where its absence causes serious problems. In one specific case, after an 800 million HUF development, the first year's operational cost was 1 billion HUF because 30-40 people were constantly fixing the database.

Hassan said, "there's no recipe against bad software developers," but highlighted that many problems can be prevented with proper containerization and middleware services. He emphasized the importance of database protection - anyone who directly runs SQL in a live database "should have their diploma revoked."

On testing, we agreed that automated tests are essential. I mentioned that developers generally don't like testing, and testing companies are often financially interested in not automating. I shared an example where we managed to automate in 90 days what previously required 10 people doing manually.

Hassan added that architects need to know the quality of software they're releasing, and test coverage is a critical factor. Regarding development methodologies, he highlighted the iterative approach that helps identify errors early.

Hassan brought up IT security as an increasingly important design consideration. At their university, they hold joint courses where IT security professionals and software developers learn together to "design for security."

Hassan mentioned new aspects to consider in architecture design:

  • Energy efficiency (green software)
  • Performance and response time
  • IT security

I mentioned that hardware has developed exponentially, making developers comfortable - spreading the "the hardware can handle it" mentality. This led to waste that's difficult to remedy afterward.

Hassan added that architects must also consider performance parameters and be decisive. "A bad decision from an architect is much better than standing still, which creates panic among developers."

We expressed strong opinions about crash course developer training. I agreed with Hassan's view that real expertise can't be acquired in 6 months. As a company leader, I don't believe someone who never had programming as a hobby could meaningfully contribute to serious projects after a 6-month training.

Hassan stated: "I don't believe in these miracles. These are substitute actions." He emphasized that IT needs clear categorization of roles and defining the qualifications for them.

At the end of the conversation, we discussed selecting software development partners. Hassan emphasized the importance of references and advised that clients should have technical experts who monitor development.

I agreed that paper-based references aren't enough - you need to actually examine previous work and the development team. I emphasized that "you don't need statements, you need to go out and check" - unfortunately, few people apply this approach in recent years, though it could prevent many derailed projects.

In summary: good software architecture is based on experience and considers both technological and business aspects. Combined with proper testing, security considerations, and performance optimization, it results in stable, reliable systems that not only work but are maintainable and expandable in the long term.


Note that the podcast is in Hungarian.