Software Engineer and Software Architect

Tech world is full of buzzwords, and the "software architect" is one of those: I've seen many managers recruiting software architects without having a solid understanding of its meaning. What really distinguish a software architect from an engineer? I've briefly touched this aspect during courses for one of the biggest defense company in Europe.

We live in a epoch marked by deep changes in the human society, Internet and technology enabled everyone to access knowledge by smartphones in our hands. From a society traditional affected by an underflow of information, we shifted to a society overwhelmed by overflow of data. The large availability of sources affected all life aspects, including software development: we need to rethink how we build systems.

In 90’s engineers would have designed communication between two systems by TCP sockets and binary protocols, which required ad-hoc state machines and substantial implementation efforts. Today communication is instead addressed reusing proven solutions, that automatically generates documentation and fault-tolerant code. As for software engineering, many ideas, algorithms, frameworks, and components, are today available, and a modern engineer designs software knowing what to reuse by integration, and what to develop from scratch. Moreover, he makes the software a valuable asset for the future of the company, in such a way that the design supports the software evolution and reduces the long-term maintenance costs.

The software architect is an engineer that makes large use of synthesis to design, having an overall long-term vision of the system purposes.

  • An architect defines the system requirements, after he understands the business domain and company's mission.
  • Designs a system architecture, foreseeing main product evolutions that would benefit of it.
  • Engineers the system to create components that will become valuable assets for the future of the company.
  • Focuses on non-functional requirements to target the business strategic objectives.

A good architect must know what are the "essential software problems" (e.g. the communication, the reliability, the availability, and so on) and how the available technological solutions can effectively cope with them, focusing on long-term costs and business evolutions.

Now, what do you need for your future projects? Are you looking for a developer or who shapes technologies for your business?

Meet Today the Software Engineering of Tomorrow

Build unprecedented products with unbelievable small teams and low efforts.

Contact Us