developer Archives | Facet Digital
Design, develop, launch, and scale your product with Facet Digital. Minimize risk, shorten your time to market, and increase your potential for success with Facet Digital as your experienced, all-in-one product development team.
web application development, mobile app development, seattle web development agency, ruby on rails, ios, html5, northwest design agency
155
archive,tag,tag-developer,tag-155,ajax_fade,page_not_loaded,,select-theme-ver-4.4,wpb-js-composer js-comp-ver-5.4.7,vc_responsive
 

developer Tag

Slow is Smooth; Smooth is Fast

“Slow is smooth; smooth is fast.”

This adage is a cornerstone in military training and precision sports. It encapsulates the principle that meticulous and deliberate actions, learned through repetition and deliberate practice, lead to swifter and more successful outcomes in the end. It champions the notion that fostering patience and delving deeper into understanding a task can expedite the journey to achieving it, steering clear of the pitfalls that haste often brings in its wake.

In software development, this wisdom reverberates with equal significance. The frenzied pace of progress can sometimes eclipse the fundamental principles of smooth, fluid, and predictable execution. Yet, adhering to quality and precision from the very outset often propels us towards our goals faster than a hurried approach would. This ideology nudges us to value excellence over sheer speed, recognizing that a seemingly slower route often manifests as faster and more reliable results over time.

To integrate this philosophy into software development, teams should invest in:

  1. A Clear, Shared VisionNothing slows you down more than going fast in the wrong direction.

    Establish a clear and unified vision before the onset of the project. This involves understanding the “why” and the “what” of the end goals, distinguishing essential features from those that can be deferred, and achieving team alignment prior to diving into execution.

  2. Automation and Rapid Feedback Cycles – The earlier you catch it, the cheaper it is to fix.

    Embed a culture of automation and feedback from the first day of development. Use tools that facilitate swift feedback loops, enabling bugs to be identified early in the “assembly line”. Use monitoring, alerting, logging, A/B testing, canary deploys, and feature flags to find issue in production before your customers do. Conduct QA acceptance testing to stop defects from ever making it to production. Use robust test code coverage to catch bugs in CI/CD stages, before they make it to the QA team, or even to other developers. Provide developers a robust, prod-like developer bench-testing environment so that they can ensure their code functions properly before it even gets to CI. Use modern IDE tools that can catch bugs and issues in real time as you type before you ever try to run it. With tooling, test coverage, deployment automation, non-prod environments, and other tooling, you can prevent a slew of costly setbacks down the road and ensure smoother progress toward the end goal.

  3. Code Quality PracticesMake it easier to do the right thing that it is to take shortcuts.

    Allocate time to implement static analysis tools such as linters, complexity analyzers, open-source dependency scanners, security scanners, and style/convention enforcers early in the process. Establish practices like draft pull request, PR templates, required peer code reviews, and ADRs (Architecture Decision Records). Although stopping to lay these foundations might extend initial timelines slightly, they reap dividends in the long run by fostering a culture of quality and efficiency, ultimately saving time and resources.

💡 It’s important to recognize that certain elements of project development flourish when approached as calculated investments in smoothness and consistency of execution, rather than hastily attached solutions in response to urgent crises or market forces pulling you in all directions. An early focus on ‘smoothness’ can preclude the necessity for rushed, reactionary steps later, thereby optimizing both time and resources.

👋Need help achieving excellence in execution? Contact Facet Digital today to find out how we can help you refine the fundamentals and start firing on all cylinders again.

Optimizing Standup Times for Distributed Engineering Teams

In the modern age of software development, where remote work has become more of a rule than an exception, managing co-located and distributed software engineering teams comes with its unique set of challenges. One of the most debated topics is: When’s the ideal time for a daily standup?

Software engineers are an eclectic breed. They’re often deep thinkers, introverted, and sometimes have schedules that deviate from the typical 9-5 mold. Their peak productivity might be at midnight or at dawn, and distractions, especially meetings, can be a bane to their workflow.

So, what’s the best time for a standup?

