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 | [email protected] | @cembasaranoglu About me - @Hepsiburada

    - Core Commerce | Market - @Getir - Food - @Trendyol - Data - cem-basaranoglu @github - [email protected]
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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.
  7. 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
  8. 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
  9. 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?
  10. 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
  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
  12. 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
  13. Product Minded Software Engineers: Understanding the Product with a code-

    fi rst approach Devolution of Engineers 1967 1776 1968
  14. 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
  15. 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"
  16. 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.
  17. 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
  18. 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
  19. 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.”
  20. Product Minded Software Engineers: Understanding the Product with a code-

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

    fi rst approach Value-oriented vs. Solution-oriented
  22. 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
  23. 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.
  24. 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?
  25. 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?
  26. Product Minded Software Engineers: Understanding the Product with a code-

    fi rst approach Product First Approach they usually only focus on this; WHY?
  27. 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.
  28. 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
  29. Product Minded Software Engineers: Understanding the Product with a code-

    fi rst approach Key Characteristics Start with WHY?
  30. 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.
  31. 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
  32. 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.
  33. 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.
  34. 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.
  35. 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.
  36. 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
  37. 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.
  38. 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.
  39. 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.
  40. 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.
  41. Product Minded Software Engineers: Understanding the Product with a code-

    fi rst approach Become a Product-Minded Software Engineer Discover your company in time
  42. 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
  43. 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
  44. 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
  45. 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
  46. Product Minded Software Engineers: Understanding the Product with a code-

    fi rst approach Become a Product-Minded Software Engineer Feedback is important