Lean manufacturing in software product development - podcast episode cover

Lean manufacturing in software product development

Feb 25, 202248 minEp. 36
--:--
--:--
Download Metacast podcast app
Listen to this episode in Metacast mobile app
Don't just listen to podcasts. Learn from them with transcripts, summaries, and chapters for every episode. Skim, search, and bookmark insights. Learn more

Episode description

Rafał invited Radek (CTO) to talk about his work and how our team implements Kaizen improvements to maintain ability to ship updates to users every week.

⭐️  Key things you will learn from this episode:

  • Why Radek's work is focused on performance?
  • How lean manufacturing can be implemented in software development?
  • How spending less time on building features allows us to ship more features?
  • What is Horizon Expanding Month?
  • What is Radek's favorite feature in Nozbe?

🔗 Show notes

🟣 Find Us

💜 Review Us

If you love this show, please leave us a review on Apple Podcasts or wherever you listen to podcasts.


Transcript

Welcome to NoOffice, a podcast about work, technology and life from a remote company perspective. In Nozbe, we believe that work is not a place to go, it is a thing that you do. That is why, since 2007, we run our company 100% remotely. In Nozbe, there is NoOffice. The NoOffice podcast is sponsored by Nozbe teams, a to-do app that helps modern teams do great things. Go to Nozbe.com to learn more. Hello and welcome to NoOffice, a podcast about work technology and life from a remote company

perspective. My name is Rafal Sobolewski and today Michael is on vacation so I managed to invite to this episode our CTO Radek Pietruszewski. Hello Radek, how are you? Hey, I'm doing pretty well. Thanks for inviting me. Thanks for accepting invitation. You might know Radek from the podcast FM, our former podcast that he ran with Michael for five years I guess. Yes, 2015 to 2020. It's It's never been officially canceled. It's just on an unusually long hold.

- Yeah, and I know there are many listeners that asked for more episodes of the podcast, but that's what I managed to negotiate with Radek to invite him today for No Office podcast. So Radek, how many donuts have you eaten already? - Well, I've had one. There's one more waiting for me, and I don't know why, there's just two. So there will be more coming, but I'll have to leave the house for that.

- Yeah, I also had one and I have three more waiting for me because today is our special day in Poland. It's called Fat Thursday and we eat donuts that day. And our donuts are much better than American one, I think, because we don't have a hole inside. - Yeah, I never really understood the hole. Like, why do you take something that's perfect and then make a hole through which everything just oozes out? It's just so impractical. Don't do that. Don't make the hole, just don't make the hole.

- Don't make the hole, yeah. So today I wanted to talk with you about Kaizen stuff, about constant improvements, et cetera, because you are the guy that take care that we have the constant appetite, constant effort to do it regularly. And we have many benefits from this, but let's start that. How would you describe your role in our team today in 2022? Because it's all this years we are working together. It evolved to many different paths. And how is that today?

- Yeah, so I've had many different jobs over the years. They just happen to be, to have the paycheck coming from the same person. Right now, I'm the person responsible for all things technology in the new Nozbe app, except for the server stuff. I don't touch the server stuff, but the iOS app, the Android app, the web app, the Mac app, beta, and the Windows app coming soon. That's all under my jurisdiction. And essentially my role is to make life easier for the rest of the team building the app.

So I make the infrastructure, so the tooling, I prove out technologies that we use, set up guidelines, try out new things, make prototypes. I built a couple of open source frameworks that well, we use to build Nozbe and make it available on all the platforms and be fast and whatnot. I work on sync and I say from that, I do Kaizen, which we'll talk about and I do performance. So I'm working on making the app fast.

- Yeah, so essentially I think of myself as the person sort of on the side, helping out others actually build the features that people use. So most of my work is not visible directly for the users, but it underpins the work of, the great work of others. - Yeah, like I think I would describe to her that you make sure that others in the team can build feature fast and without any issues. So that's, you're kind of a catalyst or facilitator. Okay. - Yeah, maybe not just don't use the word catalyst.