Prospective Time Slots (in US Pacific Time) and Rationale:

  1. 9:00 AM:
    • Pros: It’s the start of the conventional workday on the West Coast. Engineers have fresh minds and can set the tone for the day.
    • Cons: For East Coast teams, this is lunchtime, and for the West Coast engineers who are night owls, this might be too early – especially if they want to get some exercise in before work.
  2. 11:00 AM:
    • Pros: Still morning on the West Coast, with enough time to get warmed up and into action, and early afternoon on the East Coast. It’s a good midpoint, with enough time after lunch for the East Coasters to get their brains back in action and take a focus break during the traditional mid-afternoon lull.
    • Cons: It may interrupt the flow of work, especially for those who have started their day early.
  3. 1:00 PM:
    • Pros: Post-lunch on the West Coast and late afternoon on the East Coast. A good time to regroup after a break for the Westies.
    • Cons: For those on the East Coast, the day is almost over, and for those who had a productive day, it may feel like quitting early while they’re trying to squeeze out a bit more code before the end of the day.

Considering the diverse nature of our engineers, their varied peak productivity times, and the need to accommodate multiple time zones, it’s imperative to strike a balance.

Our Stance at Facet Digital:

At Facet, after considerable deliberation and trial, we’ve settled on 11:00 AM (Pacific Time) as the ideal time for our projects to hold daily standup meetings. Here’s why:

  • It’s a good middle ground, ensuring no one’s day starts or ends with a meeting.
  • For our West Coast team, it allows a solid workblock in the morning and then another after the standup.
  • For our East Coast team, it’s early afternoon, allowing them to provide updates while still having a chunk of their day left.

In conclusion, while there’s no ‘one-size-fits-all’, it’s essential to understand the unique characteristics and preferences of software engineers. A standup should empower, not hinder. Hence, select a time that minimizes interruptions, respects individual work rhythms, and fosters collaboration across time zones.

Top 10 Software Developer Productivity Killers

If you’ve recently found yourself trapped in a catacomb of chaotic code or entangled in a web of woefully unclear requirements, fret not! Bob’s journey through the perilous pitfalls of developer productivity is the adventure you’ve missed. Over the past two weeks, we’ve run a daily series of blog posts about the most prevalent software developer productivity killers we, at Facet Digital, often see in the engineering teams we are hired to assess. Some of these have do to with the technical team and their decisions, and some of them have to do with the business support around them.

Here’s a quick recap:

01Useless MeetingsBreaking up the Maker’s focus time
02Open-Plan OfficesNoise and visual distraction disrupt concentration
03Technical DebtShort cuts now make innovation take longer later
04Dead CodeHours wasted maintaining or searching through garbage
05Too Many Status ReportsTalking more about work than doing the work
06Unclear RequirementsSpending too much time guessing at the wrong intent
07Poor Branching StrategyWorking in too large of chunks and not getting feedback quickly
08Unrealistic / Arbitrary DeadlinesDemoralizing and stifling creativity
09MicromanagementNot letting the brains you hired use their brains to the fullest
10Poor DocumentationMaking the next dev guess and explore without a map

Familiar foes? If these productivity antagonists have been causing chaos in your dev-life, contact us for some superhero assistance.

🙋‍♀️ Encountered another productivity villain we missed? Share in the comments which dastardly devils resonate with you and any others lurking in the shadows!

Tech Docs: The Unsung Hero

Software Developer Productivity Killer #10: Lack of Good Docs

Picture this: Bob, having navigated through unclear requirements, suffocating micromanagement, and the pressure of unrealistic deadlines, comes face-to-face with… a wall. Not just any wall, but a vast, blank barrier that lacks information, direction, and clarity. This, my friends, is the wall of poor documentation.

👮‍♀️ Why Documentation is Non-Negotiable

Documentation isn’t just a sidekick; it’s the hero of software development. It’s the translator between developer lingo and the rest of the world, and between past developers and their successors.

  1. Onboarding Obstacles: New developers spend countless hours, not in producing quality code, but in decrypting existing systems, trying to understand processes, and setting up their environment. Good documentation is like a lighthouse, guiding them safely to shore.
  2. Maintenance Mayhem: Without proper documentation, diving back into a codebase becomes a guessing game. Fear of changing code creeps in, and the result is stagnation, hesitation, and decreased productivity.
  3. The Wrong Kind of Adventure: Developers love problem-solving, but being forced to explore a project blindfolded because of lack of documentation? That’s not the kind of adventure they signed up for.

