Luca Morelli
Software analyst and developer
Team lead

Three roles, depending on the project and on how the client is organised.

The craft is the same, analysis and development on Microsoft .NET and web stacks, but the context changes a great deal: how wide my scope is, who I work with, who decides what gets built. These are the three situations I work in most often.

The three roles

01

Full-stack developer

With direct clients, I follow a request from the initial need all the way to production.

Sometimes we start from scratch, with client, server, database and architecture to build. Other times I take over an existing application, with some choices already made and room to choose the means. There is always a thorough analysis phase before we start; during the project I stay in constant contact with the stakeholders, because specifications evolve. Over the years I have used many technologies; today I rely mainly on the Microsoft stack.

What you get. A single point of contact, with nothing lost between analysis and development. I keep asking questions until I'm sure I have understood enough; from there, results come gradually and visibly.

AngularReact.NET CoreSQL ServerRedisAzure
Case studiesC-06 · C-07

What I do

  • Gathering needs and constraints with the client and stakeholders
  • Analysis of the changes and of the database
  • Frontend in Angular or React, backend in .NET Core
  • Infrastructure: defining environments and additional components, such as Redis; on some projects, DevOps as well
  • Project start-up and go-live

After release

  • The code always belongs to the client
  • I train the staff who will look after the system
  • With some clients I keep handling the major implementations, while maintenance and smaller changes pass to their own staff
  • Documentation on request: working side by side with the people who use the system every day, the knowledge already stays with the client

Graphic design and content are not included; they stay with the client or with dedicated professionals.

02

Developer in a team

On larger projects, I join an existing team that maintains and evolves a sizeable system.

The contact may be directly with the client or through an intermediary. The scope is narrower, but I take full ownership of the tasks assigned to me: analysis, development and verification, coordinating with the people involved. The team's work is organised and tracked with the client's own tools.

What you get. An experienced person who becomes self-sufficient without step-by-step supervision, and who helps junior developers along the way.

.NET CoreAzure DevOpsJiraAgile
Case studiesC-02 · C-03 · C-04 · C-05 · C-08

What I do

  • Development, mainly backend; frontend or full-stack when the project needs it
  • Task analysis and input into its definition, drawing on my experience
  • Direct coordination with the people working on the same task
  • Support for junior colleagues
  • Following the team's existing processes, conventions and tools. I have also worked with a 100% code coverage requirement and explicit tests for the bug or feature as a condition for approving the pull request

Ramp-up time

On complex systems it generally takes 3–4 months to become fully self-sufficient. Clients usually know this already, which is why team engagements normally last at least 6 months.

03

Technical team lead

On projects of a certain size, I lead a development group, from the approved work item to the result delivered on time.

My work starts when a work item goes into development. How deep it needs to go depends on how the client is organised and on the analysis done before approval. I usually know the system more thoroughly than the rest of the group, and that is the knowledge I put at the team's disposal. When the team is part of a multi-team structure, I also handle coordination with the outside.

What you get. Whoever runs the programme has a single point of contact in me, just as a direct client does in the full-stack role: they ask for an item to be delivered, receive my requests for clarification and reports of blockers, and find the work ready and compliant on time. And a team that stays self-sufficient after my engagement ends.

Technical coordinationCode reviewJunior mentoringMulti-team
Case studiesC-01

What I do

  • I analyse the work ahead based on each task's specifications and split it within the group
  • I assess with the team the impact of changes on the system
  • I review progress frequently together with my colleagues
  • In review, I check that the use cases are met and that the change introduces no regressions; code quality is usually already covered by tools such as SonarQube
  • I guide and train junior developers, both in analysis and in development
  • In multi-team structures, I coordinate development with the other teams and services, and flag external blockers to management

Time and team size

Coordination takes time: with a team of just 5 people, I spend about half of my time on development. I have led teams of up to 8–10 people.

At a glance

Full-stackIn a teamTeam lead
Typical contextDirect client, new or existing projectLarge system, direct client or intermediaryProjects of a certain size, including multi-team
ScopeThe whole project, from need to releaseThe assigned tasks, owned end to endThe group and its work items
ContactsClient and stakeholdersColleagues involved in the taskTeam, other teams and services, management
AnalysisComplete, from needs to databaseTask analysis and input into its definitionDetailed work items with the group

Formats, location and languages

Formats
Project-basedTime-based, for set periodsDirect or through a software house
Location
RemoteOn site by arrangementBased in Perugia, Italy
Languages
ItalianEnglish

Which of these roles does your project need?

Detailed CV and references available on request.