That's just- - Catalyst, you don't know. (laughs) - No, no, no, catalyst. - You don't have positive connotation with that word? - Exactly. - Okay, so you said performance. So let's deep dive into performance aspect of your work. So because you are obsessed with the performance of our app, of our sync, of the start time of the app. And every couple of weeks I see in our Nozbeep that you announced that, "Oh, here's another batch of performance improvements.

Now the app should start faster, the sync is faster, the first login is faster, et cetera." But besides of the app, what else? Because like performance of app itself, it's not only performance, you are optimizing. So making software fast is a slow process, slow and tedious and frustrating, which is funny. But the thing is, there's a couple of constants in software development. One of them is that software tends to get slow over time.

It tends to get bloated as features are added, as years pass by, there's just more and more junk. And also from kind of the internal perspective, the quality of the code base, like the stuff that people work with, just tends to deteriorate, which makes it harder and harder to work on the app, to improve it, to make it faster. It's sort of entropy, you know, it's kind of law of the universe. It happens over time and you have to actively fight against it. - It's the same thing as spaghetti code?

- Well, if you don't do anything about it and let entropy do its thing, then eventually you end up with something that people would call spaghetti code, which is like all things tangled together, like impossible to disentangle and change into anything else. So this is sort of something that happens naturally. And the thing is it happens slowly, it happens over time.

And it's very difficult in companies and in teams to assign time and effort and money into making that better, into making the app a little bit faster, making the code base a little bit less bloated, you know, cleaning things up, removing features. Like no one wants to do that because it doesn't bring immediate obvious effect and it takes a lot of time. But what happens if you don't do it is that eventually, couple of years in, you sort of have to declare bankruptcy.

Like it's just very difficult to do something with it if you don't work on it constantly over time. So those are things that I spend a lot of my time working on because those are hard to appreciate at first, but it is a feature over time. It doesn't sell to say, hey, the app is not slow, it's pretty fast actually. Like it just doesn't sell the app. But over time, if you don't do anything and the app just grows slower and slower and slower, people don't wanna use it. Customers are unhappy.

You know, there's some other app with teams in the name that people seem to be really not like because it's floated and slow and so many examples. - Yeah, and adding new features and fixes are much harder to add because like, when code is bloated and when you add a new feature, you produce five other bugs in different areas of the app.

- Yeah, so as for performance, I just think of speed of the app as a feature and not very well appreciated one, but one that needs to be worked on to just fight the nature. - Yeah, but still you managed sometimes to by doing a performance work, you deep dive into the code to the like lower layers of the code. I bet you sometimes see some low hanging fruits that some features you can implement or improve.

Like for example, you implemented bulk edit mode very quickly, but we thought that would be, to take much more time to implement. The SMCU improved a lot our jump to. It's much, much performant. And on top of that, you add some features to that. - Yeah, I rarely work on like features like user visible things in the app anymore. And when I do, it's usually out of frustration. Like I hate this, why doesn't it work the way I want it to work? And so I just fix it for myself.

That's what happened with jump to and with bulk edit. What's also important to appreciate is that these things, they are hard initially and then they become doable.

So we'll talk about Kaizen in more depth, but essentially as you unload the app, as you work on it, as you look at all the nooks and crannies of the code base, you see certain problems, things that could be simplified, improved, things that are duplicated and there's like three different modules of ways of doing something like why did that happen why can't we have just one and and you start just entangling it you know pulling by by the the yarn and at first

you don't see any result you're just making yourself feel better that that you've improved something but you can't see the result but but as you pull on these threads and and improve things then suddenly something that was just so tangled up with many problems and hard to change and improve, suddenly

becomes easy. So you know with Bulk Edit, you know this is like the Nozbe app, it's a list of tasks that like it's a big complicated chunk of infrastructure you know the the list of tasks you know much more complicated than it looks and so as we add new feature there's bloat and then as you unbloat it like Like suddenly, hey, you know, adding bulk edit. That's not so hard anymore. - Actually that's your work. Like I can now really appreciate because like last year we shipped 46 updates to Nozbe.