📄 Essential Characteristics of Good Documentation

  • Dated and Versioned: Knowing when information was documented and which version it pertains to can be invaluable. It is imperative to be able to see and track changes to a document over time – who, what, and why.
  • Searchable and Navigable: Use platforms like Confluence or Slab to ensure your documentation can be quickly located, through both searching and intuitive navigation.
  • Templated Consistency: Uniformity in documents, like design doc templates or post-mortem templates, speeds up comprehension.
  • Location, Location, Location: Docs should reside close to their point of use. READMEs inside repositories, FAQs in the help section, architecture diagrams in wikis, and so on.
  • Stay Fresh: Outdated or irrelevant documentation can be worse than no documentation. Regularly review and prune as necessary.

🛥️ The Onboarding Advantage

A pro tip? Have your newest hires follow and enhance the onboarding documentation. This ensures a fresh set of eyes refines the process consistently.

And for a truly revolutionary approach? Consider integrating a bespoke private LLM AI system. Train it on your documentation and watch as developers simply query the system to get accurate, traceable answers straight from your archive. It’s an innovation Facet Digital is passionately pioneering.


📣 To all the leaders and developers out there, documentation is the unsung hero of productivity. Let’s give it the spotlight it deserves. And if you’re looking to revolutionize your documentation strategy, figure out how to weave it into your dev process seamlessly, or integrate cutting-edge AI solutions, please reach out. We’re here to guide your team towards unparalleled productivity.

Just joining us? Take a journey from the start with our series on developer productivity killers, beginning with the very first post.

Twisty Branches All Alike

Software Developer Productivity Killer #7: Poor Branching Strategy

Ahoy once more, digital navigators! As our digital expedition continues, we stumble upon the thorny forests of source code management. Amidst the sprawling thicket lies a menacing snare: the poor branching strategy. Oh, how we shudder at the reminiscence of entire days (or, heavens forbid, weeks) lost to merges! The terrain might seem deceptively simple, but as Bob would soon find out, it’s fraught with pitfalls.

😕 Bob’s Branching Blunder

Just as Bob started his morning coffee ritual, he encountered a code review that resembled an epic tome more than a neat summary. Long-lived branches? Multiple changes per branch? Bob’s hopeful morning soon transformed into a caffeine-fueled merge marathon. The ghostly whispers of “merge week” from the dark age of CSV/Subversion haunted his every move.

🌳 The Branching Brouhaha

  1. Epic Merges: Not the cool kind of epic, but the “Where did my day go?” kind. Lengthy branches become burdensome, confusing, and oh-so-error-prone. Nobody is building new code when they are stuck in merge conflict purgatory.
  2. Feature Flags Flop: Poor branching can throw a wrench in your feature flagging game, making it a Herculean task to incrementally release portions of functionality to subsets of your users.
  3. Collision Course: Picture a horde of developers, their code changes clashing like opposing armies. Result? Conflicts galore and a stream of regressions. Somebody is going to end up in the doghouse.
  4. Whimsical Reviews: Branches crammed with countless changes are like thick novels. They’re arduous to review, test, and release. Something will be missed in the noise. Not to mention, they are a nightmare if you need a rollback.

🔦 Lighting the Path with Strategic Branching

  1. Feature First: Feature branches keep things neat and tidy. Each new capability gets its pristine branch, free from muddling modifications. And keep it one feature per branch, please!
  2. Release the Kraken: Release branches serve as staging areas, ensuring that the main branch remains in a perpetually deployable state.
  3. GitHub Flow & Glow: Simplify the process, making it robust yet flexible. Ideal for continuous delivery and integration.
  4. Trunk-Based Triumph: Our golden boy! Implement Trunk-Based Development: Small, frequent merges to the main branch mean fewer conflicts and quicker deployments. CI/CD? More like See-It-Done!
  5. GitFlow, but with Gusto: While intricate, it provides a clear structure for large scale projects, each branch with a defined purpose. Especially for those projects that need to maintain multiple major versions concurrently.

💡 Conclusion

For Bob, adopting a robust branching strategy was like discovering a map in a maze. The days of daunting merge marathons are long gone, replaced by streamlined processes and efficient workflows.

Ready to Navigate the Branching Wilderness? Feeling lost in the dense forest of code branches? Facet Digital is equipped with a compass, map, and the expertise to guide you through. From assessing the thickest tangles to plotting a clear path forward, we’re here to help. Why risk the quagmire when you can journey with the best? Contact us and let’s strategize your branching success story together.

