How to become a software architect at Elia Group & 50Hertz?

Soulaiman Ghanem
Elia Group Engineering Blog
5 min readJan 19, 2021

--

Our architects for Tailor Made Development

We are a +20 architects team at TMD. Gilles (our manager) hosts a biweekly meeting where we share projects and product updates. There is always room for technical discussion or presentation about a new adopted technology, tech stacks comparisons or plan for off-boarding a dying one!

We regroup ourselves in smaller skill groups to work on one or more domains (unifying the development infrastructure, upgrading DevOps infrastructure, optimizing the build and release pipelines, Docker and K8s…).

Each architect is assigned to one or more projects. She or he is the technical lead to form and guide the technical decisions: Is it web or thick client? Relational, NoSQL or graph-based storage? Caching strategy? Development team on-boarding? An endless list of interesting topics.

We team-up with other divisions and departments as a cross-functional team. DevOps, bridging cloud & on-premise development and building cutting-edge grid management systems are very active squads within the Elia group.

Whether we meet with the business stakeholders or the development team, we carry our thinking toolbox (system thinking, problem solving and decision making tools) and make sure to deliver our ideas and arguments verbally or visually.

If you like the team so far (I forgot to mention: we are agile and use both scrum and Kanban), continue to read more about the technologies we use and the skills we have.

Tech stack & roadmap

Our development stack is based mainly on Microsoft technologies. We develop and maintain applications written in C# and ASP.NET. However, for some specific products, we use Python and R. A wide range of storage systems, message buses, distributed caching systems and monitoring tools are supporting the running and in-development enterprise applications.

SOA is the main architecture we adopt. In the last decade, WCF played a big role in implementation. RESTful web services have been replacing the legacy services alongside microservices and API-first architecture.

As an internal software factory for the Elia Group enterprise, we develop desktop, web and mobile applications for our customers. UWP for thick clients (It is replacing the old WPF clients), ASP.NET Core and VueJS for web and Xamarin forms for iOS and Android.

Over the years, we developed our own framework for development (Arc4u). It consists of Nuget packages, .net boilerplate and code and architecture best practices. A new solution will have at least the following components:

  • Facade (RESTful API): the entry point to the application. authorized clients can communicate with it. Swagger UI is also available for development teams.
  • Interface (API for backend): for machine-to-machine communication, each solution will provide a separated versioned API. It is deployed as a SDK and packaged as Nuget.
  • Business layer: performes algorithms, business rules and validations.
  • Data access layer: an abstraction layer between the business logic and the storage. EF (Core) is the used ORM but never exposed to the higher layers.
  • Service agent: to communicate with non-database systems like FTP or for service to service communication using SDK proxy.
  • Scheduled jobs: sometimes we need to run recurring jobs within the application. This component abstracts the underlying system (Hangfire).
  • Messaging: event driven architecture can be implemented on a solution level (multiple backends) or cross applications. NServiceBus serves as an abstraction layer where we may use RabbitMQ or Kafka as the underlying messaging system.
  • Domain model: nothing more than entity definitions.
  • Caching: is applied in all layers on client and server sides. Local caching (stateful) may be enough for small projects. However, distributed caching using Redis or SqlCache is preferable to ensure stateless architecture.
  • Infrastructure: for logging (Serilog for example), authentication and authorization (OpenID, OAuth2 and ADFS).

2021 will bring new technologies and frameworks. .Net 5 as successor of .net framework and .net core. Blazor as standard for web applications, more support for Docker and Kubernetes and supporting HTTP2 /gRPC.

Join us as software architect

Being an architect at Elia Group is interesting and challenging at the same time. 100% of in-house applications running on the enterprise infrastructure have been developed by the TMD team. They are securing the power supply in Belgium and Germany. Therefore, the architect as technical lead is responsible for taking care of all aspects of the solution like performance, availability, maintainability, resilience and many other non-functional requirements (NFRs). Security and compliance play a high role in a Transport System Operator (TSO). At the end, we act in the interest of society and ensure to keep the lights on for millions of people.

Hard skills we require

The ability to learn fast and keep yourself updated with new technologies and new trends is a must. Architects should validate the business requirements and challenge them as well as develop Proof Of Concepts (POCs) and pick the right tech stack.

The architect is responsible for the whole development lifecycle. Gathering and analyzing the functional requirements, create a high level design, keep a close eye on the development team progress, review committed code and coach the developers and plan the release of new versions or features to staging or production.

DevOps mindset and Azure DevOps server experience are vital skills for applications development and maintenance. The architect designs and manages Git branching and policies as well as designs the CI/CD pipelines.

Soft skills we encourage

We believe that being a software architect in any organization means having the following soft and communication skills:

  • Leadership: being an architect implies being a leader. Why? You are guiding and helping the team to take and form technical decisions and validate them as well. In addition, you are the go-to person for both business and tech teams. Motivating and supporting the team on both technical and non-technical sides are highly valuable characteristics.
  • Negotiation: hard but necessary skill. A common use case where you need this skill is architecture trade-offs to negotiate non-quality attributes.
  • Decision making: you are responsible for defining the architecture and design principles. Considering technical debts, system integration and future roadmap are key factors for the strategically optimal decision.
  • Teamwork: people skills are essential in Tech. Moreover, the architect is an interface to business, the development team mentor and the facilitator when it comes to build and ship the code. You work closely with many stakeholders (like project sponsor or DevOps) and being a good listener is a must.

Join the growing team

If you are a senior software engineer or architect who would like to work with us, please apply here!

--

--