Then it was Nozbe teams now it's new Nozbe. And that's pretty amazing comparing to all of these years we were developing Nozbe personal even. Like we were shipping, I don't know, like one update per two months in Nozbe personal in our high peak times. - Yeah, this is a completely different, it's a huge change in mindset and it's a big change in tooling and infrastructure.

So in the old days and what we did before was kind of the old days mentality was that every release is polished, every release is like it's something you start at features that you decide you need to add and then you polish it, bug fix, test and then you release it. And it's a marketing release. And these days, like the app has to be stable and polished at all times. And we do things and we add things and most of them are invisible for, you know, weeks or months, but every release is stable.

And none of the releases are marketing releases. We just add things all the time. We ship every week, no matter what, unless something is like really blowing up. And then when we're ready to actually show something to the users that we know when that feature is ready, not the release, the feature is ready, then we flip the switch, enable it, people see it. Hopefully customers are happy, but it happens when we're ready. Not because, hey, this is a 3.2.1.2137 release. No, no one cares.

You just want to use the app and get your stuff done, get your life organized, make your team more productive. Like you don't care about marketing releases. So, and this way, you know, when you have all the tooling automated, when you dog food the app all the time, it's always constantly being tested by machines and by us. Then, you know, there's no reason not to release. And so, yes, there's a slightly higher chance that we release some bug, you know, this week, because we shit this week.

But the upside is that if we mess something up, people see much earlier, much more quickly. Like every release is a smaller chunk of changes. So whatever happens is just a small chunk of change. And we don't change the fundamental things every week, but we add some new feature, not yet fully our full idea for this feature, but it already works. people use it, give us feedback, we improve it. Next week it's already a bit better.

- Plus we don't worry about even shipping bugs because when we ship some bugs and they are not critical, we know we will have LEDs next week. So we can fix that very, very quickly. And we are almost releasing that in this process for almost two years now. And I think we only had to do like hotfix LEDs in the same week like one or two times. So I think that's pretty good, good result. - Yeah, this is software, this is computers. It's not perfect, it's never perfect.

It has bugs unfortunately, and we can't avoid it. We do our best, but we can't avoid it. But it's sometimes better to ship just, you know, small, not that important bugs every week than, you know, a huge chunk of like new features and improvements and oh, it turns out, you know, it's just completely broken for people and customers not happy. - All right, so let's go to Kaizen.

Every Monday, you and one front-end developer that is currently on hand, which is Horizon Expanding Month, we will talk about it later, you have a Kaizen event. It's some kind of per-programming, or what's that about? - No, it's not per-programming. So Kaizen, this is an inspiration, one of many inspirations that I've introduced to Nozbe from lean manufacturing.

It's kind of this philosophy that's been taking hold in manufacturing world, starting with Toyota and Japanese companies thinking about a better way of running companies in manufacturing. And some of these lessons are applicable. So one of these ideas is Kaizen. Kaizen means continuous improvement. And the idea here is that you don't, It's actually kind of similar to us shipping every week.

You don't make these huge projects to, I don't know, introduce a new production technology or whatever, or just ignore things and just let things run and yeah, there's some problems, but whatever. No, you have to continuously improve to stay at the cutting edge to be the best company, the best technology company you can be. have to be on the cutting edge.

And so you have to constantly look for problems and not quality problems, like problems that customers are gonna see, but improvements to the process, the process of manufacturing, in our case, manufacturing code. And so every week we meet up, we have our list of ideas of things we can improve in the code base. And it's a little hard to explain to non-programmers, but we just notice things that are kinda hard to do, take a little bit more time than they should or things that we do all the time.

