black background with dots

Peter Ord

CEO, GuideCX

Annica Burns

Dir Mobile Eng, LifeOmic

Christian Pulfer

Partner, Founder Music

Daniel Wright

Founder & CEO, Local Shift

EST. 2017

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

co[de]sign

LATEST and greatest

Blog post cover

Monday, January 31st, 2022

9 React and JavaScript Tips You Should Start Using Today

Although this guide is intended for React and JavaScript beginners, it isn’t limited to them. In fact, I’m certain many of the following nine React and JavaScript tips will be helpful to beginners and experts alike. If you're a seasoned coder, implement these hacks to become more productive and improve your code. If you're new to coding, this is your chance to master React and JavaScript from the very beginning. React Tips 1. setState() using function composition By using function composition, you can compose functions for different purposes. This approach also helps you to write cleaner and more readable code. Have you worked with forms before? I bet you have. When it comes to forms, you may need to handle several input fields. A common solution is to create a setYourFieldName setter function for each input field so you can update its value. Something like the following: const [firstName, setFirstName] = useState(''); const [lastName, setLastName] = useState(''); const [username, setUsername] = useState(''); setFirstName("blarz"); ... While the above is valid, it isn't elegant. For a cleaner way of doing it, try using function composition. Let’s take a quick look at this scrawl on my whiteboard. Try to read it line by line. I am sorry if you weren't able to read it. (If you can't read my handwriting, cut me some slack, I use a keyboard for a living, not a marker 😜). The idea with this is to delay the reading of each line in order to give your brain time to digest it effortlessly. For help mastering function composition, take a look at the live version of my example here [https://codesandbox.io/s/10-helpful-react-and-javascript-tips-r3mdn?file=/src/FunctionComposition.js] . To sum this up, using function composition allows you to: * Write cleaner and more readable code. * Centralize the logic for updating the state. * Work with any number of input fields. 2. Pass props down using the spread operator Components communicate with other components via props. Props are data (or settings) that components need. This means you may need to pass down a list of them. It is just fine to pass a few props down explicitly and individually, but when you need to pass a huge list of them, it can be a pain. Here is when the spread operator (...) comes to the rescue. The simplest way to pass several props at once is to define an object with all the props the component needs. So you don’t need to be explicit setting the prop name and its corresponding value. Let’s see the next piece of code for a better understanding. As you can see in the code snippet, the Logo component expects four props: isBrandText, brandImageUrl, altAttr, and brandText. So in the app component, we pass down thelogoInfo object, which is spreading its properties and the corresponding values—a powerful and clean solution! 3. Using short-circuit evaluation The short-circuit evaluation makes our code more elegant, readable, and clean. This tip sounds simple, but continue reading to see a few pitfalls you might not have seen before. Let’s take a look at the next example. return isLoading && <SpinnerComponent/>; The above code checks if isLoading is true. If so, it renders the SpinnerComponent ; otherwise, it does nothing. What will be the output of the following return statement in the ConditionalsInReactcomponent ? Did you guess it? The output will be the following: What happened here? Why is it rendering 0? Let’s discuss it. 🚨 Values of renderables and non-renderables in React I spent my precious time trying to understand why the evaluation was rendering 0. The answer: I discovered that React will render anything that is a type of string or number, but it will not render value types of false, null, or undefined. For a better understanding, let’s take a look at the next statements and their outputs. You will notice how the above explanation now makes sense. return 1 && <Spinner/> // it will render <Spinner/> return "string" && <Spinner/> // it will render <Spinner/> return 0 && <Spinner/> // it will render 0 Solution To make a short-circuit evaluation safe, you can use one of two strategies: the ternary operator or double negation (double casting). The ternary operator {rating ?  : null } Double negation You can do something like {!!rating && } , making sure the rating is cast to a Boolean value. 4. Update multiple-input state values with only ONE handler When you're working with forms in React, you will need to watch for changes in the input fields. When there are only a few input fields, you can easily catch those changes by creating an updater function for each of them. However, if you're working with large forms with several input fields, this approach would be a bad idea. Instead, define one handler function to use for all input fields. By doing this, you reduce the lines of code, which in turn makes you more productive. Let’s take a look at the next component. In the above code snippet, we have created a component called MultipleInputs, which basically renders a form with several input fields. Then we have declared the state variable inputs and its corresponding updater function setInputs. The inputs variable is the object with all the input fields we are going to need—firstName, lastName, username, email, password, etc. Now let’s focus on the handleChange function. Here we are receiving an input e, which is a SyntheticEvent [https://reactjs.org/docs/events.html] object. This object contains useful metadata such as the target input’s ID, name, and current value. Let’s deconstruct the e object and extract the name and value from its properties. const handleChange = (e) => { ... const { name, value } = e.target; ... }; Finally, we update the current input field by passing its name as a dynamic key [name] and its corresponding value. const handleChange = (e) => { const { name, value } = e.target; setInputs((prevState) => ({ ...prevState, [name]: value })); }; Voila! You have saved time and have cleaner code. 5. Modify arrays in React with one of three methods Below, I've demonstrated the three best approaches to modify arrays in React. Take a look at the scrawls on my whiteboard and read them line by line. Using Lifecycle or setState() Using Hooks — short version Using Hooks — detailed version Next I will show you a real example using Hooks. If you want to see how this should be done using class-based components, scroll up a bit to the picture of my scrawl whiteboard. JavaScript Tips 6. Pause Console Debugger One day, I was fighting with a dropdown. I just wanted to inspect one of its elements. It was frustrating. The dropdown closed automatically when I tried to right-click on the element and click on the “Inspect” option. I bet you have experienced this headache before too, but from now on, you will have the antidote: * Open your console from a browser. * Type in the following command: setTimeout(() => {debugger;}, 5000) I hope this comes in handy! 7. Welcome back to console.log() For those who are like me and always come back to the console.log(), here's a good tip: Type in the code below, and you will see the variable name and its value. console.log({yourVariable}); 8. Let React assign keys to children Assigning keys to children is an important matter in React. It’s the way React identifies which items have changed. I have used several methods to assign unique keys to children of an element, but once I discovered that React.Children.toArray has the power of assigning keys to children, my life changed. Here's an explanation of React.Children.toArray from the official React doc [https://reactjs.org/docs/react-api.html]: > Returns the children opaque data structure as a flat array with keys assigned to each child. Useful if you want to manipulate collections of children in your render methods, especially if you want to reorder or slice this.props.children before passing it down. It’s really simple. You just need to wrap the children, something like the code below. 9. Use the nullish coalescing operator Using a fallback value with the OR (||) operator is a good idea when it comes to check if a value is falsy [https://developer.mozilla.org/en-US/docs/Glossary/Falsy]. Quick refresher — JavaScript falsy values: false, '', 0, "", undefined, null, NaN Let’s suppose we have this Car component. Did you notice the issue in the above code? In the span tag, we are using a fallback value whenever the car.price statement is evaluated as falsy. So this means if the car.price is 0, the component will render “Not available.” This, of course, is wrong because we should display 0 as the price. The above code doesn’t cover the special case in which we need to check if the value is either null or undefined. Solution Here is when the nullish coalescing operator ?? comes in handy. This is a logical operator that returns its right-hand side operand when its left-hand side operand is null [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null] or undefined [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined] . Now, using the nullish operator, we will have the following: Full code You can find all React files/components on this Codesandbox. Final Thoughts I am sure that more than one of the nine React and JavaScript tips we discussed throughout this post will save you time and make you more productive from now on. Start off using function composition when you want to compose a function for different purposes. And remember, one of the main patterns in React is the usage of props to communicate to components, so when it comes to passing a huge list of props down, use the spread operator (...) to pass it all at once. Finally, if you follow these tips you will be able to write cleaner, more readable, and elegant code. I hope this post turned be out helpful for you. If you enjoyed it, please share it to reach a wider audience. Thanks for reading. See you in the next piece.

Blog post cover

Tuesday, November 2nd, 2021

Product Design Manifesto

Photo by Javier Allegue Barros [https://unsplash.com/@soymeraki] on Unsplash [https://unsplash.com/] It has been nearly a decade since I started working with digital Product Design. At first, I thought it was going to be something temporary [https://bootcamp.uxdesign.cc/the-journey-of-being-self-taught-part-1-ed4e7b2a12e8] just to pay the bills, but the allure of blending creativity with challenging problems won me over and hasn't stopped me ever since. Throughout this journey, many things have changed, especially the way I perceive this field and the people that are part of it. Relationships, experiences, and even obstacles have helped me to develop a set of guiding principles that have become a constant to keep moving forward, so it's about time I share these with others. 1. Quality over quantity During my time at the university, I was taught that doing hundreds of explorations was the best path to be creative. It's certainly useful when you're in the divergence phase of the creative process, but what they don't teach you is that you need to identify when quality should come before quantity. I can't pinpoint the exact moment when it became my personal motto, but it has been helpful in many different facets of my journey: Product Design outputs, team composition, and even time, they all benefit from prioritizing quality. The trickiest part is not forfeiting quantity, but pursuing quality in everything you do. 2. It's ok not knowing everything As naïve as it may sound, during the first couple of years of my career I thought I had tons of experience and knew a lot, but boy was I wrong. The more I realized I had a whole world to discover, the more I feared I wasn't going to be able to capture everything, but I learned to apply my own principle and accept that quality was more important than understanding every single piece about this field. Moreover, I learned to appreciate the feeling of learning new things for the very first time, accepting feedback from others, and being intentional [https://bootcamp.uxdesign.cc/the-journey-of-being-self-taught-47a9c406a796] about my learning in the last couple of years. 3. Learn something new every day Keeping up with the learning topic, becoming proficient at something doesn't happen overnight. Instead, it occurs in small doses of learning moments on a day-to-day basis. One could argue that by reading a book in a day you've grasped a concept, but most of us don't spend our weekends devouring entire books in 24 hours or less. That's why I love the online expression "Today I Learned", shortened as TIL, because learning can happen at any moment, with any person and any place of your day, you just have to be humble and curious to take it in. 4. Research, research, research It's interesting how when you're working in development with an agency model, you get exposed to a wide array of unknowns in addition to your own craft. I've been completely new to markets like basketball operations, fintech, and data quality, but every time it all started the same way: doing research. Learning from subject matter experts definitely helps to speed up the process of gaining understanding, but you shouldn't depend solely on that. With each new project or feature take that as an opportunity to do your due diligence with secondary research and understand the fundamental concepts. You're not only expected to discuss Product Design in isolation, it should be applied to the context of the product and its business to drive decisions. 5. Keep it consistent This principle unconsciously brings a smile to my face for a small reason: it became an association with me by others I was working with. During my time as a Product Designer for Miami Heat, I had to deal with many moving parts and stakeholders with a deep understanding of the business. Every decision would impact the business at scale, and discussions were crucial to keeping moving forward, so I got into the habit of putting emphasis on consistency to ensure things never got out of control. Before I knew it, some of them started to say "... for consistency's sake, as Laura would say" on conversations I wasn't even part of. I gladly took that with me to apply it intentionally elsewhere, which leads me to my next principle. 6. Modularity, flexibility and scalability Most designers focus on aesthetics at the beginning of their careers. I know I did, but drop shadows and smooth interactions don't make successful products that change people's lives. Systems Thinking is one of the most critical skills any Product Designer should develop, yet is often ignored and barely touched while deepening our skillset. With good System Thinking [https://medium.com/disruptive-design/tools-for-systems-thinkers-the-6-fundamental-concepts-of-systems-thinking-379cdac3dc6a] , your product has the modularity that allows for flexibility within existing features, which in turn enables scalability of the system as a whole. This skill can be applied to all levels of any product, like a navigation pattern, a checkout User Flow, or even the buying module as a whole. The key to all of this is not only about creating the right connections but doing it consistently to naturally scale as new business and user needs arise. 7. Whenever possible, be prepared When you're a freelancer or consultant you have to learn to do everything on your own, which means you have to be prepared because nobody else will do it for you. All those meetings, scope definitions, and milestone deliverables depended solely on me, so when the time came and I had to collaborate with a team it was like second nature to me. As someone that values punctuality and responsibility, I wanted to lead by example with everything I was doing, like showing up on time to a meeting, being prepared to present in front of an audience, or facilitating a full week of Design Sprint for a client. Doing this consistently creates trust and reliability in you, and in turn, becoming a key player on the team. 8. Communicate early and often It's very common to find designers and developers throwing the classic "I know you're always busy so I didn't want to bother" to excuse the lack of communication, especially during their initial years. The truth is, I prefer the opposite and have healthy constant communication with my teammates, even more so now that we're in a remote-first situation. Asking -good- questions is a best practice that I teach to all junior designers because otherwise solutions are built on assumptions, and fixing them later will come at a higher cost. Many could fear that by asking they may seem dumb, but in a culture of psychological safety asking questions should happen early and often. 9. The sum is better than the parts It must be clear by now how much I've learned to value being part of a team, with the keyword being "learned". As I've shared in previous articles [https://bootcamp.uxdesign.cc/the-journey-of-being-self-taught-acd489305585], I wasn't used to being part of a team, I thought I could do everything on my own. It wasn't until I started to see the outcomes of team collaboration that I noticed how powerful it is to be part of a team, each one of us bringing a different set of skills that will produce greater results than any of us could do on our own. Using music as an example: solos are great, but a tight band is always much better. 10. It's just work This may seem contradictory but Wendy Johansson [https://twitter.com/uxwendy] reminded me of this a couple of weeks ago during a fireside chat from ADPList [https://adplist.org/]: It's just work. We could be the best designers in the world, but if you don't take care of yourself first you're not going to be capable of performing at your best. That's why I've learned to appreciate a good coffee with friends on a weekend, getaway vacations to disconnect, and even naps to recharge. Don't wait until it's too late, take care of your wellbeing every single day. -------------------------------------------------------------------------------- I hope these principles can help you with your own journey, I know that I'll remind myself of them and keep them at hand to guide me for many years to come.

Blog post cover

Tuesday, June 8th, 2021

How Being a Musician Made Me a Better Product Designer

I still remember vividly how my first music class started: I was a 15-year-old girl whose sole experience until that moment constituted a couple of informal classes taught by a friend. With that meager background, I stepped into a room with guys taller and older than I was who had already been doing this for a long time. It felt like I didn't belong. After that day my fingers suffered countless times, and I ran into investments of all kinds I didn't know I had to make—but the results were worth it, and I discovered a new language that would forever change my life. Little did I know that it would impact my career many years down the road. It took years of my career and an introspective moment to realize that being a musician in the first place taught me how to be a better Product Designer. I realize now that these two passions are connected in more ways than I thought possible. Still with me? Let's make these worlds collide. -------------------------------------------------------------------------------- A Team Is Like a Band Have you met show-off musicians? I certainly have, and during the first steps I took as a guitar player, it seemed to me that showing off was the only way for me to succeed . . . even though this was an attitude I didn't agree with at all. In my first couple of classes, it was common to see people showing off their skills, but since I didn't have any musical skills to brag about, I sat down and listened, trying to learn from everyone in that room. Many classes and months later, I briefly joined a band, and that's when it started to click for me: in order for us to sound good as a band, I needed to listen to my bandmates and integrate my sound with theirs. Instead of trying to stand out, we had to be attentive to the key, our tempo and everything that was happening around us. Sound familiar? Years later I joined a development team for the very first time, and it seemed oddly familiar to me: everyone had different skills, and some of them enjoyed showing off. But at the end of the day, in order to deliver, we had to work together as a team. Guess why? Because we needed each other to complement our own skills. From time to time I could have the spotlight with my designs, and it felt nice—similar to a solo—but at the end of the day, I had to learn to speak the language of my teammates to properly collaborate and become a high-performance team. For the design and development teamwork in particular, I always like to reference what Dan Mall and Brad Frost call "The Hot Potato Process [https://danmall.me/articles/hot-potato-process/]", to achieve a quick and iterative agile collaboration. Like any amazing band you enjoy, there's no room for egos if you want to succeed. Welcome Feedback For two years, Saturday morning was a highlight of my week because I was constantly learning a lot, and the key ingredient to all this learning was feedback. Every new scale, every new technique and every new song required feedback from my teacher and my classmates to improve my skills. Otherwise, I would get a bad grade during my next evaluation, but most importantly, I wouldn't grow . . . at least not at the pace I was aiming for. When I started design classes at the university, I didn't know my work would be critiqued every week. It was uncomfortable at first to hear my classmates (with little to no design experience) voice their opinions on my designs. But I had to accept that dreaded moment and hope that whoever critiqued my work wouldn't be rude. As soon as I realized that my peers could help me identify areas of opportunity, I embraced it and requested objective feedback to keep learning. This translated almost to a tee in my career. As a Product Designer, I receive design critiques, I often request a second pair of eyes to solve a tough problem and I participate in design reviews with clients and stakeholders. Your work will and should receive feedback to prevent tunnel vision. As long as you understand that feedback isn't personal and constructive criticism is valuable for the product, you'll grow and help others grow too. Feedback in itself requires effective communication, which is something that has already been explored by several authors specifically for design: * Giving better design feedback [https://uxdesign.cc/giving-better-design-feedback-29110679eb9e] * Managing your design feedback [https://uxdesign.cc/managing-your-design-feedback-fa9f731da410] * Useful feedback: a lesson in communication [https://uxdesign.cc/useful-feedback-a-lesson-in-communication-7946784ccb1d] * When to give strategic vs. prescriptive design feedback [https://uxdesign.cc/when-to-give-strategic-vs-prescriptive-design-feedback-96a82b8a2c37] * The best tips for giving formal feedback [https://www.invisionapp.com/inside-design/formal-feedback-tips/] > Average players want to be left alone. Good players want to be coached. Great players want to be told the truth. -—Doc Rivers Practice, Practice, Practice There's no shortcut when it comes to design or music: you have to practice what you have learned to polish your skills. Many would argue that some people are born with talent. I've received that comment countless times referring to my illustrations, but I always emphasize that what they are seeing now is the result of years of practice and anyone could learn to do it. Most of the time I get a laugh followed by a "that's impossible, my drawing skills are as good as a five-year-old’s." But if I showed you what my initial drawings looked like, you wouldn't be laughing . . . at least, not at yourself. I wasn't joking about the power of practice: This is 8 years of level up, from 2012 to 2020Practice in music looks like endless nights of repetitive exercises, developing muscle memory and calluses on your fingers. It would be easy to just give up at the first sign of getting tired or not being able to play the song you're dying to learn. If music were easy to master, then anyone could be a musician, and the same principle applies to Product Design. Whenever someone asks me how to get started on design, regardless of the field, I'm honest with them: I tell them upfront that it may take years before they're truly proud of their work. But I always follow up with the encouragement that by practicing as often as possible, they'll get to the results they expect sooner. With that being said, it’s not only the act of practicing that matters but being intentional about the what and the why of your practice. When we're just starting, we may be so excited that we end up practicing and learning every bit of information that crosses our path. But as we get better at multiple aspects of our craft, it’s recommended to start focusing on the disciplines we enjoy the most, which helps us to become a well-rounded, T-shaped designer. Learning to Play by Ear If you have practiced music in the past, you'll sympathize with me that learning to play by ear is anything but easy—especially when everyone around you seems to do it flawlessly, and you feel like you need to level up your game. When I was just getting started, I dreaded the moments during class when I had to identify the bass inside the songs because I simply couldn't find it. Finding Waldo seemed like a piece of cake compared to that. It took me a while to learn that I had to focus and mentally "separate" the instruments in the songs to find the elusive sound of bass, but I finally did. Separating the sounds of each instrument helped me to overcome the challenge of taking full songs for which there wasn't any sheet music on the internet (now, I bet there is) and learning to play them completely by ear. Having a problem-solving mindset is not that different. At the beginning of our careers, we rush to provide a solution right after the client has spoken during a kick-off meeting. We take each new piece of information as a clear path to producing a solution as soon as possible, sometimes even during the meeting itself. Been there, done that. But what if we switch our approach, and instead of rushing to find the solution, we focus on listening carefully to ask the right questions? Methods like asking the four Ws [https://designsprint.newhaircut.com/problem-framing-part-2-of-3-681616fcdfee] and the five whys [https://www.mindtools.com/pages/article/newTMC_5W.htm] help us frame the real problem before jumping to conclusions that more often than not won't be informed enough.Take inspiration from the Double Diamond [https://medium.com/digital-experience-design/how-to-apply-a-design-thinking-hcd-ux-or-any-creative-process-from-scratch-b8786efbf812] method: aim to design the right thing first and then design the thing right. Otherwise, we could end up wasting time and effort on making the elevator faster instead of making the wait feel shorter. > If I had only one hour to save the world, I would spend fifty-five minutes defining the problem, and only five minutes finding the solution. -- Albert Einstein Embrace the Uncertainty and Learn to Improvise If there was one thing that made me even more nervous than identifying the bass, it was improvisation. How is one ever prepared to hear the unknown spontaneous sounds of the band, find the perfect timing and play something that has never been heard before but by some miracle is perfect for the unwritten song? I didn't exactly take a class on improv, and every time someone on the stage improvised, it seemed as if they had it all figured out. But what if I told you that's not the case—that they have no idea at the beginning of the song when they will take the spotlight and what the solo is going to sound like? Let's switch to Product Design, and I'll share my own experience with uncertainty. It is a truth universally acknowledged that every new project will be different from any other you have done in the past—not only the project but also the client, the team and the solution. There's no one-size-fits-all, and the only way for you to succeed in such ambiguity is to improvise, adapt and overcome. Regardless of the lack of predictability, these are three guidelines I have used in the past that can help you navigate unknown waters: 1. Use past experiences to inform your decisions about methods, processes and solutions, making each new project with shared circumstances easier to solve than the previous one. 2. Develop your creative intuition every day with references from real products, using them as inspiration the next time you need them, even if the industry or the platform is different from the one you're working with. 3. Leveraging Vlad Georgescu [https://twitter.com/vladgeorgescu]'s words, “Perfect is the enemy of something that actually ships,” don't be afraid of testing something that isn't perfect. Everything that you put in front of the users will provide you with valuable feedback to iterate and improve. To dive a little bit further into the topic of ambiguity, Julie Zhuo recently shared a fantastic Twitter thread with practical steps to deal with uncertainty in Product Design. Her advice can help you to be intentional without getting overwhelmed. https://twitter.com/joulee/status/1390160651599843344 -------------------------------------------------------------------------------- Despite all the difficulties of the journey, a couple of years after I started learning music, all my efforts paid off, and I was able to improvise with my Strat on stage. It required the conjunction of longs periods of practice, a high amount of feedback, learning to play by ear, letting go of my fear of improvisation and most definitely blending the sound of my guitar with the rest of the band. Music is a unique experience hard to put into words. It changed my life forever. Getting lost inside of many songs made me see everything in a new way. When I played a solo, I was never sure where it would lead me, but the end now reminds me of how it would feel during the release of the many products I've worked with: triumph. And I wouldn't be doing the title justice if I didn't share one of my favorite movie scenes ever—one that perfectly describes the way I feel when I'm trying to solve a design problem way before it appears on a digital screen. Let's enjoy the uniqueness of the challenges ahead of us because the outcome will certainly be better than what we expect. https://www.youtube.com/watch?v=sduYNx92_go

Blog post cover

Friday, May 7th, 2021

Solutionizing - A solution looking for a problem

In building Damn Good Digital Products [/3-keys-to-building-damn-good-digital-products/] (DGDPs) for a living 😜 I come across a lot of innovative ideas by young entrepreneurs wanting to change the world. Some are viable, some not so much. I think the question of our day (in software at least) should not be “Can it be built?” but rather “Should it be built?” I was recently pitched an app idea by a non-technical founder. In his mind, the app would solve a painful problem for bikers--passing others. His idea in a nutshell (details modified to protect the original idea)--a Bluetooth enabled app that bikers could install that would alert a rider if another rider wanted to pass. A dozen red flags came to mind immediately as I heard this pitch: * Mass adoption required. Every rider must have the application. On multi use trails this will require every hiker, dirt biker, mountain biker and equine rider to have the application. If <100% of people on the shared trail are not actively using the application, a false sense of security could lead to terrible accidents. * Geolocation limitations. How accurate and responsive can gps and bluetooth be? How does it know the users are approaching? Ever had an annoying problem making bluetooth connections? Me too, sometimes it's frustratingly janky. Is the other party a companion or a stranger in danger. * Liability. It will be difficult to charge a high price for an application that requires near universal adoption. And at the same time, if the application fails to prevent an accident the injured party may seek to be compensated. The business will be buried in lawsuits. Why was the founder so passionate about his app idea? Because he had a classic case of “Falling in love with the solution, not the problem”. From my experience, this is the number one reason that tech startups fail. An inability to find product/market fit paired with a fixation on a particular solution or technology. > You’ve got to start with the customer experience and work backwards to the technology. You can’t start with the technology and try to figure out where you’re going to sell it. -Steve Jobs Fall in love with the problem and solutions will come. Free yourself to be creative and innovative in finding the right solution, which might not necessarily be the sexiest but will ultimately be the best for your customers.

Blog post cover

Wednesday, February 24th, 2021

Discussing Helmer’s 7 Powers

Laura Escobar and David Haynes are colleagues at Ravn who enjoy reading nonfiction and posting book suggestions on our internal Slack channels. The two recently discovered Hamilton Helmer’s book 7 Powers: The Foundations of Business Strategy. Although 7 Powers received little recognition when it was first published, many in the business world now herald it as a hidden gem. With numerous favorable reviews and 4.6 stars on Amazon, Helmer’s unique business guide earned a spot on Ravn’s bookshelf, and Laura and David were eager to pick it up. As it turned out, our resident bookworms enjoyed the venture. They found 7 Powers to be a compass to understanding the practical strategies of power that enable a business to unlock differential returns. We asked them to share a conversation about what they learned on the Ravn blog. For context, Laura leads the UX/UI design team, and David is a partner at the firm. What follows is a summary of their conversations about the book and its use within the domain of digital product design. Laura: David, let’s start with a question I enjoy asking colleagues. How would you explain this book to a five-year-old? —David chuckles— David: That's a very good question. Perhaps an analogy about people will work for our fictitious preschooler. Companies are like people: each is unique. And, like it is with people, some differences are important. The writer of the book shares 7 powers (like super powers) that help companies to be strong and live long lives. He wants companies to learn and use these powers so they can stand out against other companies. Laura: You know what I'm glad about? I’m glad you finished the book first and mentioned that the math equation parts of the book are not vital to understanding the framework. Although I did enjoy math during elementary school, I find it unnecessary when you're just getting started on business strategy. I think the equations may scare off readers who are not so patient when entering unfamiliar territory. David: The math sections felt like an addenda to elevate the gravitas of the author’s thoughts. I like quantitative analysis, but these sections served little purpose. I am glad you skipped them. So, Laura, what was the most meaningful part of the book for you? Laura: By far the revelation of how power is achieved: the dynamics of power. I often hear comparisons like “X company is better than the others,” but what I truly want to know is how to become company X, and then guide business projects to success. David: True, the book promises that a business with 7 easy-to-understand characteristics will be strong and lasting. This is exciting because it seems achievable. I thought it was an excellent summary of how to evaluate a business strategy and improve it. The author makes strategy formulation accessible and systematic. It is a perfect primer. Laura: What made 7 Powers stand out for you? David: The book is relatively short (about 200 pages), offers credible and relevant examples and is understandable by a layperson. And, perhaps best of all, it does not use unnecessary jargon. Armed with the knowledge and insights from 7 Powers, Laura, what would you do differently in your work at Ravn? Laura: I'm a product designer, and my clients are usually trying to build software applications to advance strategic initiatives. These initiatives are part of larger business strategies. With this wonderful introduction to business strategy, I'll definitely be more attentive to the stage of the business I’m working with and how the software they’re trying to build fits into the big picture. At Ravn, we often work with young companies. At its early stages, a company is fast-paced but vulnerable in many ways. You could say it is on a power prologue, and so every decision it makes should be intentional towards the goal of achieving power. 7 Powers provides a solid foundation to ensure the company is constantly moving toward the desired destination. Every case is unique, and strategies should be addressed properly for each client, but businesses must also be going somewhere—dare I say it—powerful. You mentioned something about this book being a good introduction to strategy, David. Can you recall a time before you read the book when you used the principles shared by Helmer? David: Absolutely. I have used many 7 Powers concepts prior to reading the book. I believe it was Isaac Newton that said if he had seen further, it was by standing on the shoulders of giants. Helmer also stands on some powerful shoulders, like those of Michael Porter, Peter Drucker and Clayton Christensen. I have profited from the work of these authors for decades. I see 7 Powers as a work of synthesis, organization and communication more than a product of ideation. Almost all of the concepts presented in the text have been well-discussed by business academicians. The book’s most prominent characteristic is its ability to communicate semi-complicated concepts with brevity and clarity. In this respect, it is an excellent and highly recommended text. Laura: Did you see any weaknesses in the content? David: I take issue with Helmer’s view that operational excellence is not a power. The reason he offers is that operational excellence is easy to copy. My experience would strongly suggest that operational excellence is, in fact, very hard to reproduce. The vast majority of commercial exchanges have discontinuities and suboptimal processes. Many firms have successfully used quality as a distinctive advantage. I believe operational excellence is very powerful, and Helmer’s arguments to the contrary are not persuasive. Further, although he emphatically states that operational excellence is not a power, his process power approximates the value of operational excellence. I wonder if perhaps the book should be retitled 7+ Powers. I also felt the seven powers (scale economies, network economies, counter positioning, switching costs, branding, cornered resource and process power) came up a little short because too many powers were offered as if your company were alone on an island. This seems like a weakness in Helmer’s framework. Every strategic decision should be made in relation to other companies or the competitive landscape. For instance, Michael Porter’s classic, Competitive Strategy, is hyper-aware of the interdependence of companies, regulation, suppliers and customers. Laura: I see where you’re coming from. Although counter positioning considers the competitive environment, I think it’s the only one of Helmer’s powers that is dependent on the actions of other companies.  Hmm . . . this is a bit of a problem, isn’t it? With that being said, I thought counter positioning was complex and fascinating. With counter positioning, a business can adopt a model that its direct competitors will find difficult to imitate—an attempt to do so would contradict their own singular positions. Netflix versus Blockbuster is a wonderful example offered in the book. Blockbuster could not follow Netflix into streaming for fear that it would subvert its own business. It was quite the conundrum. In chess, there is a word—zugzwang—that describes when no possible move increases the strength of your position. Blockbuster couldn't do anything to counterattack Netflix that wouldn't reduce their own established power in the short term. It was by all means a brilliant play. David: All things considered, do you recommend the book? Laura: Without a doubt—especially to UX designers looking to dive deep into the business side of product design. It wasn't long ago when I realized that in order to share how design creates a tangible impact on the bottom line, I must learn how to speak the language of stakeholders and business partners. Most designers might see their work as a nice addition to the branding identity and service they provide customers, but its true potential, though often overlooked, is so powerful. True human-centered design isn't only about a desirable product: it should also take into account technical feasibility and viability from a business perspective. By identifying not only these fundamental power types but also how and when they can create a competitive advantage, product designers become more valuable allies in developing new business opportunities. 7 Powers definitely broadened my perspective on software application design. David: It is a profitable investment in time. Highly recommended.

Partnerships