✋ Hungry for more of Bob’s coding conundrums? He’s already braved challenges like the ‘open-plan disturbances’, navigating the ‘technical debt’, sidestepped the ‘dead code’, and rebuffed the ever-multiplying ‘status reports’. And remember that foggy realm of unclear requirements? Yep, he navigated that too. Stay tuned, for the code chronicles are far from over. Each chapter brimming with tales of tech, turmoil, and triumph!

Status Reports: How Many Do We Need?

Software Developer Productivity Killer #5: The Dreaded Status Reports

Hello again, digital navigators! We’ve tangoed with ‘useless meetings‘, battled the open-plan zombies, and sailed the treacherous seas of ‘technical debt‘. But hold onto your keyboards, because now we’re diving into the realm of… (drumroll, please)… status reports. And not just one or two. Oh no, it seems everyone and their digital assistant wants one!

📝 The Story of Bob, The Status Reporter

Bob, our fictional yet oh-so-relatable developer, has had a week. He’s juggled tickets, diligently added comments, rolled out code changes, and executed pull requests with the grace of a ballet dancer. Each task gets its neat little description, every commit explains the changes, and pull requests detail the grand picture while referencing back to the ticket. But wait! There’s more!

Enter the Pointy-Haired Boss: “Bob, could you whip up a summary of this week’s progress? And oh, remember those TPS reports?” (If you’ve seen Office Space, you know the pain. If you haven’t, go watch it; it’s a workplace rite of passage). But here’s the rub: isn’t a ticket a status report? Isn’t a commit a status report? Isn’t a pull request… oh, you get the idea.

∞ The Infinite Loop of Status Reports

  1. The Redundancy Factor: Status reports, on their own, aren’t evil. But when they’re layered atop daily standups, PR descriptions, ticket annotations, and commit comments…it starts to feel like someone’s playing a cruel joke. “Bob, we’re gonna need another status report on your status reports.”
  2. Managerial Middlemen: Is the manager’s role merely to be a carrier pigeon, ferrying status notes between developers and higher-ups? It seems even carrier pigeons have more freedom.
  3. Time = Code: Every moment a developer spends summarizing their summaries is time they aren’t coding, innovating, or resolving bugs. The business cost of this is more significant than it appears.

👀 Status Quo No More

  1. The Value of Transparency: The beauty of tickets, commits, and PRs is their transparency. One can easily delve into the history, the changes, and the progress. It’s all there, like a digital journal of a developer’s journey.
  2. Empower Managers with Tools: Instead of burdening devs with ‘one-more-report’, why not equip managers with tools to derive insights directly from existing data?
  3. Automate with AI: Here’s a wild thought: What if we could have intelligent systems that aggregate all these updates and present them in a digestible format? Oh, wait! At Facet Digital, we’re doing precisely that! Take that, TPS reports!

💡 Conclusion

In an era of digital transformation, redundancy is the last thing we need. Bob should be crafting digital masterpieces, not drowning in paperwork. And managers? They should be guiding, assisting, and inspiring, not merely playing data tag.

If you want to ensure your devs are more Bob-like (pre-pointy-haired boss phase), consider integrating intelligent tools. Call Facet Digital to get your development processed dialed in early. Because the best status report is one that writes itself!

✋ Haven’t met Bob in his previous adventures? Well, he’s been battling ‘useless meetings’, dodging the ‘open-plan distractions’, and chipping away at ‘technical debt’. And of course, who could forget his escapade with the zombie code? Stay tuned, because Bob’s journey through the wilds of software development isn’t over yet.

Dead Code: The Zombie in Your Codebase

Software Developer Productivity Killer #4: Dead Code

Greetings, dear readers! Just when you thought the digital waters were safe after navigating through ‘useless meetings‘, ‘open-plan offices‘, and the vast ocean of ‘technical debt‘, here comes another phantom to haunt your code: Dead Code.

Dead code is akin to a zombie in a movie. It’s there, but not truly alive. It doesn’t contribute, yet it can cause a myriad of problems if left unattended. And just like you wouldn’t want a horde of zombies in your backyard, you wouldn’t want dead code cluttering your codebase.