So in the app, we have a lot of menus. We have a lot of, I don't know, text inputs. There's certain elements that repeat over and over and over and over again. So we want to make them easier, like easier to use, faster to apply, to build a new feature using some sort of element. there's "poka-yoke". "Poka-yoke" means "full-proofing". So we notice where we make mistakes and try to find a pattern in those mistakes. And then we full-proof it. So we add a "poka-yoke"

to make doing the wrong thing more difficult. So for example, the app is translated into, I don't know, six, seven, eight languages. Whenever in the app there's some text that's we refer to this text by its identifier. And it happened in the past that someone made a typo in that identifier or the name of that, the key of that text has changed.

And then we shipped the app with, instead of, I don't know, it's saying single tasks translated into German, it would say, I don't know, underscore single underscore tasks, string, whatever. So, hey, we can change that. So we added a little bit of technology magic so that when you enter the wrong key, it just highlights in the editor as read like, "Hey, this key does not exist." This is just one example of thousands.

Literally every week we notice something else that we could make a little bit easier to do, a little bit faster to do, a little bit harder to mess up, or something that, hey, there's some duplication, duplication, hey there's some old stuff that we need to clean up, some stuff like internal stuff to remove, stuff like that. By doing this continuous improvement, you know, every week the end result, like the user does not see it and we notice it only a little bit.

But like imagine you improve your productivity as a team member by, I don't know, 1% every week. That's actually, when you think about it, 1% a week, turns out to be pretty outrageous. So it's probably less than that, but 1% a week. Now, you know, take 1.01 and raise it to the 52 power. So 52 weeks in a year, and it turns out that your proactivity has skyrocketed, right? - Yeah, and multiplied by our team members, because the most improvements you made are applicable for everyone in a team.

like at least for developers. - Yeah, so by making small changes, but continuously noticing problems and fixing them, thinking about how we can make this better instead of pretending that they don't exist, like, eh, it's not a big deal. Every week, over and over and over again, you just make the productivity of our team, the quality of the work that we produce for the customers better and better. And it's a tiny bit every week.

And yeah, by changing things, sometimes we break things, a little bit, but it's so much worth it. And I think you can see it, you know, being internally but not a developer, how we just, you know with the same number of people, we just become faster and faster and faster, you know, pushing out new features you know, faster and better and with higher quality from the start.

- Yeah, like, as I said, we shipped 46 updates last year and I'm still surprised how fast we can develop some base for the feature that actually already adds value and we use it and oftentimes we decide to ship it in that form. It's often like one week appetite time for a developer to develop it. And thanks to those constant improvements to those guys and events, yeah, we maintain our speed, our performance of developing the features. - Yeah, exactly.

- All right, let's take a break here and thank our sponsors this week, which is of course us. Yes, Nozbe. Nozbe is task-based asynchronous communication app for personal, family and business use. So let's hear what our customers actually say about the product. - When we've been around for about 10 years, our business has, and we've been using Nozbe for about eight of those years. And as we grew, we kind of got to the point I just couldn't remember everything anymore. I'm pretty organized.

I would just kind of keep everything in my head and with post-it notes and things like that. And it just got to be too much. And so I started looking around for some sort of project management software that could help me have a set up really trusted system. But really I just wanted a system where I could know that I had everything in there. I wasn't gonna forget anything. I wasn't gonna drop any balls for clients or missed deadlines - All right, and we are back.

let's go back to talk about Kaizen improvements. You spoke about like dev tools, the tools we developers using for producing a code, for writing a code. I also remember that recently we improved a lot our build server. - Yes, so this is one of the myriad of little technology pieces that are not user visible technologies, customer visible technologies, but-- Actually, I can make it visible as a podcast chapter art and display it on the video version. Yeah. Wow, that's ugly. I'm ashamed of myself.

Well, it's not a UI that customers see. True. Anyway, long story short, we build a lot of code. We have a small but very active team. And after every change, which we will make a lot, you want to run automatic tests on the code base and make builds. So with tests, there's like five different tools that we run on the entire code base to check for any errors that can be caught automatically without human interaction.

