The case for a consulting developer

As a consulting developer with experience across various industries, I often enter projects with a limited initial understanding of the client's core business. Despite this, I've consistently added value by leveraging my broad experience to quickly adapt and deliver effective solutions. In this post, I’ll explain how I overcome the challenge of having only a shallow initial understanding and still contribute significantly to my clients' success.

Unique Experience

Working with a variety of teams and companies has given me insight into what methods and practices truly work and produce results versus those that don’t. This experience helps me quickly dive deep into new domains, and sometimes these insights translate across industries, benefiting a broader range of clients.

A recent example is how my experience in e-commerce systems helped bridge a gap in insurance case management. Both industries involve long-running processes and require seamless communication between customers and back-office or customer service teams.

We Know Why and What, But How?

Often, when I join a project, my clients already have a good understanding of what they want to achieve and why it’s important. However, the execution—the "how"—is where they’re struggling. This is where my experience in studying both empirical data and relevant literature on execution becomes invaluable.

After analyzing a client’s project plan and budget, I suggested hiring fewer people for a longer duration. This approach improved the chances of a successful delivery, as much of the planned work wasn’t easily divisible among more people. The project was ultimately delivered successfully and within budget.

Improving the Flow

When starting a new assignment, I prioritize getting a deep understanding of the organization, its systems, and how they’re constructed. This discovery phase, which can take weeks or even months, is crucial. It allows me to build an internal model of the current operations, which informs where bottlenecks might exist and how to address them.

At one client, I realized that developers couldn’t effectively debug locally and had to deploy to a development environment, which was time-consuming. By addressing these issues and partially enabling local debugging, I significantly improved productivity and overall team morale.

Common Pitfalls of Software Projects and How to Avoid Them

Pitfall 1: External Dependencies and Coordination Challenges

External dependencies can become unmanageable when cooperation or coordination is lacking.

Solution: Create a virtual “integration team” with members from affected systems. This incentivizes collaboration and ensures agility, which is critical for solving issues.

I often proactively reach out and create communication channels between our team and supporting teams to ensure smooth collaboration, which is essential for managing external dependencies.

Pitfall 2: Development Process as a Bottleneck

When the development process is slow, it can become a bottleneck for deliveries.

Solution: Analyze the development environment and the inner dev loop. Consider whether developers can work effectively on their own or if constrained resources are an issue. Also, assess whether testing has become a bottleneck due to regression testing and lack of automation.

I’ve ensured that software can be run locally, improved unit test fixtures, and introduced automatic integration testing to catch regression bugs caused by external changes. These improvements have streamlined the development process and reduced bottlenecks.

Pitfall 3: Maintenance Hassles in the System

Parts of the system, such as CI/CD pipelines, Kafka brokers, or Kubernetes, can become maintenance headaches.

Solution: Ensure these platforms and support systems are managed by specialized teams within the organization or leverage cloud-provided PaaS solutions. Opt for simplicity, maintainability, and readability over strict adherence to the DRY (Don't Repeat Yourself) principle.

Continuous Improvement Matters

Stakeholders understandably may have doubts about a software project if deliveries are delayed multiple times. To build and maintain their confidence, the project team must ensure a steady flow of deliveries. Iterating on features quickly with stakeholders in the loop helps resolve issues and demonstrates that the team can handle challenges in the long term.

By applying all forms of changes that I’ve talked about we have managed to improve delivery speed and quality.

What Not to Do

It's important to be cautious when adding new resources, especially senior consultants, as individual contributors to a delayed software project. Expecting them to improve delivery like factory workers often leads to the well-known outcome predicted by Brooks's Law: "Adding manpower to a late software project makes it later."

Before my time as a consultant, I worked on a project where we added two experienced consultants at a very late stage. The onboarding process failed miserably, and we eventually had to cut them when the project was stopped entirely. This is such a well-known effect that many companies avoid taking on system developers as consultants for short-term assignments (less than six months).

Conclusion

In conclusion, while a consulting developer may start with limited knowledge of a client's specific business, the ability to quickly adapt, identify bottlenecks, and implement solutions makes this role invaluable. By continuously improving processes and fostering collaboration, consulting developers can turn around even the most challenging projects. It gives me great satisfaction to see way of work improving and people collaborating in a positive way.

Next
Next

Vertical Slice Architecture For .NET 7 + React.JS