Tag Archives: software-engineering

The Test of Commitment and The Nuances of Estimation: Lessons from the IT Trenches

Across three decades of diving deep into the intricacies of IT, from software engineering to enterprise architecture, there’s a multitude of lessons I’ve unearthed. However, two recent experiences bring to light some invaluable insights about software delivery and the broader strokes of business ethos.

Consider a scenario where your project hinges on the delivery timeline of an external firm. A firm that’s been given two years to code a mere API HTTP PUT request, with the deadline stretching from mid to end September. The stakes? The very funding of your project. Enter the vendor’s sales representative: brimming with confidence, he assures an on-time delivery. Yet, when playfully challenged with a wager to affirm this confidence, he declines. A simple bet revealing the chasm between rhetoric and conviction.

Such instances resonate with an enduring truth in software delivery and business: actions always echo louder than words. The real “test” in business is not just about meeting estimates or deadlines, but about the conviction, commitment, and authenticity behind the promises.

However, alongside this test of commitment, lies another challenge I’ve grappled with regardless of the cap I wore: estimating software delivery. Despite my extensive track record, I’ve faced moments when estimates missed the mark. And I’m not alone in this.

Early in my career, Bill Vass, another IT leader, imparted a nugget of wisdom that remains etched in my memory. He quipped, “When it comes to developer estimates, always times them by four.” This wasn’t mere cynicism, but a recognition of the myriad unpredictabilities inherent in software development, reminiscent of the broader unpredictabilities in business.

Yet, the essence isn’t about perfecting estimates. It revolves around three pillars: honesty in setting and communicating expectations; realism in distinguishing optimism from capability; and engagement to ensure ongoing dialogue through the project’s ups and downs.

In the grand tapestry of IT and business, it’s not always the flawless execution of an estimate or a delivered promise that counts. At the end of the day, an estimate is just that; an estimate. The crux lies in how we navigate the journey, armed with authenticity, grounded expectations, and unwavering engagement. These cornerstones, combined with real-world lessons, are what construct the foundation of trust, catalyse collaborations, and steer us toward true success.

How can you increase software development productivity?

How can you increase software development productivity? ✏️

Without a doubt, and far and beyond the all the other approaches I mention below, the best way to increase software development productivity, is to give people engaging and interesting problems to solve, that feel worth while when they do solve. Nothing kills software development productivity like work that feels like a chore. Motivation is key.

Other approaches to increase software development productivity, including the following strategies are worth considering:

1. Agile methodologies: Adopt agile practices like Scrum or Kanban to enhance collaboration, flexibility, and iterative development.

2. Clear requirements: Ensure well-defined and achievable project requirements to minimize rework and improve efficiency.

3. Automation: Implement automated testing, continuous integration, and deployment pipelines to reduce manual tasks and speed up the development process. DevOps processes are here.

4. Code reviews: Encourage regular code reviews to identify and fix issues early, leading to better code quality.

5. Team communication: Foster effective communication among team members to avoid misunderstandings and enhance coordination.

6. Training and skill development: Invest in training and skill development to keep the team updated with the latest technologies and best practices.

7. Tooling: Use efficient development tools and IDEs that streamline the coding process and boost developer productivity. This includes AI based tooling.

8. Time management: Set realistic deadlines and prioritize tasks to manage time effectively and avoid unnecessary delays.

9. Reduce technical debt: Regularly address technical debt to prevent productivity slowdowns caused by code complexities.

10. Feedback loops: Create feedback loops with stakeholders and end-users to gather insights early and make necessary adjustments.

11. Culture: Encourage teams that work well together and provide leadership that helps and recognises everyone involved.

Remember, increasing productivity is an ongoing process that requires continuous improvement and adaptation to the specific needs of your development team and project.

As Fred Brooks points out in his seminal work, “The Mythical Man Month”, you can’t just throw bodies at a problem.

This article reposted from: https://www.linkedin.com/posts/waynehorkan_how-can-you-increase-software-development-activity-7093053533570088960-j5Xn