And for builds, we have the web app, the Mac app, the Windows app, coming soon, the Android app and the iOS app. That's five apps. And it takes a lot of time to build. Actually not that much time because one of the Kaizen events actions and my own time was spent on just making these automatic tools and the builds faster and faster and faster. And then we have Apple come out with new computers which are faster and faster and faster.

So again, in the old days, you'd make a smaller number of larger changes, larger commits in the tech lingo just because what you have to do afterwards was just painful and slow. And the idea here is we want to be nimble and very, very fast and make lots of tiny changes, changes that are easy to review, to test, to just ship to the users. And so we need the process of automatic testing and build making to be very, very fast. So that's what CI/CD means, that's automatic testing and making builds.

And we have our own server for that because it turns out it's less painful and cheaper to just have your own computer do that. And because we make iOS apps, we need to make our builds on a Mac, which is not ideal, but you know, it is what it is. So we got the fastest Mac Mini money could buy and just put it on the shelf with a fastest SSD, stuck it in a server room. other friends at the Warsaw Hackerspace, hackerspace.pl. We have a nice server room, our server sits there.

And you know, every single time someone pushes a tiniest change to the code of the new Nozbe, within four minutes and 30 seconds, there's five apps to download and test and all the automatic checks are either passed or failed. - It's like every change on every branch or only those branches that have open PRs. - Have open PRs, yeah. - So, yeah, and I can see that's pretty fast and already today I think we have like, as I can see on what output of our build server, we already have three versions.

Well, someone build it on 2 a.m. today, tonight actually. - Yeah, occasionally someone does that, I don't know why. - Not me. - Yeah, obviously. Yeah, you respect your sleep. So that's CI, is there some errors, a bigger area that you constantly improve besides those dev tools and CI and code? - Yeah, I think we talked about the majority of what I've been working on over the past year or two. So it is the improvements of the code base and then performance.

and performance is, sometimes it's like stacking a bunch of five, 10% improvements, which is like, doesn't sound like much, but you have five or 10% improvements and then suddenly everything is so much faster. And sometimes, some new technology that we can easily use becomes available. So we recently shipped something that's called Hermes on our iOS app. And that made it three times faster to launch on iPhones and iPads, and twice as fast to like move between like views in the app.

And it was just a few days of work. Like it's just something that became available and I could use it and bam, three times faster, which is a gigantic difference. And it's so fast. It's so fast that iOS doesn't even finish animating and the app is already launched. And you know, all these iOS native apps, they're not even that fast.

- Yeah, and what was really nice and actually surprised for me, like it would be even more surprised for me like two years ago, but now after releasing app every week, I see that like we just, there's new piece of technology, like external framework or like this Hermes, we include it in our code base, yes? And nothing blew up. - Yeah, right. - Yeah, that was strange, yeah? It's just worked. - Yeah, part of that is external technology getting better and better.

Part of that is our tooling getting better and better. Part of that is just our skills getting improved. But yes, in this case, I made the changes. Kamil and me just tested it ourselves for a week, just used the app with this change. And then we all use it internally for a week and then we shipped it and nothing blew up. - I can imagine a customer right now, - I rise up is crashing because-- - Yeah, my favorite, yeah, that's true.

My favorite thing was that the only error that Kamil, our QA person found, was that his plan, his Nozbe personal team, was valid until the year 2100. And it didn't say 2100, but 2099. - Oh, no. (laughing) - Yeah, yeah, so we stole a one year of premium account from him. - Exactly, that was the one issue. - Yeah, that was, yeah, that's the critical issue. But we fixed that, right? - Yeah. - So let's talk HEM, because as I mentioned, every week you meet with the developer that is currently on HEM.

- Yeah, which is Horizon Expanding Month. - Yeah, what's that about? What is the purpose of this? because this is like we have three front-end developers, not counting you. - I'm a three and a half. We can say three and a half. - Three and a half, yeah. Okay, you can be a half of a front-end developer, yeah? - Yeah. - And two of them are assigned to projects within a cycle to implement features usually.

