How to be a Productive Product Engineer

by Ryan Edge

Ryan Edge

ryanedge.page

  • Fullstack with a front-end lean
  • I build applications for Web, Desktop, and Mobile
  • ❤️'s Flutter and React
by Uptech Studio

Chase goals, not metrics

AppFit helps entrepreneurs and product teams stay focused on what matters most about their product analytics.

www.appfit.io

Today's agenda

  • Developer Experience
  • Feedback Loops
  • Flow State
  • Cognitive Load

The Overburdened Engineer

  • Full-Stack Mastery: From frontend to DevOps.
  • Time Management: Struggling to balance meetings, maintenance & feature development, and deployments.
  • Multi-domain (tech): Handling different languages, frameworks, and tools.
  • Multi-domain (product): Product manager + developer + QA Tester

Developer Experience

Developer experience encompasses how developers feel about, think about, and value their work.

3 Dimensions of Developer Experience

What is a feedback loop?

1. Feedback Loops

Mechanisms that are used to validate and get feedback about the software development process

Examples of feedback loops

  • Wait time to recompile/test code changes.
  • Wait time for approval from code reviewers.
  • Wait time for cross-functional communication

How to shorten feedback loops?

Continuously review developer tooling & processes

Shorten feedback loops

Implement build & test processes

Shorten feedback loops

Streamline team interactions

Shorten feedback loops

Tools to reduce feedback loops

Agile processes

  • Planning, refinement, standup

Project Management Software

  • Linear, Jira, etc.

Communication software

  • Slack, Discord, Calendly, etc.

What is flow state?

2. Flow state

A mental state in which a person performing an activity is fully immersed in a feeling of energized focus, full involvement, and enjoyment.

Being in the zone

  1. Leads to higher productivity, innovation, and employee development
  2. Work enthusiasm influences performance and product quality.
Poor flow state manifest in...
  • Interruptions and delays (poor feedback loops)
  • Lack of autonomy over work structure
  • Unclear team and project goals
  • Poorly defined requirements

How can we improve flow state?

Cluster meetings

Improve flow state

Avoid unplanned work (scope creep)

Improve flow state

Batch help requests

Improve flow state

Give teams autonomy on how they work

Improve flow state

Give developers autonomy on challenges they solve

Improve flow state

Tools to reduce feedback loops

Team processes

  • Meeting-less days, AMAs, time blocks

Project Management Software

  • Linear, Jira, etc.

Communication software

  • Calendars, Pomodoro, etc.

What is cognitive load?

3. Cognitive Load?

Cognitive load is how much a developer needs to think in order to complete a task.

Confusion costs time and money.

Types of Cognitive Load

Intrinsic

The inherent level of difficulty associated with a specific problem we are solving.

Extraneous

The level of difficulty imposed by factors not directly relevant to the problem we are trying to solve.

Types of Cognitive Load cont'd

Examples of cognitive load

  • Cool, complex architectures
  • Poorly documented code or systems
  • Fancy libraries
  • Trendy technologies
  • Multi-domain teams

How can we combat cognitive load?

Stick to boring architecture for as long as possible

Stick to boring architecture for as long as possible, and spend the majority of your time, and resources, building something your customers are willing to pay for.

FOMO != productivity

Let your architecture match your needs & capacity

  • Multiple functional teams may function better with microservices
  • Small teams may function better with monoliths
  • Scale the architecture for your demands.

Limit responsibilities or simplify domains

Evolve your technology stack strategically

  • Start with what is well-understood and proven
  • Advanced technologies require compelling reasons

Prioritize value over creativity

The top function of developers is to provide business value.

Write clean code

  • Limit the amount of code in a function or file
  • Create abstractions to hide implementation details
  • Simplify control flow
  • Minimize mutable state
  • Limit test overhead & mocks

Tools to Reduce Cognitive Load

Automation: Automate repetitive tasks.

  • CI/CD pipelines (e.g., Codemagic, GitHub Actions).

Infrastructure as Code: Simplify and manage infrastructure.

  • Terraform, Pulumi, etc.

Infrastructure from Code: Self-provisioning infrastructure

  • Nitric, Encore, Ampt, etc.

Low-Code/No-Code Platforms: Avoid extensive coding.

  • FlutterFlow, Microsoft Power Apps, etc.

Recap

Poor developer experiences cause friction, and friction limits productivity

Fast feedback loops allow teams to work quickly.

Reducing feedback loops and empowering teams can improve flow state.

Remove extraneous cognitive load and focus on business problems worth solving.

😃 teams

😃 products

😃 users