Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Product Minded Software Engineers: Understanding the Product with a code-first approach

Product Minded Software Engineers: Understanding the Product with a code-first approach

It is about what we need to do as software engineers to enable product-oriented attributes in our mental model.

Cem Basaranoglu

March 15, 2023
Tweet

Other Decks in Technology

Transcript

  1. Cem Basaranoglu
    Product Minded Software
    Engineers
    Understanding the Product with a code-
    fi
    rst approach

    View Slide

  2. Cem Basaranoglu | [email protected] | @cembasaranoglu
    About me
    - @Hepsiburada - Core Commerce | Market
    - @Getir - Food
    - @Trendyol - Data
    - cem-basaranoglu @github
    - [email protected]

    View Slide

  3. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    # Topics
    • From Craftsman to Engineer(ing): What we lost in the transition
    from horizontal to vertical expertise
    • Battle in Brain: Understanding How Engineers and Product
    People Think
    • The Perfect Union of Opposites: Code First vs. Product First
    Approaches
    • Enabling the Product-First Aspect from our Code-First
    Approach

    View Slide

  4. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    From Craftsman to Engineer(ing)
    What we lost in the transition from horizontal to vertical expertise
    • From the 1960s to Now
    • Devolution of Software Engineers

    View Slide

  5. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    From 1960s to Now
    NATO SCIENCE COMMITTEE Garmisch, Germany, 7th to 11th October 1968
    The term “Software Engineering” was coined

    View Slide

  6. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    From 1960s to Now
    Main factors of failed software projects
    • Projects that ran over budget
    • Projects that ran over time
    • Software that made ine
    ffi
    cient use of calculations and memory
    • The software was of low quality
    • Software that failed to meet the requirements
    • Projects that became unmanageable and code di
    ff i
    cult to maintain
    • Software that never
    fi
    nished development

    View Slide

  7. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    From 1960s to Now
    Common Questions
    • How to keep code maintainable?
    • How to satisfy extensive and changing requirements?
    • How to work on code as a team?

    In the 60th client-server-based version control systems or distributed version control systems just did
    not exist.

    View Slide

  8. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    From 1960s to Now
    The Next Round
    Brain Randell and John Buxton published "Software Engineering Techniques" in 1970.
    • The development of new programming languages with features intended to make it harder
    for programmers to make errors.
    • The development of Integrated Development Environments (IDEs) with developer-centric
    tools to aid in the software development process, including syntax highlighting, interactive
    debuggers, and pro
    fi
    ling tools
    • The development of code repository tools like SVN and GIT.
    • The development and adoption of code documentation standards
    • The development and adoption of program modeling languages like UML
    • The use of automated testing frameworks and tools to verify expected functionality
    • The adoption of software development practices that adopted ideas from other
    engineering disciplines

    View Slide

  9. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    From 1960s to Now
    "Establishment and use of sound
    engineering principles to
    economically obtain reliable
    software that works on real
    machines e
    ff
    i
    ciently.” 1972
    The term “Software Engineering” was coined

    View Slide

  10. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    From 1960s to Now
    Two silver bullets
    • How can any software project be delivered faster and tested better?
    • Software as an Engineering Product?

    View Slide

  11. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    From 1960s to Now
    How can any software project be delivered faster and tested better?
    Software Development Methods

    View Slide

  12. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    From 1960s to Now
    How can any software project be delivered faster and tested better?
    Software Development Methods

    View Slide

  13. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    From 1960s to Now
    Software as an Engineering Product?
    Task Manager
    Activity Monitor

    View Slide

  14. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Devolution of Engineers

    View Slide

  15. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Devolution of Engineers

    View Slide

  16. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Devolution of Engineers
    1967

    1776

    1968

    View Slide

  17. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Devolution of Engineers
    Change in our "mental control
    settings”
    McGovern Institute for Brain Research at MIT

    View Slide

  18. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Devolution of Engineers
    Research started in 1927 by psychologist Arthur
    Jersild

    "slippage e
    ff
    ects" and "the cost of switching is a loss
    of productivity"

    View Slide

  19. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Devolution of Engineers

    View Slide

  20. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Devolution of Engineers
    Cerebral Cortex: memory, attention, perception, awareness, thought, language, and consciousness
    Frontal Lobe: Reasoning, problem-solving, decision-making, planning, behavioral inhibition, attentional orientation, self-monitoring, controlling emotions, motor skills
    Parietal Lobe: It controls sensory processing, perception of shapes and colors, spatial perception, visual perception, and arithmetic abilities.

    View Slide

  21. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Battle in Brain
    Understanding How Engineers and Product People Think
    • The Product
    • Value Oriented vs. Solution Oriented

    View Slide

  22. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    The Product

    View Slide

  23. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    The Product
    Space A: Di
    ff
    erent Mental Models. Fill These White Spaces as a
    Product-Minded Engineer

    Space B: Business Model, e-Commerce Apps, Social Media Apps, etc.

    Space C: Business Decisions, OKRs, Strategies

    View Slide

  24. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    The Product

    View Slide

  25. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    The Product

    View Slide

  26. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    The Product
    “… to deliver the software project faster, to test it better.”
    FROM
    TO
    “… to deliver the value faster, to test it better.”

    View Slide

  27. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Value-oriented vs. Solution-oriented

    View Slide

  28. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Value-oriented vs. Solution-oriented

    View Slide

  29. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    The Perfect Union of Opposites
    Code First vs. Product First Approaches
    • The Code-First Approach
    • The Product First Apporach

    View Slide

  30. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Code First Approach
    Use Case
    Let's say we work at LinkedIn.
    The business team requested us to be able to upload the logos of the companies on their own pages and
    for users to see these logos on the company's page or on the designated pages of the application.

    View Slide

  31. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Code First Approach
    1- In what format will they upload?
    2- In what format do we save it?
    3- Will we compress images while storing them to minimize the cost of the size of the data?
    4- If we are going to compress, which algorithm will we use?
    5- Will we check the pii compatibility of the images?
    6- Are we going to store the logo on an image server?
    7- Will we cache images client or server-side? If we're going to cache it, what should its duration be?
    8- How do we monitor the cache hit/miss ratio?
    9- How do you resize the images?
    10- At which endpoint will we present the images or how will we distribute them to other teams?

    View Slide

  32. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Code First Approach
    There are two questions we are really focusing on
    HOW and WHAT?

    View Slide

  33. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Code First Approach

    View Slide

  34. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Product First Approach
    they usually only focus on this;
    WHY?

    View Slide

  35. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Product First Approach
    1- People usually match items with images and store them in their memory. And images have a better
    e
    ff
    ect than any other factor.
    2- the awareness of the companies can be increased by the users with logos.
    3- Companies have been known to spend millions of dollars designing their corporate logos – for good
    reason. A bad logo design can doom a brand.

    View Slide

  36. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Enabling the Product-First Aspect from our Code-First Approach
    • Key Characteristics
    • Become a Product-Minded Software Engineer

    View Slide

  37. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Key Characteristics
    Start with WHY?

    View Slide

  38. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Key Characteristics
    This is not an option. This is biology.
    Neocortex: Our neocortex, corresponds with the “What” level. This
    is responsible for all our rational and analytical thought and
    language. This allows us to look through vast amounts of facts and
    fi
    gures, but it doesn’t drive behavior.

    Limbic Brain: The middle two sections comprise our limbic brain
    and are responsible for all our feelings, like trust and loyalty. This
    roughly corresponds with the “Why” level. This area of the brain is
    responsible for all human behavior and all our decision-making.

    View Slide

  39. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Key Characteristics
    “If I had asked people what they wanted they would have said a faster horse.” Henry Ford

    View Slide

  40. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Key Characteristics
    Protest By Nature
    Product-minded engineers never accept the requests of the stakeholders they work with. They may be
    satis
    fi
    ed with their answer to the WHY but never hesitate to test the solution. Most of the time, they do not
    accept this idea as it is and try to improve the solution. They often challenge existing speci
    fi
    cations,
    suggesting alternative product approaches that might work better. They seek di
    ff
    erent formats and di
    ff
    erent
    dimensions of the solution. They reject other people's solutions, which doesn't mean they don't like them.
    They often want to sharpen the solution. While doing this, they enjoy asking questions and listening to
    di
    ff
    erent ideas.

    View Slide

  41. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Key Characteristics
    Think Twice
    Product-minded engineers often have well-thought-out ideas. They take the time to understand how the business works,
    how the product
    fi
    ts in, and its goals. They really care about the feelings of your customers. They often dive straight into
    data about business and user metrics, getting their hands on this data however they can. Their ideas are often based on
    data. They are afraid to talk without data because they don't like to speak in vain. They always think twice before sharing
    their thoughts with their teammates, product persons, managers, or other stakeholders in the organization. When their
    ideas are hard to sell. They try to
    fi
    nd out why. The purpose of doing this is not arrogance. They really want to understand
    the gaps in their ideas. If they genuinely believe in their ideas for the product, they are brave to eliminate all gaps and
    share their ideas again.

    View Slide

  42. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Key Characteristics
    Think outside the BOX
    Product-minded engineers are adept at seeing the big picture. They never focus on a single point. They do
    not hesitate to use their instincts to know the future. But it should not be forgotten that the basis of their
    instincts is their experience, and they make conscious decisions. They consider many open points, such as
    the pain points that any change will cause to customers, di
    ff
    erent market factors, and competitors'
    reactions. They address all the open points and share them with all stakeholders. They always wonder about
    gaps addressed. Sometimes, even when they have to act fast and adapt to the speed of the market, they
    remain these open points on the agenda.

    View Slide

  43. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Key Characteristics
    Smooth Communicators
    Product-minded engineers are almost always in solid communication with their non-engineered
    stakeholders. They are also smooth communicators, making it clear they're interested in learning more
    about how other disciplines work. You often see them talking to stakeholders. In most of these
    conversations, they discuss their ideas about their product and clinch the idea of how it could be better.
    They love to get ideas from people with di
    ff
    erent disciplines. They never argue that they have the best idea.
    On the contrary, they know that the best view can be obtained due to collaborative thinking. For this reason,
    their communication is vital. And generally, everyone accepts them as part of the solution.

    View Slide

  44. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Key Characteristics
    Trade-o
    ff
    Juggler
    One of the most unique strengths of product-oriented engineers
    is juggling both product and engineering tradeo
    ff
    s and their
    e
    ff
    ects. They have the engineering perspective and the product
    perspective at the same time. For this reason, they can
    fi
    nd
    di
    ff
    erent and reliable solutions. They can quickly go back-and-
    forth between the two sides of the same coin: product features
    and engineering e
    ff
    ort and tradeo
    ff
    s. Because they do it all in
    their head, they get to valuable conclusions quickly using their
    engineering and product insights.
    Cost
    Bene
    fi
    t Risk
    Tradeo
    f

    View Slide

  45. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Key Characteristics
    Always Patient
    They realize that Rome was not built in a day. They constantly strive to improve their
    ideas, but they know that the right idea can only make a signi
    fi
    cant impact at the
    right time. They wait patiently for the right time to come. While doing this, they smell
    the market and follow the competitors. When they realize that it is not the right time
    for their ideas, they never give up on these ideas; they just postpone them for the
    right time. There is always an idea waiting for its time on their schedule.

    View Slide

  46. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Key Characteristics
    Edge-Case Master
    They can predict many edge cases and address them to the right points. Sometimes, you need
    enough time and energy to deal with edge cases. However, it is more bene
    fi
    cial in many cases to
    address them and plan them instead of wasting your time and your energy overcoming these
    edge cases. In this way, you do not ignore edge cases. More importantly, you use your time really
    e
    ffi
    ciently. Product-minded engineers focus on the "minimum lovable product concept". They put
    all their energies into tackling the really troubling concerns of the product. On the other hand,
    they plan their impacts on edge cases well and aim to perfect the product in the short run. They
    come to you entirely with good middle-ground suggestions.

    View Slide

  47. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Key Characteristics
    Strike Home with Customers
    They constantly worry about their users not understanding their intentions clearly. "How can we be sure that our users will
    be able to use the features we have developed in the way we intended?" They constantly ask themselves the question.
    While the features are still on the anvil, they are worried about the answers. We know that testing phases, sign-o
    ff
    processes, or even user acceptance tests do not guarantee that users will truly understand your intent. So they constantly
    worry about their users not understanding their intentions clearly. They constantly follow the features they do to see if
    they are truly understood by their customers. They focus on metrics and want to make sure things are going well. When
    they realize that something is not right, they focus on how they can better explain it to their customers. They never
    consider themselves more clever than the customer. They learn from every case that they cannot present themselves to
    the customers. They check the interview records with their customers or participate in the customer experience tests
    themselves to solve this problem.

    View Slide

  48. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Key Characteristics
    Product Ownership
    They are not just story crunchers. On the contrary, they want to measure the impact of even the most negligible work on
    their customers. After the jobs they have developed are available, they work with data scientists, product persons or other
    stakeholders to track the metrics of these works. They consider their work done only after getting results on user
    behaviour and business metrics. They work with data scientists, product persons, and all other stakeholders to do it. If the
    results are not what they expected, they delve deeper into the causes. They work tirelessly until they detect the root cause
    of the problem. And once they
    fi
    nd the root causes, their only ultimate goal is to solve this problem. They relentlessly ask
    themselves, their teammates, and even the organization; how is our work really doing? They want to know all the
    requirements for the projects they're involved in before trusting their instincts. They are not only concerned with short-
    term needs. They want to know all the long-term requirements to see the bigger picture. They use this data to guide their
    inner instincts.

    View Slide

  49. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Become a Product-Minded Software Engineer
    Discover your company in time

    View Slide

  50. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Become a Product-Minded Software Engineer
    Make a strong relationship with your product persons

    View Slide

  51. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Become a Product-Minded Software Engineer
    Find who frequently interacts with the customer

    View Slide

  52. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Become a Product-Minded Software Engineer
    Don't be afraid to suggest new ideas

    View Slide

  53. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Become a Product-Minded Software Engineer
    Talk about tradeo
    ff
    s
    Cost
    Bene
    fi
    t Risk
    Tradeo
    f

    View Slide

  54. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Become a Product-Minded Software Engineer
    Feedback is important

    View Slide

  55. Product Minded Software Engineers: Understanding the Product with a code-
    fi
    rst approach
    Thank you all!

    View Slide