Matteo D'Urso · software developer & product engineer

Software for real problems.From products to connected systems.

I design applications, automation and integrations that can extend from software to infrastructure, Linux/edge and devices when the problem requires it. Direct collaboration, verifiable decisions and solutions designed to evolve.

Solid

A reliable foundation that is testable and straightforward to maintain.

Outcome-focused

Workflows and features start from the problem to solve, not from a preferred technology stack.

Verifiable

Reasoned decisions, explicit limits and progress that can be checked.

Adaptable

Application, backend, infrastructure and edge are combined only when they are actually needed.

Engagement modes

The right starting point depends on what is already clear

01

Analysis / Architecture Sprint

For clarifying the problem, requirements, constraints, risks and architecture before investing in implementation, with a bounded and usable output.

02

Development Sprint

For delivering a defined technical objective — a feature, automation, integration, dashboard, API or product slice — against explicit verification criteria.

03

End-to-end project

For taking a system from the problem through deployment, coordinating UX, software, backend, data, infrastructure and edge when the context requires them.

From a problem to a system that works in practice

I work with professionals, businesses, startups and technical teams to turn operational requirements, manual processes and product ideas into maintainable, verifiable software.

The scope may stop at an application or extend to backend services, APIs, automation, Linux infrastructure, edge systems and device integration. The solution follows the problem rather than a technology chosen in advance.

Technical experience and operational context

My background combines software development with direct experience in electrical systems, photovoltaics, public lighting, remote control, connected devices, servers and networks.

That context helps surface constraints that often appear only in real operation: incomplete data, connectivity, permissions, failure modes, maintenance, deployment and the interaction between software and physical infrastructure.

From analysis to verification

  1. Understand the problem, users and expected outcome.
  2. Define scope, constraints, risks and priorities.
  3. Choose architecture and technologies for the actual context.
  4. Develop in stages with verifiable outcomes.
  5. Test failures, recovery and real operating conditions as well as happy paths.
  6. Deploy, document and plan support, maintenance or evolution when required.

New project

Start with the problem that needs solving.

Share the objectives, constraints and current situation. The first review is meant to determine whether an Analysis / Architecture Sprint, a Development Sprint or an end-to-end project is the right next step. Support, maintenance and evolution can follow when they have a clear operational scope.

Tell me about your project