https://www.bennadel.com/blog/4352-only-solve-one-new-problem-at-a-time.htm Skip to main content Ben Nadel . com Navigation * Home * Activity * Podcast * About Me * People * Contact Light UI Dark UI Ben Nadel at cf.Objective() 2010 (Minneapolis, MN) with: David Huselid and Alison Huselid Ben Nadel at cf.Objective() 2010 (Minneapolis, MN) with: David Huselid and Alison Huselid - Previous Photo Next Photo - Only Solve One New Problem At A Time By Ben Nadel on November 8, 2022 Tags: Life, Work A few months ago, CodePen co-founders Chris Coyier and Alex Vazquez spent an hour reflecting on the top 10 lessons they've learned over the last decade of work at CodePen. The entire episode is value-packed; but, the one lesson that has haunted me is 6: One thing at a time (jump to track). And, I just wanted to take a moment and amplify their message. The whole point of running a company is to solve problems. As Alex teases in the episode, if they weren't solving any problems, they'd be out of business. But, when it comes to solving problems, Alex stresses that only one new problem should be solved at a time. The example he gives in the episode is "learning Golang". Understanding how to use Golang was a new problem for the company. As such, in order to start integrating Golang into their work, they applied it in the context of an already-solved problem: sending emails. This way, Golang was the "one thing" they were solving--the email-sending logic already existed in Ruby; and, they just had to port it over to a new application server. This lesson hits me hard in the feels because when I reflect on my own work history, some of the biggest mistakes that I've made in my career revolve around trying to solve multiple problems at the same time. Perhaps one of the most embarrassing examples of this is when I attempting to learn OOP (Object Oriented Programming) on a new project. This was two problems: I had to build a new application; and, I tried to do it in a new programming paradigm. Needless to say, the project ended up coming in months late and was a horrible mess of hard-to-maintain code. Trying to solve two problems at the same time ended in disaster. If It Can't Be Done Incrementally, Don't Do It If I could be so bold as to add a corollary to the rule of "one new problem at a time", I'd suggest that if it can't be done incrementally, don't do it. Over the last 6-years, feature flags have revolutionized the way that I work. And, a majority-stake in that change is the fact that everything I do is now built and integrated incrementally. Until you've worked this way, it's hard to even articulate why this is so powerful. But, I literally can't imagine building anything of any significance without an incremental path forward. When you build and integrate code incrementally as a rule, you are forced to think about the work differently. You have to break it up into smaller problems. And, the order in which those problems are solved (and integrated) starts to matters. This, in turn, allows you - and your external stakeholders - to create a better sense of how long things will take, how often value will be added, how far the project is progressing, and how the path forward (and expectations regarding delivery) might need to be adjusted. This is another example of the power of constraints. When we apply constraints - either implicitly or artificially - to our work, we are forced to think more deeply and more creatively. And this ultimately leads to better outcomes. Enjoyed This Post? [?] Share the Love With Your Friends! [?] Tweet This Provocative thoughts by @BenNadel - Only Solve One New Problem At A Time https://www.bennadel.com/go/4352 You Might Also Enjoy Some of My Other Posts * Adam Lenda: Always Choose Consistently Bad Over Inconsistently Good * Lessons I Wish I Had Learned Much Earlier In My Web Development Career * Favor Readable Code Over Idiomatic Code Reader Comments [1] Chris G Nov 8, 2022 at 3:11 PM 159 Comments Well said. Focusing on one problem at a time also forces you to prioritize so that your time is well spent. | Reply to this Comment [1] Ben Nadel Nov 8, 2022 at 3:38 PM 15,314 Comments @Chris, Totally agreed - and it also means that you can much more easily switch focus briefly if you need to adjust your work. And, if you work incrementally, then the value that you've already built has already been delivered. | Reply to this Comment [1] Tyler H Nov 10, 2022 at 10:44 AM 1 Comments This is a rather simple but profound read! This week I have flown into HQ to start discussions with PM and Co. about a rewrite of a product that is 20+ years of unmaintained code, bad decisions built upon bad decisions as I call it, we have quite the task ahead of us. I think this is something I need to get the team to adopt as we begin building the new frameworks and foundation, as well as developing the requested features. Easier said than done tho. | Reply to this Comment [1] Ben Nadel Nov 10, 2022 at 10:46 AM 15,314 Comments @Tyler, If I can give you a warning, my company is in the 5th-year of a ground-up rewrite! I beg of you, do things incrementally!! But, in all seriousness, good luck to your team, I hope things go smoothly. | Reply to this Comment [1] Mike Nov 10, 2022 at 6:09 PM 3 Comments Congrats on making Hacker news! Was browsing through it and saw your domain. | Reply to this Comment [1] Ben Nadel Nov 10, 2022 at 6:09 PM 15,314 Comments @Mike, Thanks! Someone just showed me on Twitter - so random what gets traction. But, I'm happy someone found some value in this. | Reply to this Comment Post A Comment -- [?] I'd Love To Hear From You! [?] Oops! Name: [ ] Email: [ ] Website: [ ] Comment: NEW: Some basic markdown formatting is now supported: bold, italic, blockquotes, lists, fenced code-blocks. Read more about markdown syntax >> [ ] [?] Preview of Comment Markdown Comment Etiquette: Please do not post spam. Please keep the comments on-topic. Please do not post unrelated questions or large chunks of code. And, above all, please be nice to each other - we're trying to have a good conversation here. Submit Comment [*] Subscribe to comments. [?] [?] Thank You For Your Comment [?] [?] In order to keep this website fun, safe, and full of those sweet, sweet feelings, your comment has been submitted for approval. Black Lives Matter Ad for InVision App, online whiteboard and collaboration platform. Ben Nadel (c) 2022. All content is the property of Ben Nadel. For use of code see license. Back to Top Ben Nadel's avatar. About Ben Nadel I am the co-founder and a principal engineer at InVision App, Inc -- the world's leading online whiteboard and productivity platform powering the future of work. I also rock out in JavaScript and ColdFusion 24x7 and I dream about chained Promises resolving asynchronously. Social Links * GitHub * Twitter * LinkedIn * Facebook Site Links * Home * Activity * Podcast * Projects * About Me * Contact Me * People * InVision * RSS Feed