And one of them is always on the scam and like 50% internally, 50% of his time he's supposed to spend on expanding his area of responsibility within the app. And the rest like for on Kaizen events or implementing small improvements that actually can be done within one day or fixing like major bugs, support, reply to support tickets. - First of all, if I remember correctly, I came up with the Horizen Expanding Month name and it was supposed to be a joke.

It was supposed to be making fun of corporate newspeak, but it stuck by accident, but we just call it Hem. Like when you expand the, when you expand the Hem, it just, gross name. I don't like it. Anyway, yes, so the idea was that, you know, it's great and all to build features and ship them to our customers and customers are happy when you see new features. The problem is that features is all that customers see. Like it's what they say they want most of the time.

But the problem is that there's many different things around the process of building software that are not directly visible to our customers. But if you neglect them, things deteriorate over time. and we talked about this already. For example, we found it somehow somewhat difficult to plan bug fixing. So sometimes there's just bugs in the app and bugs can be a lot of things.

Sometimes they're like, some of them are minor, some of them are major, but even the minor bugs, if something is just misaligned and just looks ugly, but isn't there someplace deep down that almost no one ever sees, then that's one thing. And then you can call the bug "minor", but you see it every day and it's really annoying. So what that means is that over time, the list of bugs, the stuff we could possibly fix just grows very large, even though the app is mostly fine.

Like, yes, there's a couple of things to fix, but it's mostly fine. And yet there's a long list of bugs and you have to decide which of them to fix. It's often not easy before you start working on it to decide how easy it is to fix. Sometimes a major bug will take 15 minutes to fix once you get around to it. Sometimes a minor thing that you can just ignore and no one will notice would take hours or days of work.

And that's part of the reason why it's kind of difficult to assign developers to work on fixing bugs. So improving quality in that way, by removing errors, imperfections. It's just hard to schedule, it's hard to pick what to work on. So that's one of the reasons why we thought, okay, we need to do that. Like we need to spend some time working on that. It can't be the only thing because we could just be fixing and fixing and people wouldn't see that it's getting better.

So we need to be fixing things. Then there's technological aspects like the team members, they have to be growing, they have to be improving and learning new things. It can't be like it can't be me building all the infrastructure. Yeah, I'm in charge of all the infrastructure, but there are certain areas that while I have to delegate. So each team member has some extra responsibility that's like purely in terms of technology. But it takes time to learn and improve.

And the learning and improving and experimenting with things in that technological area, like it's not something you can easily schedule. You know, you can't say, oh, you work for two weeks on that to build X. Like it's kind of an open-ended endeavor, right? It takes time, you know that, but you can't, like with features say, we're gonna work on a week on that feature and whatever comes of it, we ship. Hence, HEM, right?

We rotate between the team members and so that everyone has time, like dedicated time to improve their skills in that area, experiment with new things, bug fixing, the person on ham plays a larger role doing code reviews. Everyone does code reviews, but the person on ham has slightly more time that can be easier to find to do reviews. And then Kaizen. Yeah, it's me, but there's not enough of me to do all of that. And also this is a thing about culture, right?

It's not just about spending time to continuously improve. It's people need months to start changing their mindsets and start noticing the things that can be improved instead of doing things the way we've been doing them for years. So it's important that these sort of extra responsibilities, that everyone does some of that. And the reason why it rotates is because it's kind of hard to be like, "Hey, you have an appetite of one week "to work on that feature."

But then also, "Hey, you can't be focused 100% "on that task, like that specific and time-bound task, "because also, you know, do the code reviews, "oh, check out this bug to fix, "and hey, are you coming to Kaizen today?" Right? - Yeah. - It's just hard to be, It's hard to simultaneously be in the mindset, in the mode of mind of focused task-based work. This is the task and this is the timeframe. And in the mindset of open-ended improvements and learning and exploration and stuff like that.