🧟‍♂️ The Un-Life of Dead Code

  1. The Silent Specter: Dead code silently resides in your software. It’s not executing any tasks, not being called upon, but it’s still THERE. It’s like keeping a broken bicycle in your garage, taking up space, collecting dust, and being an overall eyesore.
  2. The Maintenance Nightmare: As your live code evolves and changes, guess what? You might find yourself unintentionally maintaining and updating your dead code. After all, it’s hard to differentiate a zombie from a living being until it tries to bite you!
  3. The Debugging Disaster: Imagine hunting for a bug and sifting through lines of code, only to realize you’ve been chasing shadows in the dead sections of the code. Frustrating, right?

✝️ Why Should We Perform a Dead Code Exorcism?

  1. Clarity and Efficiency: A clean codebase is a joy to work with. It’s easier to read, understand, and modify. Developers spend less time sifting through the ‘zombie horde’ and more time innovating.
  2. Reduced Risk: Old, dead code can be a breeding ground for vulnerabilities. If you’re not actively using or maintaining it, you might overlook potential security risks.
  3. Better Resource Management: Time spent maintaining dead code is time stolen from adding new features or addressing other vital areas of your software.

🔥 Vanquishing The Zombie Horde

  1. Regular Codebase Audits: Make it a habit to regularly review your codebase. Tools and software, properly integrated into your engineering systems, can help identify unused code sections, making the hunt easier.
  2. Embrace the ‘Delete’ Key: If a piece of code no longer serves a purpose and has no foreseeable use, bid it adieu. It’s liberating. Don’t block comment it out just in case. You have source control for that, right?
  3. Documentation is Key: Ensure that your code is well-documented. When another developer jumps in, they should be able to differentiate the living from the undead.
  4. Foster a Clean Code Culture: Cultivate an environment where clean coding practices are championed. A stitch in time saves nine, and a deleted line of dead code can save hours!

💡 In Conclusion

Dead code might seem harmless, but it can drag down productivity and bloat your software project. Be vigilant, be proactive, and remember: the only good zombie code is the one that’s been vanquished!

And if you find yourself amidst a codebase zombie apocalypse, don’t hesitate to call in the experts (oh yes, that’s us). Why wrestle with the undead when a skilled zombie hunter is just a click away? 🧟‍♂️ 🏹 💀

✋ Need to catch up on the other apparitions threatening developer productivity? Check out our previous explorations into ‘useless meetings’, the ‘open-plan office’, and the lurking ‘technical debt’. Stay tuned as we continue our crusade against the forces of coding inefficiency.

Technical Debt: When Ignorance Isn’t Bliss

Software Developer Productivity Killer #3: Tech Debt

Ahoy, dear reader! We’ve spoken about ‘useless meetings‘ and the perils of the ‘open-plan office‘. Today, we embark on a voyage beneath the surface to unveil a silent killer, lurking in the deep, dark abyss of codebases everywhere – Technical Debt.

For the uninitiated, technical debt might sound like the overdraft fees on a credit card statement, but trust us, the costs can be even more perilous if not managed. But fret not! We’re here to unveil the mysteries of this productivity assassin and guide you to safer shores.

🌊 Understanding The Iceberg That’s Technical Debt

  1. The Tip of the Iceberg: On the surface, everything seems fine. Your software is running. New features get deployed. But underneath lies layers of rushed code, shortcuts, and bandaids that, much like the bulk of an iceberg, remain invisible to the untrained eye.
  2. The Silent Accumulator: Technical debt accrues silently. It’s the byproduct of fast decisions, expedited features, and temporary fixes. While a quick workaround might speed things up today, it will slow everything down tomorrow.
  3. Feature Slowdown: Ever wondered why the latest ‘simple feature’ took thrice as long as you hoped? Beneath the water, your dev team might be battling tentacles of ancient code and patchwork solutions. The deeper they swim, the harder it gets.

📉 The Business Cost of Ignoring Technical Debt

  1. Lost Time and Money: The longer technical debt remains, the more expensive (in both time and resources) it becomes to address. Your devs aren’t magicians; they’re navigators trying to avoid crashing into that looming iceberg. Code reviews take longer, more bugs appear and are harder to fix the right way, and overall code quality suffers.
  2. Reduced Morale: A team constantly battling the deep-sea monsters of messy code can quickly lose enthusiasm. And a demotivated team isn’t a productive one.
  3. Innovation Stagnation: With so much energy going into managing existing chaos, there’s little left for innovation and growth. Do you really want to be stuck sailing in circles?

