Uncategorized 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
1
archive,category,category-uncategorized,category-1,ajax_fade,page_not_loaded,,select-theme-ver-4.4,wpb-js-composer js-comp-ver-5.4.7,vc_responsive
 

Uncategorized

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.

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.

The Micromanagement Menace

Software Developer Productivity Killer #9: Being Micromanaged

Oh, Bob. We’ve seen him weather the storm of unclear requirements, battle the beasts of artificial deadlines, and navigate the treacherous paths of poor branching strategies. But, as he sits at his desk, diligently tapping away at his code, he feels a shadow looming over him. It’s not a faulty server or a nasty bug; it’s something far more foreboding: the ever-watchful eyes of a micromanager.

🔬 Micromanagement: A Creator’s Kryptonite

Software development isn’t just a profession; it’s an art. Coders, like artists, need space to think, to test, to experiment, to create. Imagine for a moment, a world where Shakespeare was questioned at every sonnet line or where Da Vinci was advised on every brushstroke. Absurd, right? Then why do it to developers?

  1. The Trust Deficit: Micromanaging sends a clear message: “I don’t trust you.” If a developer feels distrusted, their motivation tanks faster than a lead balloon. They are professionals, having trained and practiced their craft. They deserve autonomy and trust.
  2. Turned-off Thinking Tanks: By giving developers overly specific instructions, you inadvertently switch off their innovative minds. The end result? Instead of a creatively crafted solution, you get a mundane, to-the-point output, devoid of innovation or flair. And if a single piece of your ultra-specific instructions fails? The domino effect kicks in, leading to bugs, skipped functionalities, and costly reworks.
  3. The Creativity Killer: Micromanagement suffocates the very essence of software development – creativity. Let’s not forget, you hired Bob for his ingenious coding skills, not to be a mere executor of over-detailed directions.

🤔 Are You a Micromanager? Signs You Might Be

  • You often think, “It’ll be faster if I just do it myself.”
  • You want to review and approve every minor decision or change.
  • You spend more time overseeing your developers than strategizing or planning.
  • You demand constant updates and have an insatiable thirst for progress reports.
  • You provide overly detailed instructions, often explaining how to do something instead of what needs to be done.

If you’re nodding along to more than a couple of these, it might be time to take a step back. Remember, you hired experts. Trust them to be just that. Remember, Bob thrives when he’s trusted and valued. As a leader, it’s crucial to provide direction, not domination. Embrace the brilliance of your team, and watch them turn your visions into virtual victories.

So, you still don’t get the results you desire without micromanaging? Perhaps it’s not about supervising more closely but improving the dynamics. Either you need to refine your team’s skills or you need to better define your directions and grant them more autonomy.

Need assistance on either front? Whether it’s bringing adept developers to bear or establishing effective communication strategies within your team, Facet Digital can guide the way. Reach out, and let’s keep those developer engines running without any unnecessary hiccups.