It's just two different types of work, types of mental activity. Hence, it is easier to rotate that between every team member, then have people split their days or their weeks between these responsibilities. - That's really healthy too, because we have three front-end developers, as I mentioned, and we work in five week cycles, so. - Three and a half. - So it's three and a half, yeah. We work in five week cycles, which is almost a month. So that's why it's horizontal expanding month.

So each developer has one ham per three months. Yeah. So that's, I think that's the healthy balance. And also you mentioned that takes months to change habits, to teach our developers better habits, to figure out places that can be improved. And I can see that in my work, like when I remember how we used to develop Nozbe Personal, I was so much needed to giving feedback to developers every day.

And now I'm just needed in the week when we plan the cycle actually, and a day after in the next week when we do kickoff meetings. And after that, developers are leaders of the project and they really make great decisions, not only like from the technical point of view, but they grow in sense of design decisions also. And I'm really glad how the whole process works. - I think I lied. I think it's like years, not months. I'm really proud of our team and how far we've come with this.

It is very easy to create in companies these bottlenecks, these decision bottlenecks, where people are just waiting on a designer or a manager to decide on something. And it doesn't just slow things down, but it just creates worse outcomes because you're a person doing the work. It might be development, but it can be any industry, right? Any job. You're doing the work. You're spending weeks just being immersed in it, understanding the problem, how to solve with possible approaches.

And then you're waiting for that one guy who spent hours and not weeks working on it. And they might not have the full picture. Yeah, they might be specialized in design or management. They know things, they're experienced in things you're not. That's true. But as the person doing the work, you tend to have the broadest picture of, hey, okay, I could do this and it would be a good result, but it will take me one week to get this done.

Or I could do this and it's almost as good, but I can get it done in an hour, right? And when you have these decision bottlenecks with these extra decision makers, it again slows things down and creates worse outcomes because it's hard to compress your weeks of experience working on something into something you can quickly express to a decision maker to approve or disapprove. But at the same time, just people are really not used to leading and making their own decisions in organization.

People are employed and they see, okay, I need to know my place. You know how companies, organizations, institutions are like, people are very territorial, people are in a hierarchy. So people are not used to leading, making decisions. they might have experiences that when they tried, didn't end up well for them.

So it really takes a lot of effort, not just empower people by saying, hey, you can do it and you should do it, and you're the best person to make that decision, but to actually convince someone and show them and give them the opportunity to have experience with making these decisions, to show them that, yeah, you can do it. So I feel like we've talked about like these sorts of ideas for years. And it took us years to somehow something changed and it kind of clicked.

And like we made some process changes, talked to people, explained it to them, explained it over and over and over again until they got it. And they just run with things. And I don't need to be bothered all the time. you don't need to be bothered all the time. Michael certainly doesn't need to be bothered all the time with just minutia of building a new feature. It's fine. The developer can get this done. - Exactly.

And even if they had initially when we started to encourage them to make their own decisions, even in short term, the first decisions weren't good, but it's a long-term investment. they learn how to make better decisions. And yesterday when we had a kickoff meetings about calendar improvements, we want to improve some of our calendar view in the app. And actually, yeah, the people want to have easier access to calendar. So the obvious thing is to add a possibility to have calendar in favorites.

But for some technical reasons, because task list is a very complicated form of living in the cold. Yeah. So it's not that easy. But actually, Miho, who is the leader of this project, just made an idea, "Okay, what if we do X? It will take 15 minutes, and it might have a high chance to actually do the job." And that is exactly what we want.

make good decisions, they are not afraid to experiment and see if even, okay, let's see if something that takes 15 minutes, one hour can do the job instead of doing something that can take one week, as you said. Yeah. You know, as I'm listening to ourselves talking about these different ideas, I think it's important to say that they're not exactly completely independent ideas. they form a coherent whole.