🚢 Navigating Away from The Iceberg

  1. Post-Mortem’s Critical Role: Taking shortcuts during an emergency or to expedite a release can be an acceptable strategy. But it’s like borrowing against tomorrow – you must repay it, preferably sooner rather than later. After such incidents or rapid releases, conduct a post-mortem. Assess and catalog the quick fixes and patches applied. This isn’t about finger-pointing but about understanding the new debt that’s been taken on. Prioritize paying down the heaviest debt even before diving back into your feature roadmap. The short-term gain is only beneficial if you’re strategic about the long-term repercussions.
  2. Track Technical Debt: Just as businesses track financial obligations, technical debt should be recorded and monitored. Consider tools or platforms designed for this. If you can’t measure it, you can’t manage it.
  3. Allocate Regular Paydown Time: Embrace that a portion of your dev team’s time needs to be dedicated to addressing and reducing technical debt. Think of it as regular maintenance on a ship to ensure smooth sailing.
  4. Educate and Involve Everyone: Tech debt isn’t just a ‘dev issue’. Business stakeholders should be educated on its implications. When everyone’s on board (pun intended), it’s easier to navigate treacherous waters.

💡 In Conclusion

Technical debt, if left unchecked, becomes that giant iceberg threatening to sink your ship. But with intentionality, regular check-ins, and an understanding that it’s as real as any financial debt, you can sail through smoother waters. After all, in business, as in sailing, forewarned is forearmed.

And if you’re already feeling a bit seasick from tech debt, consider chatting with an expert (hint: us) to help navigate. Why DIY when you have a seasoned captain just a call away?

✋ Keen on avoiding more developer productivity pitfalls? Dive into our discussions on ‘useless meetings’ and the ‘open-plan office’. Stay tuned; we have more voyages planned in this series to guide you through the turbulent seas of productivity.

Why Your Dev Wants To Live In a Cave

Software Developer Productivity Killer #2: Open Plan Offices

Ah, the modern open-plan office: a utopia of collaboration, communication, and… countless distractions? If you found yourself nodding (or even chuckling) at our series’ opener on the ever-ubiquitous ‘useless meetings’, strap in! We’re about to tackle another biggie on the list. Say hello to productivity killer #2: Open Plan Offices.

But before we set off on this whimsical journey, if you missed the maiden voyage into the land of ‘why-so-many-meetings’, you can catch up right here. But for now, back to Bob and his dream of becoming a modern-day caveman.

👹 Why Open-Plan is the Freddy Krueger of Productivity Dreams

  1. The Illusion of Togetherness: Open plans were designed to foster collaboration. Yet, they often become a cacophony of ringtones, chatter, chewing sounds, and the unmistakable sound of Bob’s bad ass mechanical keyboard fury. Yes, you’re together, but is any real work happening?
  2. Focus? What Focus? Bob was in The Zone. Remember that? But wait, Jane just remembered a hilarious cat video she simply MUST share with everyone. And there it goes – Bob’s concentration, like a fragile soap bubble, bursts.
  3. The Inadvertent Eavesdropper: Developers, often in their quest for a bug, mutter incantations. In an open plan, Bob isn’t just coding. He’s also inadvertently tuned into three different project updates, a recipe exchange, and someone’s weekend plans.
  4. The Quick Question Conundrum: It’s tempting, oh-so-tempting, to swivel your chair and ask Bob a quick question. Yes, you might get your answer in 30 seconds, saving you a 15-minute search. But here’s the rub: you’ve just dragged Bob out of his flow state. While you saved 15 minutes, it’s costing him 15-30 minutes to get back into the groove. Do the math, and the net productivity just took a nosedive.

🤫 Defeating The Open-Plan Demon

  1. Introduce Quiet Zones: Dedicate spaces where silence is golden. Think of it as a library: a sanctuary where devs like Bob can code in peace, without fearing the next viral video ambush. This should be the developers’ main working area, not some prison cell down the hall without all of their monitors and such.
  2. Partition Magic: No, not a throwback to 90s software – actual physical partitions. Use bookshelves, plants, or even trendy modular walls. Anything that gives Bob his own mini-cave.
  3. Headphones: The Universal ‘Do Not Disturb’ Sign: Encourage a culture where wearing headphones signifies, “I’m deep diving, disturb at your own peril.” And respect it.
  4. Flexible Working Arrangements: Some people thrive in open plans; some, like Bob, contemplate desert islands. Allow for remote working days or flexible hours to cater to all productivity rhythms. Let’s be honest: after the pandemic, this is likely the new norm anyway. (And for exactly these reasons.)
  5. Private Offices and Real Cubicles: The Shields of Solitude: Let’s face it, those half-height cubicles aren’t fooling anyone. They’re like wearing a hat and thinking you’re invisible. Real, full-height cubicles or private offices offer more than just “don’t look at me” privacy. They safeguard devs from the myriad of visual distractions – be it the tantalizing glint of a passing donut or colleagues unleashing their inner mime artists. Visual serenity can be just as crucial as silence for deep focus.

