Friday, December 06, 2024
From Office Towers to Bar Stools: The Evolution of Computing and Connection
Sitting here in this lively bar, I’ve got my laptop in front of me, a beer to my right, and a cosy buzz of conversation and music in the air. It’s one of my favourite ways to spend an afternoon—writing, reflecting, and soaking up the human energy around me. There’s something wonderful about being surrounded by people, watching the neon lights glow and dance off the bar's bottles, all while tapping away on my keyboard.
It’s hard not to marvel at how far we’ve come. When I started working with computers, they were anchored to office desks—big, boxy towers paired with CRT monitors, a wired keyboard, and a clunky mouse. There was no internet, no sense of mobility. That machine, likely a 286, was plugged firmly into a 13-amp socket, designed solely for crunching numbers on spreadsheets or typing up documents.
Now, here I am. My keyboard and screen are combined into one sleek device that runs on battery power for hours. I’m connected to the world through a hotspot on my phone, and I can work from literally anywhere—be it an office, a coffee shop, or, in this case, a festive bar on a Friday afternoon.
As Christmas draws near, the bar is filling up. People are getting ready for their holiday nights out, their laughter and excitement building as the evening progresses. Every person here is carrying a tiny, powerful computer in their pocket—a smartphone with a camera that captures the memories of the night in vivid, sharable detail. In real-time, these moments are sent off into the ether, to social media platforms or private group chats. A snippet of their night, immortalized in a digital file.
It’s astonishing to think about. Not long ago, documenting a night like this might have required a bulky camcorder or a dedicated camera. Now, it’s as simple as a tap on a screen. And for many, this seamless recording and sharing of life feels utterly normal—so normal that it barely registers as remarkable.
But I can’t help pausing to appreciate the bigger picture. I think about the transformation of human connection—how far we’ve come from those static office computers. The tools we use to connect and communicate have evolved beyond what we could have imagined. Even if you’re not out tonight, you’re likely at home streaming music or watching a movie on your smart TV—another testament to how deeply digital technology has woven itself into our lives.
And here I am, sitting in a bar, enjoying this moment of quiet reflection amidst the buzz, writing about it all. This, too, will become a digital artefact—a blog post shared with the world, contributing to the endless stream of content that connects us.
So as the night unfolds and this place gets busier, I’ll raise my glass to how far we’ve come and to the exciting ways we continue to connect and share our stories.
Cheers to technology, humanity, and the holiday season ahead.
Wednesday, November 27, 2024
Over-Promise and Under-Deliver: The Hidden Cost of Unrealistic Project Commitments
Let’s explore the repercussions of over-promising, how to identify it early, and what you can do if you find yourself in such a situation.
The Problem with Over-Promising
To win projects, suppliers often overstate the capabilities of their solutions. They may promise features or timelines that their product cannot realistically deliver. This overconfidence can stem from various factors:- Lack of Suitable Products: The solution isn’t fit for purpose and requires significant modification.
- Underestimating Costs or Timelines: Sales teams downplay the complexity of the project.
- Knowledge Gaps: The supplier doesn't fully understand the client’s requirements or their own product’s limitations.
The Impact on Clients
- Wasted Resources: Clients often deploy additional staff to compensate for shortfalls, increasing costs. These resources are diverted from other projects or responsibilities.
- Frustrated Teams: The client’s employees, often the first to notice issues, scramble to fill gaps, resulting in stress and burnout.
- Diminished Trust: Stakeholders lose faith in both the project and the supplier, damaging relationships and future collaborations.
The Impact on Suppliers
- Disjointed Handoffs: Sales teams, who made the lofty promises, often move on to new deals, leaving delivery teams to face the fallout.
- Pressure on Delivery Teams: Developers and implementers work under intense stress, trying to retrofit unsuitable products to meet commitments.
- Reputational Damage: Failing to deliver tarnishes the supplier’s credibility, affecting future sales and partnerships.
Early Warning Signs of Trouble
- Missed Deliverables: Early milestones are delayed or skipped entirely.
- Shifting Blame: Teams start pointing fingers, and excuses become frequent.
- Compounded Delays: One delay leads to another, creating a domino effect.
- Rumours and Discontent: On-the-ground staff discuss missing features or limitations compared to the promised solution.
- Gaps in Requirements: Functionalities of the old system are not replicated in the new solution.
What to Do When Things Go Wrong
- Pull the Plug: If the project is beyond salvageable, cutting your losses may be the wisest choice.
- Accept a Reduced Scope: Scale back expectations to align with what the supplier can realistically deliver.
- Learn and Move On: Document lessons learned and apply them to future projects.
- Refocus on Minimum Viable Functionality: Strip the project to its core essentials, ensuring at least some value is delivered.
- Deprioritize: Shift focus to other initiatives, letting this project take a backseat while still attempting to salvage some outcomes.
Preventing Over-Promise and Under-Deliver
- Validate Supplier Claims: Insist on real-world examples and case studies that demonstrate the supplier’s ability to deliver similar solutions.
- Engage Your Team: Involve your staff early to assess proposals and match them against actual needs.
- Define Requirements Clearly: Document precise requirements and ensure the supplier can meet them.
- Set Gates and Checkpoints: Break the project into phases with clear milestones and validation steps.
- Prioritize Transparency: Establish an open dialogue with suppliers to ensure alignment and realistic expectations.
Conclusion
The key takeaway? Due diligence is your best defence. Understand what you’re buying, involve your team, and ensure the supplier can deliver what they promise. In the end, realistic expectations lead to successful partnerships—and projects that deliver real value.
Friday, November 15, 2024
Software Projects and the Sunk Cost Fallacy: When to Walk Away
Why Software Projects Are Uniquely Prone to the Sunk Cost Fallacy
Software projects are complex, hard to estimate, and, unlike physical assets, don’t result in a tangible product. This makes them highly susceptible to the sunk cost fallacy.Intangible Value and Non-Physical Output
- Software lacks the material value of a physical asset. For example, if you build a house and it goes over budget, you at least end up with a physical structure with market value. Software, however, is a set of digital instructions stored on servers. If a project fails, what remains is often worthless—it can’t be sold off or repurposed easily.
- This lack of residual value makes it hard to justify pouring more money into a failing project, yet many teams continue doing so to "complete" something, even if the return on investment is unclear.
Over-optimistic vendors and Scope Creep
- Software vendors can sometimes over-promise to win a contract, painting an overly optimistic picture of the product’s capabilities. When the time comes to deliver, they may struggle to meet the agreed specifications and timeline. In these cases, the vendor might request more money and time to compensate for unforeseen challenges or their own initial overestimation.
- With each delay and budget increase, the customer faces the difficult decision to keep funding the project or cut their losses. However, due to the sunk cost fallacy, decision-makers often feel pressured to stick with the vendor and project, fearing that backing out would mean wasting all previous investments.
Difficulty in Estimation and Scope Creep
- Estimating software projects is notoriously difficult. Requirements frequently change, new features are added, and unexpected complexities arise. Each adjustment drives up the cost, and each delay extends the timeline, yet the project remains incomplete and generates no revenue until launch.
- Scope creep, where the project grows beyond the original plan, is common in software. In the quest to make the investment worthwhile, teams often add more features, which only compounds costs and delays. Ironically, these “extra features” are frequently proposed by the very vendors who oversold the project in the first place, further ensnaring clients in the sunk cost trap.
Labor Costs and Project Management Challenges
- Software development demands highly skilled and highly paid developers, project managers, and testers. When projects fall behind, organizations face the choice of either adding more resources (which drives up costs further) or extending deadlines (which impacts business timelines).
- However, adding more developers doesn’t always work. Additional team members require communication and oversight, which can actually slow down progress. As teams continue spending, the sunk cost fallacy may convince them to keep funding the project, even if a fresh assessment suggests it may not succeed.
No Residual Value in Failure
- Failed software projects offer almost no residual value. In construction, a half-finished building or the land itself still holds some market worth, while a car with issues can be sold for parts. But if you cancel a software project that isn’t functional, all you’re left with is code that may never be used.
- This lack of tangible fallback value can make decision-makers reluctant to pull the plug. Instead, they throw more money into the project, hoping to “get something out of it,” even as the financial return diminishes.
Real-World Examples of Software Sunk Costs Gone Awry
Here are a few common scenarios where software projects fall prey to the sunk cost fallacy:- Government Software Initiatives: Government software projects are highly visible and politically sensitive, often leading contractors to overstate what they can deliver to win bids. As costs escalate, governments continue funding these projects rather than cancelling them, fearing backlash over wasted taxpayer money.
- Corporate Legacy Systems: Corporations sometimes rely on outdated software that becomes buggy and hard to maintain. Rather than shifting to modern alternatives, they continue funding updates to these legacy systems to avoid the costs of migrating to new platforms, even though this ongoing investment may ultimately be wasteful.
- Healthcare Management Systems: Healthcare software often requires customization to meet complex regulatory needs. As these projects run over budget, providers may feel trapped, continuing to fund projects that are far more expensive than anticipated because switching systems mid-stream would appear even costlier.
Recognizing and Resisting the Sunk Cost Fallacy in Software Projects
Here are some strategies to help identify and avoid the sunk cost fallacy in software projects:- Conduct Regular Project Evaluations: Schedule periodic evaluations to assess whether the project remains viable. If costs have consistently outpaced projections, reassess whether the end product will still provide the intended benefits. At each major milestone, be prepared to make a tough call if necessary.
- Focus on Minimum Viable Product (MVP): Rather than trying to include every feature originally promised by the vendor, focus on creating an MVP that fulfils the most essential functions. This approach can deliver value faster and help reveal whether the project is worth further investment.
- Prioritize Strategic Value, Not Sunk Costs: Base decisions on future potential, not past expenses. If an objective assessment doesn’t justify further spending, it may be time to pull the plug. Pouring money into a project purely to avoid “wasting” what’s already been spent only leads to further losses.
- Establish Accountability for Vendors: Hold vendors accountable for delivering on their promises. Rather than paying more to accommodate their mistakes or misrepresentations, ensure that contracts include penalties for underperformance or delivery delays. This can help reduce vendor-driven costs that contribute to the sunk cost trap.
- Build Awareness of the Sunk Cost Fallacy: Make sure everyone involved in the project—from stakeholders to project managers—understands the sunk cost fallacy and its dangers. With awareness, teams are better equipped to make objective decisions and focus on the project’s long-term value.
Conclusion
Software projects are particularly vulnerable to the sunk cost fallacy due to their intangible nature, high labour costs, and vendors who may oversell their solutions. Recognizing this risk can help teams avoid the trap of “just a little more” spending when the potential for return is low. In the end, software development should always be guided by future value rather than past expenses. Cutting losses early on may be the smartest move, allowing organizations to allocate resources to projects with clearer paths to success.Wednesday, November 06, 2024
Why Every Request Needs a Task: Structuring DevOps Workflow for Success
However, despite all the structure and process that DevOps affords us, I find myself increasingly sidetracked by @mentions—quick pings from colleagues asking me to review code or set something up outside of a formal task. In this post, I’ll explain why relying on @mentions undermines the DevOps workflow and why every request, no matter how "quick," deserves a task of its own.
Microsoft DevOps: A Place for Everything
Microsoft DevOps offers a comprehensive suite for managing development projects. Here’s how I typically use it:
- Features and User Stories to capture high-level requirements.
- Pipelines for managing continuous integration and deployment.
- Git Repository for code versioning and collaboration.
- Tasks, Bugs, and Issues to prioritize and track every actionable item.
Tasks are central to my workflow. I work off my task list, treating each task as a clearly defined unit of work with a deadline, priority, and context. Once a task is completed, it becomes part of my completed task list, which I can reference for historical context or performance tracking. This transparency isn’t just beneficial to me but helps the entire team track progress and allocate resources effectively.
The Problem with @Mentions
Recently, I’ve seen an uptick in requests made through @mentions rather than formal tasks. Examples include:
- “@mention, can you quickly review X?”
- “@mention, could you set up Y?”
The rationale given is often that it’s "just a quick job" or they "just wanted to keep it informal." But here’s the reality: without a task, there’s no commitment, accountability, or visibility.
@mentions create several problems:
- Lack of Structure: An @mention lacks the built-in attributes of a task—no deadline, no priority, no clear scope.
- No Visibility for Others: Other team members can’t see @mentions in the same way they can with tasks, leading to communication gaps and potential bottlenecks.
- Difficulty in Tracking Work: Without a task, I lose the ability to track my work history effectively. The query I run to see my completed tasks won’t include anything asked of me in a stray @mention.
The Ideal Workflow: Why Every Request Deserves a Task
When everyone uses tasks instead of relying on @mentions, it creates a fair, organized, and predictable workflow. Here’s what this approach enables:
- Clear Expectations: With every request tied to a task, both parties know the deadline, priority, and specific requirements.
- Transparency for the Team: Tasks make work visible across the team. During daily standups, anyone can view the task list and understand where the project stands.
- Accountability: A task isn’t just a request; it’s a recorded commitment. This is especially important for project management, as each task can be accounted for and followed up on.
- Personal Productivity: Having all requests as tasks allows me to prioritize effectively, set realistic timelines, and avoid interruptions from informal requests. It’s easier for me to focus when all work is organized within my task list.
How I Handle @Mentions Now
I’ve started treating @mention requests as casual conversation. I might read them, but unless they are formalized into a task, I won’t action them. In fact, if someone asks if I’ve seen their message, my standard response is, “Did you raise a task for that?” It’s not about being rigid; it’s about creating a sustainable workflow that respects everyone’s time.
Encouraging a Task-Driven Culture
For developers or team members facing similar challenges, here are a few tips to foster a task-driven culture in your DevOps environment:
- Explain the Benefits: Share with your team why tasks make things clearer, easier to track, and ultimately lead to a smoother project flow.
- Lead by Example: Consistently ask for a task to be raised, even for small requests, to reinforce the expectation.
- Stand Your Ground: If a request is made via @mention, politely ask them to create a task with relevant details. Stick to your process, and over time, others will adapt.
Conclusion
Microsoft DevOps is a powerful tool for managing work when used properly. Every request, no matter how small, should be structured as a task. This approach fosters a culture of transparency, accountability, and productivity, ensuring that we spend less time scrambling and more time building. So, the next time you think about sending a quick @mention to a developer—consider creating a task instead. It’s a small change that can make a big difference in everyone’s workflow.
Saturday, November 02, 2024
Finding the Balance: Remote Life, Occasional Office Days, and the Joy of Connection
There’s a certain clarity that comes with remote work, especially for someone like me, a software developer who needs deep concentration and focus to get into the flow. The lack of commute, the comfort of home, and the ability to work undisturbed are all benefits that have helped me thrive. The “come back to the office” chorus, often led by those who prefer to have their teams in sight, doesn’t hold the same allure for me. Productivity speaks for itself; results are measurable. When the work is getting done, and getting done well, it’s easy to question whether office presence is truly necessary. In fact, I’m sure the productivity equation tilts heavily in favour of those quiet hours at home, uninterrupted.
Yet recently, I’ve started going into the office one day a week, just to see if maybe there’s a side to in-office work I’ve been missing. The shift has been... interesting, a mix of unexpected downsides and delightful surprises. True, my productivity dips on these office days. The environment can be distracting compared to my quiet home setup, and the pace doesn’t quite match that of a dedicated day in my study. But what I’ve found—and perhaps even rediscovered—is the joy of in-person connection.
Stepping out the door a little earlier, hopping on a bus, and taking a brisk walk to the office stirs a sense of nostalgia. There’s something refreshingly grounding about leaving the house with a purpose, joining the ebb and flow of people heading to work, and the slow hum of the city waking up. Once there, I get to see colleagues not as tiny, pixelated faces on a screen, but in full, 3D, real-life presence. Today, I even ran into a few people I hadn’t seen in ages, some of whom I’d never even met face-to-face until now. It was strange and wonderful, and yes, there’s a certain buzz, a dopamine kick that can’t be replicated over a video call.
I even enjoyed the mid-morning escape from the desk, ducking out for a sandwich and smoothie, a small ritual that felt indulgent, even celebratory. The office itself was nearly silent—ironic, given that most people are still working from home—but in the quiet, there was a soft reminder of why we all do this work together. As I left at four, with the familiar anticipation of a pub meet-up, I felt a balance I hadn’t in a while. Sitting with a pint at the end of the day, typing this post and waiting for a friend, I can feel that strange joy of shared space and human contact.
Maybe there’s no “best” way to work; perhaps it’s about embracing the mix. I’ll always love my quiet, productive days in the study, the freedom remote work offers, and the way it lets me dive deep without distraction. But these occasional office days add a welcome splash of colour, a reminder of community and connection. And maybe that’s the sweet spot: a life where flexibility reigns, where both the solitude and the soft buzz of connection can coexist, each enriching the other in its own quiet way.
Today, I feel grateful for both worlds and the freedom to choose. Life is good, balanced—and, right now, the world feels like it’s in a good place.
Thursday, July 04, 2024
Discovering Aphantasia: Living with a Blind Mind's Eye
A few weeks ago, I had a lightbulb moment that completely changed how I perceive my own mind. I was listening to a podcast where the hosts were discussing a condition called aphantasia, which is essentially a "blind mind's eye." When most people imagine something, they see vivid pictures in their mind. I, however, have never experienced this. Instead, my thoughts come as knowledge or abstract ideas rather than images. For years, I thought this was normal until that podcast opened my eyes to a different reality.
The Realization
During the podcast, the host asked listeners to close their eyes and imagine a giraffe. "What do you see?" they asked. My immediate response was to describe a giraffe: its tall stature, distinctive spots, and the funny little horns on its head. But I didn't actually see a giraffe in my mind's eye—I never have. Instead, I just knew what a giraffe looked like.Curious, I asked my family and friends the same question. Their answers were unanimous: "I see a giraffe." Except for my eldest child, who, like me, saw nothing. It turns out, this condition might run in the family.
Understanding Aphantasia
Aphantasia is the inability to voluntarily create mental images. This doesn't mean that we lack imagination or creativity; we just experience it differently. For me, thoughts and memories are like abstract concepts, not visual representations. If you show me a picture of a beach and ask me to close my eyes and recall it later, I won't see the image in my mind. Instead, I will remember the details—the sound of waves, the feel of sand underfoot, and the warmth of the sun—but not as a picture.
One of the most enlightening moments was watching a YouTuber describe his experience with aphantasia. He showed a completely black screen and said, "This is what it looks like in our mind's eye." It was a perfect representation of my inner visual experience.
Living with Aphantasia
Discovering I have aphantasia has been both surprising and enlightening. Here are some ways it affects my everyday life:
- Reading and Writing: When I read a book, I don't see the scenes in my mind. Instead, I process the story through the emotions and actions of the characters. My imagination works through the abstract narrative, not visual imagery. Writing, on the other hand, involves describing these abstract thoughts in detail so others can picture them.
- Memory and Learning: My memories are like a collection of facts and feelings, not pictures or videos. When recalling an event, I remember the sequence of events and the emotions I felt, but not the visual details. This means I rely more on lists and written notes than mental images to remember things.
- Creativity: Despite not having visual imagination, I am still creative. I can come up with ideas and concepts, but I describe them in words rather than pictures. When I brainstorm, I jot down notes or create mind maps to organize my thoughts.
- Social Interactions: Conversations about visual experiences can be tricky. When friends talk about visualizing their goals or recalling past trips, I understand them through logical and emotional context rather than visual context. It has made me more attentive to how others perceive the world and has enriched my interactions.
Embracing Aphantasia
Learning about aphantasia has helped me understand myself better and embrace my unique way of thinking. It also sparked fascinating conversations with others who experience the world differently. While I may not "see" with my mind's eye, my thoughts and imagination are vibrant in their own abstract and conceptual ways.If you suspect you might have aphantasia, I encourage you to explore it further. Understanding how your mind works can be incredibly freeing and can open new avenues for self-expression and creativity. And if you, like me, have a blind mind's eye, know that you are not alone. We all perceive the world in our own unique ways, and there's beauty in every perspective.
Thursday, May 30, 2024
From Agile Dreams to Crunch Realities: Navigating Software Development Challenges
In the ideal world of software development, projects begin with high hopes and well-intentioned plans. Agile methodologies, with their emphasis on flexibility, iterative progress, and team collaboration, promise a structured yet adaptable approach to bringing a product from concept to completion. However, as many developers know all too well, the journey from Agile to crunch time can be swift and jarring, driven by the harsh realities of limited budgets, extensive scopes, and minimal staffing. Let's explore how this transformation occurs and what it means for developers on the ground.
The Promise of Agile
Agile development offers a framework that allows teams to respond to change quickly and efficiently. The core principles of Agile—such as regular feedback loops, continuous improvement, and close collaboration—are designed to enhance productivity and ensure that the project stays aligned with the client’s evolving needs.Key Agile practices include
- Sprint Planning: Setting realistic goals for short, manageable periods (typically two weeks).
- Daily Stand-ups: Keeping the team synchronized and addressing any blockers promptly.
- Iterative Development: Delivering incremental improvements and new features regularly.
- Retrospectives: Reflecting on what went well and what could be improved after each sprint.
The Onset of Crunch
Despite the best intentions, several factors can push an Agile project into crunch mode:- Limited Budget: Financial constraints can limit resources, forcing the team to do more with less. This often means longer hours and increased pressure to deliver the same quality of work within a shorter time frame.
- Expanding Scope: Also known as scope creep, this occurs when new features and requirements are added continuously, often without adjusting the project timeline or budget. The result is a bloated workload that far exceeds initial expectations.
- Minimal Staffing: A small team might be manageable at the project’s start, but as the workload grows, the lack of additional hands can lead to burnout and extended work hours to meet deadlines.
From Agile to Crunch: A Common Scenario
Imagine a small development team starting a project with a clear set of goals and a realistic timeline. The project begins with Agile practices, and the first few sprints go smoothly. However, halfway through the project, the client requests several new features, significantly expanding the project’s scope.At the same time, budget constraints prevent the hiring of additional developers. The project manager, under pressure to meet the original deadline, decides to extend work hours and compress sprint cycles to accommodate the new requirements. What started as a well-paced Agile project quickly turns into a crunch situation, with developers working nights and weekends to stay on track.
Managing the Transition: Balancing Agile and Crunch
While crunch can sometimes feel inevitable, there are strategies to manage and mitigate its impact:- Realistic Planning: Set achievable goals and be transparent about the limitations of time and budget from the outset. Make it clear to stakeholders that adding features will require adjustments to the timeline or additional resources.
- Prioritization: Use Agile’s iterative nature to prioritize features and tasks. Focus on delivering the most critical aspects of the project first, ensuring that the essential parts are completed on time.
- Communication: Maintain open lines of communication with the team and stakeholders. Regular updates on progress and challenges can help manage expectations and avoid last-minute surprises.
- Flexibility: Be prepared to adjust the project scope or timeline as necessary. Agile is about being adaptable; use this flexibility to find a balance that minimizes the need for extended crunch periods.
Conclusion
Transitioning from Agile to Crunch is a common challenge in software development, often driven by the realities of budget constraints, expanding scopes, and limited staffing. While crunch can sometimes be unavoidable, understanding the factors that lead to it and implementing strategies to manage it can help maintain a healthier and more productive development environment.As developers, it’s crucial to advocate for realistic planning and sustainable practices, ensuring that the Agile principles we start with are not lost in the face of real-world pressures. By doing so, we can strive to create a work environment that values both productivity and well-being.
Privacy Policy -> About me -> Udny Designs -> Worky Facebook-> Adrian.Tuckwell@gmail.com
Web design by Udny Solutions -> © Adrian Tuckwell