I hate to use this word because it's overused in the corporate newspeak, but it's a different paradigm of organizing our work. It's a different paradigm of building software. It's like with, I mentioned lean manufacturing, Toyota has been doing that for decades and they're doing fine and people are having a hard time copying them because you can take a la carte different ideas from it and they help, they're interesting, but when you have the whole, it really starts to make the most sense.

So here, notice how it plays together with us shipping every week. Like those are not two disparate ideas. They form a coherent idea of how you want to work. A developer makes their own decisions and we ship, we ship Chippo in small chunks. We don't design and build the best version of a feature that we can come up with because that takes a disproportionate amount of time.

So some decisions might not be the best at first, or like, we stumble, but okay, we've spent a week working on that feature and that's it for now and it's already better. And yeah, this decision, that was bad, we shouldn't have done it this way, but guess what, it's fine. It's not like someone made some decision And that got us into a six month project. And at the end of it, we ship.

Like, no, we've worked on something and sometimes it's great, sometimes it's fine, sometimes it's eh, but we ship every week and we'll get to it again. So this idea of, you know, him and developers being leaders of these feature projects that plays together with Kaizen, it plays together with us shipping every week. - Yeah, but the funny thing is that Kamil, our QA person, he was always like to test everything before shipping, et cetera.

And now he is the person responsible for driving our shipping process every week, actually. - Yeah. - Yeah, so. So he actually shipped 46 updates last year. All right, I think we can slowly wrap up this episode.

So Radek, tell me, because as we said, your role in our company in building current Nozbe, our main product right now, evolved through all of this years so you had a big impact on design, how Nozbe works, and now you have a huge impact on the whole technology stack and our dev tools and how the code base is organized, et cetera, et cetera. This Nozbe is really, you can say it's your child, but what's your favorite feature of Nozbe? - Well, you know, you're not supposed to have favorites.

(laughs) - I guess. - I don't think I have one favorite feature, but something that I really care about deeply is these little power user improvements. So not things that every customer is using, but something I'm using because I use the new Nozbe everyday for the last four years, right? Well, since its inception pretty much. And so I love the keyboard shortcuts and there's more keyboard shortcuts coming.

And then you jump to, which I think will ship next Monday or we've already shipped, I don't remember. - Yeah, it's already shipped actually. The one thing we didn't ship is highlighting. - Highlighting, okay. - Highlighting for search and fuzzy search. - So I recently made some improvements to the jump to feature, which makes it so fast and so fun to just go to different places in the app. I don't have to click around, look for tasks.

If I remember the name and I just hit Command + K and I type in like two or three or four characters, not just the full name, but a few characters that match that's called fuzzy search. And we have this highlighting that will ship, I think next Monday, that kind of shows why the search results show up. And it's very fast now. And so, within two seconds, I can go between tasks and projects and just places it in the app without moving my hands off of the keyboard. And it's glorious.

- Yeah, I really liked that too. and I started to using even more after your recent performance improvements. Yeah, I would say now it's my second favorite after incoming, because incoming is just a magic. I think that's it for this week. Tadek, tell me what day is tomorrow? - Tomorrow is a mighty Friday. - Exactly, mighty Friday. So make a, do your weekly review, plan priorities for next week, and to learn something new to have a great weekend.

We actually recently launched a new website about our Mighty Friday, so you can check it out on nosbe.com/friday. And if you enjoyed this episode, please feel free to help support this podcast, either by sharing it with a friend, leaving us a nice review in Apple Podcasts, or by just signing up for our Nozbe app. And that's it for today. Say goodbye, Radek. Bye! This episode has not been created in the office, because in Nozbe there is no office.

Your hosts were Laphroso Sowolewski and Ladosławie Trushevski. All the links and show notes you can find on no office.fm/36. The whole production process of this episode has been coordinated in a project in Nozbe app. Control is good, but trust and transparency are so much better. Thank you and see you in two weeks. Remember to have a mighty fly day! (upbeat music) (upbeat music) (upbeat music) (upbeat music)

Transcript source: Provided by creator in RSS feed: download file
For the best experience, listen in Metacast app for iOS or Android