🎁 Wrapping It Up

Open-plan offices aren’t inherently evil. Like a mischievous pixie, they can be tamed with a bit of thoughtful strategy. Respect individual work rhythms, and always be on the lookout for signs of a distressed Bob.

✋ Missed the first productivity killer? The siren song of ‘useless meetings’ awaits you here. And stay tuned because productivity killer #3 is lurking just around the corner.

Could've been an email

Why Your Dev Just Bought a Magic 8-Ball

This is the first post in a series on software developer productivity DOs and DON’Ts. Check back often for upcoming posts…

Software Developer Productivity Killer #1: Useless Meetings

Picture this: your software developer, let’s call him Bob, is at the peak of his creative genius. He’s coding at the speed of light, the characters dancing on his screen in a coordinated ballet. Just then, the dreaded ping – yet another meeting request. Bob’s heart sinks, his momentum wanes, and he wonders if he should swap his laptop for a typewriter to dodge digital meeting invites.

Alright, now before you brandish pitchforks my way, let me clarify – not all meetings are evil. Some can be life-affirming soul-searching odysseys. But many, oh-so-many, are like that extra sprig of parsley on your dish. Looks nice, but no one knows why it’s there.

😱 Why Developers Loathe The Meeting Monster

  1. The Zone Disturbance: Every time a developer is yanked out of “The Zone”, it takes a good 15-30 minutes to get back into it. The Zone is that magical realm where developers wield their wizardry. You know what doesn’t exist in The Zone? Meetings about whether to use Oxford commas in comments.
  2. The Mismatch of Tongues: Developers speak in code; managers often in spreadsheets. It’s like expecting a cat and a goldfish to discuss the merits of wet vs. dry food. Spoiler: the goldfish doesn’t care as long as it’s wet.
  3. The “This Could Have Been An Email” Syndrome: 85% of what’s discussed in meetings (okay, maybe a cheeky estimate) could have been summed up in a well-crafted email. And the other 15%? Probably could have been a Slack message.

⚔️ How To Slay The Useless Meeting Dragon

  1. Agenda is a Must: If you can’t write down what the meeting is about, chances are it doesn’t need to happen. An agenda makes the difference between a focused huddle and an aimless gossip fest. Some even go farther – consider adopting the ‘Amazon 6-Pager’ method where dense topics are distilled into a concise 6-page narrative; it encourages clarity and deep thinking…and provides a higher bar to requiring a meeting.
  2. Time is Money; Cap It: Unless you’re solving the mysteries of the universe, most meetings shouldn’t exceed 30 minutes. Set a timer if you must! And if anyone starts with, “This might be off-topic, but…” – it’s a trap!
  3. Ask “Who Really Needs to be Here?” If Bob’s expertise is in back-end development, he probably doesn’t need to opine on logo colors. Send Bob back to his magical coding realm. He’ll thank you. So would your CFO if he could calculate the ROI of the salaries in the room vs the outcomes of the meeting.
  4. Post-Meeting Homework: Summarize. Distribute. Action. If there are no clear next steps after a meeting, then what was it all for?

💡 Conclusion

Meetings aren’t the enemy. It’s aimless, purposeless, could’ve-been-an-email meetings that developers detest. Think before you ping. Remember, every time you pull a developer into a needless meeting, somewhere in the world, a Magic 8-Ball gets a question like, “Should I attend this meeting?” And the answer is, more often than not, “Outlook not so good.”

Next time you’re tempted to drag your tech team into a meeting, ask yourself: “Do I really want to be the parsley on Bob’s plate?” If the answer is no, rethink that invite.

Now, if you’re struggling to optimize team productivity and communication, remember there are experts (like yours truly) who can help. Because, let’s face it – you could do it, but why would you when there’s a cheeky genius available for hire? 😉