1
00:00:00,000 --> 00:00:07,120
Welcome to NoOffice, a podcast about work, technology and life from a remote company perspective.

2
00:00:07,120 --> 00:00:15,120
In Nozbe, we believe that work is not a place to go, it is a thing that you do. That is why,

3
00:00:15,120 --> 00:00:23,840
since 2007, we run our company 100% remotely. In Nozbe, there is NoOffice.

4
00:00:24,640 --> 00:00:31,680
The NoOffice podcast is sponsored by Nozbe teams, a to-do app that helps modern teams do great things.

5
00:00:31,680 --> 00:00:33,680
Go to Nozbe.com to learn more.

6
00:00:33,680 --> 00:00:50,640
Hello and welcome to NoOffice, a podcast about work technology and life from a remote company

7
00:00:50,640 --> 00:00:58,960
perspective. My name is Rafal Sobolewski and today Michael is on vacation so I managed to invite to

8
00:00:58,960 --> 00:01:05,600
this episode our CTO Radek Pietruszewski. Hello Radek, how are you? Hey, I'm doing pretty well.

9
00:01:05,600 --> 00:01:11,600
Thanks for inviting me. Thanks for accepting invitation. You might know Radek from the podcast

10
00:01:11,600 --> 00:01:20,240
FM, our former podcast that he ran with Michael for five years I guess. Yes, 2015 to 2020. It's

11
00:01:20,240 --> 00:01:21,840
It's never been officially canceled.

12
00:01:21,840 --> 00:01:24,680
It's just on an unusually long hold.

13
00:01:24,680 --> 00:01:26,800
- Yeah, and I know there are many listeners

14
00:01:26,800 --> 00:01:29,740
that asked for more episodes of the podcast,

15
00:01:29,740 --> 00:01:33,020
but that's what I managed to negotiate with Radek

16
00:01:33,020 --> 00:01:36,040
to invite him today for No Office podcast.

17
00:01:36,040 --> 00:01:39,080
So Radek, how many donuts have you eaten already?

18
00:01:39,080 --> 00:01:40,560
- Well, I've had one.

19
00:01:40,560 --> 00:01:41,860
There's one more waiting for me,

20
00:01:41,860 --> 00:01:44,680
and I don't know why, there's just two.

21
00:01:44,680 --> 00:01:47,500
So there will be more coming,

22
00:01:47,500 --> 00:01:49,200
but I'll have to leave the house for that.

23
00:01:49,200 --> 00:01:53,080
- Yeah, I also had one and I have three more waiting for me

24
00:01:53,080 --> 00:01:56,680
because today is our special day in Poland.

25
00:01:56,680 --> 00:02:00,680
It's called Fat Thursday and we eat donuts that day.

26
00:02:00,680 --> 00:02:04,800
And our donuts are much better than American one, I think,

27
00:02:04,800 --> 00:02:06,360
because we don't have a hole inside.

28
00:02:06,360 --> 00:02:08,840
- Yeah, I never really understood the hole.

29
00:02:08,840 --> 00:02:11,740
Like, why do you take something that's perfect

30
00:02:11,740 --> 00:02:15,600
and then make a hole through which everything just oozes out?

31
00:02:15,600 --> 00:02:16,880
It's just so impractical.

32
00:02:16,880 --> 00:02:17,880
Don't do that.

33
00:02:17,880 --> 00:02:20,280
Don't make the hole, just don't make the hole.

34
00:02:20,280 --> 00:02:21,380
- Don't make the hole, yeah.

35
00:02:21,380 --> 00:02:26,380
So today I wanted to talk with you about Kaizen stuff,

36
00:02:26,380 --> 00:02:30,780
about constant improvements, et cetera,

37
00:02:30,780 --> 00:02:34,280
because you are the guy that take care

38
00:02:34,280 --> 00:02:37,240
that we have the constant appetite,

39
00:02:37,240 --> 00:02:40,460
constant effort to do it regularly.

40
00:02:40,460 --> 00:02:43,740
And we have many benefits from this,

41
00:02:43,740 --> 00:02:45,020
but let's start that.

42
00:02:45,020 --> 00:02:50,020
How would you describe your role in our team today in 2022?

43
00:02:50,020 --> 00:02:54,060
Because it's all this years we are working together.

44
00:02:54,060 --> 00:02:56,900
It evolved to many different paths.

45
00:02:56,900 --> 00:02:58,540
And how is that today?

46
00:02:58,540 --> 00:03:01,460
- Yeah, so I've had many different jobs over the years.

47
00:03:01,460 --> 00:03:03,580
They just happen to be,

48
00:03:03,580 --> 00:03:06,260
to have the paycheck coming from the same person.

49
00:03:06,260 --> 00:03:11,900
Right now, I'm the person responsible

50
00:03:13,700 --> 00:03:17,340
for all things technology in the new Nozbe app,

51
00:03:17,340 --> 00:03:18,540
except for the server stuff.

52
00:03:18,540 --> 00:03:19,660
I don't touch the server stuff,

53
00:03:19,660 --> 00:03:21,820
but the iOS app, the Android app, the web app,

54
00:03:21,820 --> 00:03:25,420
the Mac app, beta, and the Windows app coming soon.

55
00:03:25,420 --> 00:03:28,180
That's all under my jurisdiction.

56
00:03:28,180 --> 00:03:33,180
And essentially my role is to make life easier

57
00:03:33,180 --> 00:03:35,800
for the rest of the team building the app.

58
00:03:35,800 --> 00:03:39,660
So I make the infrastructure, so the tooling,

59
00:03:40,560 --> 00:03:43,380
I prove out technologies that we use,

60
00:03:43,380 --> 00:03:48,100
set up guidelines, try out new things, make prototypes.

61
00:03:48,100 --> 00:03:52,560
I built a couple of open source frameworks

62
00:03:52,560 --> 00:03:55,720
that well, we use to build Nozbe

63
00:03:55,720 --> 00:03:58,320
and make it available on all the platforms

64
00:03:58,320 --> 00:04:00,320
and be fast and whatnot.

65
00:04:00,320 --> 00:04:03,040
I work on sync and I say from that,

66
00:04:03,040 --> 00:04:06,480
I do Kaizen, which we'll talk about and I do performance.

67
00:04:06,480 --> 00:04:09,480
So I'm working on making the app fast.

68
00:04:09,480 --> 00:04:12,160
- Yeah, so essentially I think of myself

69
00:04:12,160 --> 00:04:15,440
as the person sort of on the side,

70
00:04:15,440 --> 00:04:18,000
helping out others actually build the features

71
00:04:18,000 --> 00:04:19,760
that people use.

72
00:04:19,760 --> 00:04:23,880
So most of my work is not visible directly for the users,

73
00:04:23,880 --> 00:04:27,600
but it underpins the work of, the great work of others.

74
00:04:27,600 --> 00:04:30,760
- Yeah, like I think I would describe to her

75
00:04:30,760 --> 00:04:33,760
that you make sure that others in the team

76
00:04:33,760 --> 00:04:38,200
can build feature fast and without any issues.

77
00:04:38,200 --> 00:04:42,600
So that's, you're kind of a catalyst or facilitator.

78
00:04:42,600 --> 00:04:43,440
Okay.

79
00:04:43,440 --> 00:04:46,680
- Yeah, maybe not just don't use the word catalyst.

80
00:04:46,680 --> 00:04:47,520
That's just-

81
00:04:47,520 --> 00:04:48,600
- Catalyst, you don't know.

82
00:04:48,600 --> 00:04:49,440
(laughs)

83
00:04:49,440 --> 00:04:50,260
- No, no, no, catalyst.

84
00:04:50,260 --> 00:04:53,080
- You don't have positive connotation with that word?

85
00:04:53,080 --> 00:04:53,920
- Exactly.

86
00:04:53,920 --> 00:04:56,240
- Okay, so you said performance.

87
00:04:56,240 --> 00:05:00,440
So let's deep dive into performance aspect of your work.

88
00:05:00,440 --> 00:05:05,120
So because you are obsessed with the performance

89
00:05:05,120 --> 00:05:09,480
of our app, of our sync, of the start time of the app.

90
00:05:09,480 --> 00:05:14,120
And every couple of weeks I see in our Nozbeep

91
00:05:14,120 --> 00:05:15,000
that you announced that,

92
00:05:15,000 --> 00:05:18,120
"Oh, here's another batch of performance improvements.

93
00:05:18,120 --> 00:05:21,880
Now the app should start faster, the sync is faster,

94
00:05:21,880 --> 00:05:24,280
the first login is faster, et cetera."

95
00:05:24,280 --> 00:05:27,360
But besides of the app, what else?

96
00:05:27,360 --> 00:05:29,840
Because like performance of app itself,

97
00:05:29,840 --> 00:05:32,880
it's not only performance, you are optimizing.

98
00:05:32,880 --> 00:05:37,680
So making software fast is a slow process,

99
00:05:37,680 --> 00:05:42,120
slow and tedious and frustrating, which is funny.

100
00:05:42,120 --> 00:05:45,920
But the thing is, there's a couple of constants

101
00:05:45,920 --> 00:05:49,200
in software development.

102
00:05:49,200 --> 00:05:53,260
One of them is that software tends to get slow over time.

103
00:05:53,260 --> 00:05:57,420
It tends to get bloated as features are added,

104
00:05:57,420 --> 00:06:01,000
as years pass by, there's just more and more junk.

105
00:06:01,000 --> 00:06:05,560
And also from kind of the internal perspective,

106
00:06:05,560 --> 00:06:07,040
the quality of the code base,

107
00:06:07,040 --> 00:06:08,780
like the stuff that people work with,

108
00:06:08,780 --> 00:06:10,400
just tends to deteriorate,

109
00:06:10,400 --> 00:06:12,520
which makes it harder and harder to work on the app,

110
00:06:12,520 --> 00:06:14,360
to improve it, to make it faster.

111
00:06:14,360 --> 00:06:16,280
It's sort of entropy, you know,

112
00:06:16,280 --> 00:06:17,680
it's kind of law of the universe.

113
00:06:17,680 --> 00:06:18,720
It happens over time

114
00:06:18,720 --> 00:06:21,120
and you have to actively fight against it.

115
00:06:21,120 --> 00:06:23,360
- It's the same thing as spaghetti code?

116
00:06:23,360 --> 00:06:24,820
- Well, if you don't do anything about it

117
00:06:24,820 --> 00:06:27,600
and let entropy do its thing,

118
00:06:27,600 --> 00:06:29,320
then eventually you end up with something

119
00:06:29,320 --> 00:06:30,920
that people would call spaghetti code,

120
00:06:30,920 --> 00:06:33,040
which is like all things tangled together,

121
00:06:33,040 --> 00:06:35,080
like impossible to disentangle

122
00:06:35,080 --> 00:06:37,320
and change into anything else.

123
00:06:37,320 --> 00:06:40,520
So this is sort of something that happens naturally.

124
00:06:40,520 --> 00:06:44,280
And the thing is it happens slowly, it happens over time.

125
00:06:44,280 --> 00:06:46,880
And it's very difficult in companies and in teams

126
00:06:46,880 --> 00:06:51,200
to assign time and effort and money into making that better,

127
00:06:51,200 --> 00:06:53,360
into making the app a little bit faster,

128
00:06:53,360 --> 00:06:56,760
making the code base a little bit less bloated,

129
00:06:56,760 --> 00:06:59,080
you know, cleaning things up, removing features.

130
00:06:59,080 --> 00:07:04,120
Like no one wants to do that because it doesn't bring immediate obvious effect

131
00:07:04,120 --> 00:07:05,480
and it takes a lot of time.

132
00:07:05,480 --> 00:07:10,680
But what happens if you don't do it is that eventually, couple of years in,

133
00:07:10,680 --> 00:07:13,400
you sort of have to declare bankruptcy.

134
00:07:13,400 --> 00:07:17,640
Like it's just very difficult to do something with it

135
00:07:17,640 --> 00:07:20,760
if you don't work on it constantly over time.

136
00:07:20,760 --> 00:07:24,920
So those are things that I spend a lot of my time working on

137
00:07:24,920 --> 00:07:28,160
because those are hard to appreciate at first,

138
00:07:28,160 --> 00:07:30,960
but it is a feature over time.

139
00:07:30,960 --> 00:07:34,800
It doesn't sell to say, hey, the app is not slow,

140
00:07:34,800 --> 00:07:36,780
it's pretty fast actually.

141
00:07:36,780 --> 00:07:39,160
Like it just doesn't sell the app.

142
00:07:39,160 --> 00:07:41,960
But over time, if you don't do anything

143
00:07:41,960 --> 00:07:44,760
and the app just grows slower and slower and slower,

144
00:07:44,760 --> 00:07:45,920
people don't wanna use it.

145
00:07:45,920 --> 00:07:47,840
Customers are unhappy.

146
00:07:47,840 --> 00:07:51,080
You know, there's some other app with teams in the name

147
00:07:51,080 --> 00:07:53,960
that people seem to be really not like

148
00:07:53,960 --> 00:07:56,760
because it's floated and slow

149
00:07:56,760 --> 00:07:59,120
and so many examples.

150
00:07:59,120 --> 00:08:01,400
- Yeah, and adding new features and fixes

151
00:08:01,400 --> 00:08:06,400
are much harder to add because like,

152
00:08:06,400 --> 00:08:09,960
when code is bloated and when you add a new feature,

153
00:08:09,960 --> 00:08:13,040
you produce five other bugs in different areas of the app.

154
00:08:13,040 --> 00:08:14,980
- Yeah, so as for performance,

155
00:08:14,980 --> 00:08:17,880
I just think of speed of the app as a feature

156
00:08:17,880 --> 00:08:19,840
and not very well appreciated one,

157
00:08:19,840 --> 00:08:21,400
but one that needs to be worked on

158
00:08:21,400 --> 00:08:24,320
to just fight the nature.

159
00:08:24,320 --> 00:08:27,480
- Yeah, but still you managed sometimes

160
00:08:27,480 --> 00:08:30,580
to by doing a performance work,

161
00:08:30,580 --> 00:08:35,580
you deep dive into the code to the like lower layers

162
00:08:35,580 --> 00:08:37,500
of the code.

163
00:08:37,500 --> 00:08:40,500
I bet you sometimes see some low hanging fruits

164
00:08:40,500 --> 00:08:43,540
that some features you can implement or improve.

165
00:08:43,540 --> 00:08:47,300
Like for example, you implemented bulk edit mode

166
00:08:47,300 --> 00:08:51,100
very quickly, but we thought that would be,

167
00:08:51,100 --> 00:08:53,980
to take much more time to implement.

168
00:08:53,980 --> 00:08:57,100
The SMCU improved a lot our jump to.

169
00:08:57,100 --> 00:08:58,620
It's much, much performant.

170
00:08:58,620 --> 00:09:01,620
And on top of that, you add some features to that.

171
00:09:01,620 --> 00:09:05,560
- Yeah, I rarely work on like features

172
00:09:05,560 --> 00:09:09,500
like user visible things in the app anymore.

173
00:09:09,500 --> 00:09:11,980
And when I do, it's usually out of frustration.

174
00:09:11,980 --> 00:09:14,500
Like I hate this, why doesn't it work

175
00:09:14,500 --> 00:09:15,900
the way I want it to work?

176
00:09:15,900 --> 00:09:18,140
And so I just fix it for myself.

177
00:09:18,140 --> 00:09:20,060
That's what happened with jump to

178
00:09:20,060 --> 00:09:21,860
and with bulk edit.

179
00:09:21,860 --> 00:09:27,860
What's also important to appreciate is that these things,

180
00:09:27,860 --> 00:09:31,180
they are hard initially and then they become doable.

181
00:09:31,180 --> 00:09:35,740
So we'll talk about Kaizen in more depth,

182
00:09:35,740 --> 00:09:39,720
but essentially as you unload the app, as you work on it,

183
00:09:39,720 --> 00:09:43,280
as you look at all the nooks and crannies of the code base,

184
00:09:43,280 --> 00:09:44,460
you see certain problems,

185
00:09:44,460 --> 00:09:47,660
things that could be simplified, improved,

186
00:09:47,660 --> 00:09:52,260
things that are duplicated and there's like three different modules of ways of

187
00:09:52,260 --> 00:09:56,620
doing something like why did that happen why can't we have just one and and you

188
00:09:56,620 --> 00:10:02,700
start just entangling it you know pulling by by the the yarn and at first

189
00:10:02,700 --> 00:10:06,940
you don't see any result you're just making yourself feel better that that

190
00:10:06,940 --> 00:10:11,100
you've improved something but you can't see the result but but as you pull on

191
00:10:11,100 --> 00:10:16,100
these threads and and improve things then suddenly something that was just so

192
00:10:16,100 --> 00:10:21,260
tangled up with many problems and hard to change and improve, suddenly

193
00:10:21,260 --> 00:10:27,220
becomes easy. So you know with Bulk Edit, you know this is like the Nozbe app, it's

194
00:10:27,220 --> 00:10:32,820
a list of tasks that like it's a big complicated chunk of infrastructure

195
00:10:32,820 --> 00:10:36,940
you know the the list of tasks you know much more complicated than it looks

196
00:10:36,940 --> 00:10:41,940
and so as we add new feature there's bloat and then as you unbloat it like

197
00:10:41,940 --> 00:10:44,620
Like suddenly, hey, you know, adding bulk edit.

198
00:10:44,620 --> 00:10:46,260
That's not so hard anymore.

199
00:10:46,260 --> 00:10:48,700
- Actually that's your work.

200
00:10:48,700 --> 00:10:50,700
Like I can now really appreciate

201
00:10:50,700 --> 00:10:54,700
because like last year we shipped 46 updates to Nozbe.

202
00:10:54,700 --> 00:10:57,500
Then it was Nozbe teams now it's new Nozbe.

203
00:10:57,500 --> 00:11:01,060
And that's pretty amazing comparing to all of these years

204
00:11:01,060 --> 00:11:03,700
we were developing Nozbe personal even.

205
00:11:03,700 --> 00:11:06,060
Like we were shipping, I don't know,

206
00:11:06,060 --> 00:11:08,660
like one update per two months in Nozbe personal

207
00:11:08,660 --> 00:11:10,020
in our high peak times.

208
00:11:10,020 --> 00:11:12,780
- Yeah, this is a completely different,

209
00:11:12,780 --> 00:11:15,300
it's a huge change in mindset

210
00:11:15,300 --> 00:11:18,740
and it's a big change in tooling and infrastructure.

211
00:11:18,740 --> 00:11:21,880
So in the old days and what we did before

212
00:11:21,880 --> 00:11:24,760
was kind of the old days mentality

213
00:11:24,760 --> 00:11:27,480
was that every release is polished,

214
00:11:27,480 --> 00:11:32,060
every release is like it's something you start

215
00:11:32,060 --> 00:11:34,680
at features that you decide you need to add

216
00:11:34,680 --> 00:11:37,000
and then you polish it, bug fix, test

217
00:11:37,000 --> 00:11:38,360
and then you release it.

218
00:11:38,360 --> 00:11:40,140
And it's a marketing release.

219
00:11:40,140 --> 00:11:44,680
And these days, like the app has to be stable

220
00:11:44,680 --> 00:11:46,860
and polished at all times.

221
00:11:46,860 --> 00:11:49,060
And we do things and we add things

222
00:11:49,060 --> 00:11:52,160
and most of them are invisible for, you know,

223
00:11:52,160 --> 00:11:56,680
weeks or months, but every release is stable.

224
00:11:56,680 --> 00:11:59,320
And none of the releases are marketing releases.

225
00:11:59,320 --> 00:12:02,300
We just add things all the time.

226
00:12:02,300 --> 00:12:05,320
We ship every week, no matter what,

227
00:12:05,320 --> 00:12:07,520
unless something is like really blowing up.

228
00:12:07,520 --> 00:12:10,520
And then when we're ready to actually show something

229
00:12:10,520 --> 00:12:13,200
to the users that we know when that feature is ready,

230
00:12:13,200 --> 00:12:14,820
not the release, the feature is ready,

231
00:12:14,820 --> 00:12:18,680
then we flip the switch, enable it, people see it.

232
00:12:18,680 --> 00:12:20,960
Hopefully customers are happy,

233
00:12:20,960 --> 00:12:22,720
but it happens when we're ready.

234
00:12:22,720 --> 00:12:27,720
Not because, hey, this is a 3.2.1.2137 release.

235
00:12:27,720 --> 00:12:30,400
No, no one cares.

236
00:12:30,400 --> 00:12:33,000
You just want to use the app and get your stuff done,

237
00:12:33,000 --> 00:12:35,740
get your life organized, make your team more productive.

238
00:12:35,740 --> 00:12:37,580
Like you don't care about marketing releases.

239
00:12:37,580 --> 00:12:40,680
So, and this way, you know,

240
00:12:40,680 --> 00:12:42,360
when you have all the tooling automated,

241
00:12:42,360 --> 00:12:44,640
when you dog food the app all the time,

242
00:12:44,640 --> 00:12:49,640
it's always constantly being tested by machines and by us.

243
00:12:49,640 --> 00:12:52,820
Then, you know, there's no reason not to release.

244
00:12:52,820 --> 00:12:55,620
And so, yes, there's a slightly higher chance

245
00:12:55,620 --> 00:12:58,060
that we release some bug, you know, this week,

246
00:12:58,060 --> 00:12:59,860
because we shit this week.

247
00:12:59,860 --> 00:13:03,860
But the upside is that if we mess something up,

248
00:13:03,860 --> 00:13:06,860
people see much earlier, much more quickly.

249
00:13:06,860 --> 00:13:10,660
Like every release is a smaller chunk of changes.

250
00:13:10,660 --> 00:13:15,660
So whatever happens is just a small chunk of change.

251
00:13:15,660 --> 00:13:20,660
And we don't change the fundamental things every week,

252
00:13:20,660 --> 00:13:22,360
but we add some new feature,

253
00:13:22,360 --> 00:13:26,720
not yet fully our full idea for this feature,

254
00:13:26,720 --> 00:13:27,560
but it already works.

255
00:13:27,560 --> 00:13:29,880
people use it, give us feedback, we improve it.

256
00:13:29,880 --> 00:13:31,600
Next week it's already a bit better.

257
00:13:31,600 --> 00:13:34,760
- Plus we don't worry about even shipping bugs

258
00:13:34,760 --> 00:13:39,420
because when we ship some bugs and they are not critical,

259
00:13:39,420 --> 00:13:42,140
we know we will have LEDs next week.

260
00:13:42,140 --> 00:13:44,540
So we can fix that very, very quickly.

261
00:13:44,540 --> 00:13:49,360
And we are almost releasing that in this process

262
00:13:49,360 --> 00:13:51,300
for almost two years now.

263
00:13:51,300 --> 00:13:56,300
And I think we only had to do like hotfix LEDs

264
00:13:56,520 --> 00:13:59,040
in the same week like one or two times.

265
00:13:59,040 --> 00:14:02,120
So I think that's pretty good, good result.

266
00:14:02,120 --> 00:14:04,040
- Yeah, this is software, this is computers.

267
00:14:04,040 --> 00:14:06,520
It's not perfect, it's never perfect.

268
00:14:06,520 --> 00:14:10,520
It has bugs unfortunately, and we can't avoid it.

269
00:14:10,520 --> 00:14:12,960
We do our best, but we can't avoid it.

270
00:14:12,960 --> 00:14:16,200
But it's sometimes better to ship just, you know,

271
00:14:16,200 --> 00:14:18,300
small, not that important bugs every week

272
00:14:18,300 --> 00:14:21,500
than, you know, a huge chunk of like new features

273
00:14:21,500 --> 00:14:24,040
and improvements and oh, it turns out, you know,

274
00:14:24,040 --> 00:14:25,920
it's just completely broken for people

275
00:14:25,920 --> 00:14:27,760
and customers not happy.

276
00:14:27,760 --> 00:14:30,200
- All right, so let's go to Kaizen.

277
00:14:30,200 --> 00:14:32,960
Every Monday, you and one front-end developer

278
00:14:32,960 --> 00:14:34,600
that is currently on hand,

279
00:14:34,600 --> 00:14:37,020
which is Horizon Expanding Month,

280
00:14:37,020 --> 00:14:38,520
we will talk about it later,

281
00:14:38,520 --> 00:14:39,880
you have a Kaizen event.

282
00:14:39,880 --> 00:14:44,360
It's some kind of per-programming, or what's that about?

283
00:14:44,360 --> 00:14:46,540
- No, it's not per-programming.

284
00:14:46,540 --> 00:14:49,580
So Kaizen, this is an inspiration,

285
00:14:49,580 --> 00:14:54,580
one of many inspirations that I've introduced to Nozbe

286
00:14:54,760 --> 00:14:57,000
from lean manufacturing.

287
00:14:57,000 --> 00:15:00,900
It's kind of this philosophy that's been taking hold

288
00:15:00,900 --> 00:15:03,240
in manufacturing world, starting with Toyota

289
00:15:03,240 --> 00:15:08,240
and Japanese companies thinking about a better way

290
00:15:08,240 --> 00:15:12,660
of running companies in manufacturing.

291
00:15:12,660 --> 00:15:15,160
And some of these lessons are applicable.

292
00:15:15,160 --> 00:15:16,840
So one of these ideas is Kaizen.

293
00:15:16,840 --> 00:15:19,760
Kaizen means continuous improvement.

294
00:15:19,760 --> 00:15:24,040
And the idea here is that you don't,

295
00:15:24,040 --> 00:15:27,500
It's actually kind of similar to us shipping every week.

296
00:15:27,500 --> 00:15:32,040
You don't make these huge projects to, I don't know,

297
00:15:32,040 --> 00:15:36,380
introduce a new production technology or whatever,

298
00:15:36,380 --> 00:15:39,960
or just ignore things and just let things run

299
00:15:39,960 --> 00:15:43,020
and yeah, there's some problems, but whatever.

300
00:15:43,020 --> 00:15:46,740
No, you have to continuously improve to stay

301
00:15:46,740 --> 00:15:51,360
at the cutting edge to be the best company,

302
00:15:51,360 --> 00:15:52,900
the best technology company you can be.

303
00:15:52,900 --> 00:15:54,020
have to be on the cutting edge.

304
00:15:54,020 --> 00:15:57,360
And so you have to constantly look for problems

305
00:15:57,360 --> 00:15:59,020
and not quality problems,

306
00:15:59,020 --> 00:16:01,840
like problems that customers are gonna see,

307
00:16:01,840 --> 00:16:04,080
but improvements to the process,

308
00:16:04,080 --> 00:16:08,780
the process of manufacturing, in our case, manufacturing code.

309
00:16:08,780 --> 00:16:11,860
And so every week we meet up,

310
00:16:11,860 --> 00:16:14,700
we have our list of ideas of things we can improve

311
00:16:14,700 --> 00:16:15,540
in the code base.

312
00:16:15,540 --> 00:16:18,620
And it's a little hard to explain to non-programmers,

313
00:16:18,620 --> 00:16:23,620
but we just notice things that are kinda hard to do,

314
00:16:23,620 --> 00:16:26,000
take a little bit more time than they should

315
00:16:26,000 --> 00:16:27,580
or things that we do all the time.

316
00:16:27,580 --> 00:16:30,480
So in the app, we have a lot of menus.

317
00:16:30,480 --> 00:16:33,400
We have a lot of, I don't know, text inputs.

318
00:16:33,400 --> 00:16:36,560
There's certain elements that repeat over and over

319
00:16:36,560 --> 00:16:37,800
and over and over again.

320
00:16:37,800 --> 00:16:41,760
So we want to make them easier, like easier to use,

321
00:16:41,760 --> 00:16:44,060
faster to apply, to build a new feature

322
00:16:44,060 --> 00:16:46,320
using some sort of element.

323
00:16:46,320 --> 00:16:54,560
there's "poka-yoke". "Poka-yoke" means "full-proofing". So we notice where we make mistakes

324
00:16:54,560 --> 00:17:01,360
and try to find a pattern in those mistakes. And then we full-proof it. So we add a "poka-yoke"

325
00:17:01,360 --> 00:17:08,320
to make doing the wrong thing more difficult. So for example, the app is translated into,

326
00:17:08,320 --> 00:17:14,480
I don't know, six, seven, eight languages. Whenever in the app there's some text that's

327
00:17:14,480 --> 00:17:17,720
we refer to this text by its identifier.

328
00:17:17,720 --> 00:17:21,520
And it happened in the past that someone made a typo

329
00:17:21,520 --> 00:17:24,520
in that identifier or the name of that,

330
00:17:24,520 --> 00:17:26,880
the key of that text has changed.

331
00:17:26,880 --> 00:17:29,280
And then we shipped the app with,

332
00:17:29,280 --> 00:17:30,480
instead of, I don't know,

333
00:17:30,480 --> 00:17:35,120
it's saying single tasks translated into German,

334
00:17:35,120 --> 00:17:36,680
it would say, I don't know,

335
00:17:36,680 --> 00:17:41,480
underscore single underscore tasks, string, whatever.

336
00:17:41,480 --> 00:17:43,780
So, hey, we can change that.

337
00:17:43,780 --> 00:17:46,380
So we added a little bit of technology magic

338
00:17:46,380 --> 00:17:48,680
so that when you enter the wrong key,

339
00:17:48,680 --> 00:17:50,960
it just highlights in the editor as read like,

340
00:17:50,960 --> 00:17:53,620
"Hey, this key does not exist."

341
00:17:53,620 --> 00:17:56,820
This is just one example of thousands.

342
00:17:56,820 --> 00:17:59,560
Literally every week we notice something else

343
00:17:59,560 --> 00:18:01,820
that we could make a little bit easier to do,

344
00:18:01,820 --> 00:18:03,320
a little bit faster to do,

345
00:18:03,320 --> 00:18:05,260
a little bit harder to mess up,

346
00:18:05,260 --> 00:18:08,960
or something that, hey, there's some duplication,

347
00:18:08,960 --> 00:18:14,700
duplication, hey there's some old stuff that we need to clean up, some stuff like internal

348
00:18:14,700 --> 00:18:17,140
stuff to remove, stuff like that.

349
00:18:17,140 --> 00:18:22,180
By doing this continuous improvement, you know, every week the end result, like the

350
00:18:22,180 --> 00:18:26,080
user does not see it and we notice it only a little bit.

351
00:18:26,080 --> 00:18:33,440
But like imagine you improve your productivity as a team member by, I don't know, 1% every

352
00:18:33,440 --> 00:18:34,440
week.

353
00:18:34,440 --> 00:18:38,080
That's actually, when you think about it, 1% a week,

354
00:18:38,080 --> 00:18:39,720
turns out to be pretty outrageous.

355
00:18:39,720 --> 00:18:43,260
So it's probably less than that, but 1% a week.

356
00:18:43,260 --> 00:18:48,260
Now, you know, take 1.01 and raise it to the 52 power.

357
00:18:48,260 --> 00:18:53,760
So 52 weeks in a year, and it turns out

358
00:18:53,760 --> 00:18:57,120
that your proactivity has skyrocketed, right?

359
00:18:57,120 --> 00:18:59,040
- Yeah, and multiplied by our team members,

360
00:18:59,040 --> 00:19:01,760
because the most improvements you made

361
00:19:01,760 --> 00:19:03,840
are applicable for everyone in a team.

362
00:19:03,840 --> 00:19:05,880
like at least for developers.

363
00:19:05,880 --> 00:19:08,760
- Yeah, so by making small changes,

364
00:19:08,760 --> 00:19:12,480
but continuously noticing problems and fixing them,

365
00:19:12,480 --> 00:19:14,160
thinking about how we can make this better

366
00:19:14,160 --> 00:19:16,260
instead of pretending that they don't exist,

367
00:19:16,260 --> 00:19:18,000
like, eh, it's not a big deal.

368
00:19:18,000 --> 00:19:20,600
Every week, over and over and over again,

369
00:19:20,600 --> 00:19:24,840
you just make the productivity of our team,

370
00:19:24,840 --> 00:19:26,560
the quality of the work that we produce

371
00:19:26,560 --> 00:19:28,560
for the customers better and better.

372
00:19:28,560 --> 00:19:30,720
And it's a tiny bit every week.

373
00:19:30,720 --> 00:19:33,720
And yeah, by changing things, sometimes we break things,

374
00:19:33,720 --> 00:19:36,600
a little bit, but it's so much worth it.

375
00:19:36,600 --> 00:19:41,060
And I think you can see it, you know, being internally

376
00:19:41,060 --> 00:19:43,640
but not a developer, how we just, you know

377
00:19:43,640 --> 00:19:45,640
with the same number of people, we just become faster

378
00:19:45,640 --> 00:19:49,520
and faster and faster, you know, pushing out new features

379
00:19:49,520 --> 00:19:51,160
you know, faster and better

380
00:19:51,160 --> 00:19:53,200
and with higher quality from the start.

381
00:19:53,200 --> 00:19:57,120
- Yeah, like, as I said, we shipped 46 updates last year

382
00:19:57,120 --> 00:20:02,120
and I'm still surprised how fast we can develop some base

383
00:20:02,680 --> 00:20:05,240
for the feature that actually already adds value

384
00:20:05,240 --> 00:20:08,000
and we use it and oftentimes we decide to ship it

385
00:20:08,000 --> 00:20:09,320
in that form.

386
00:20:09,320 --> 00:20:13,400
It's often like one week appetite time

387
00:20:13,400 --> 00:20:15,800
for a developer to develop it.

388
00:20:15,800 --> 00:20:18,480
And thanks to those constant improvements

389
00:20:18,480 --> 00:20:23,480
to those guys and events, yeah, we maintain our speed,

390
00:20:23,480 --> 00:20:26,640
our performance of developing the features.

391
00:20:26,640 --> 00:20:27,620
- Yeah, exactly.

392
00:20:27,620 --> 00:20:29,080
- All right, let's take a break here

393
00:20:29,080 --> 00:20:34,080
and thank our sponsors this week, which is of course us.

394
00:20:34,080 --> 00:20:36,160
Yes, Nozbe.

395
00:20:36,160 --> 00:20:39,800
Nozbe is task-based asynchronous communication app

396
00:20:39,800 --> 00:20:43,040
for personal, family and business use.

397
00:20:43,040 --> 00:20:46,680
So let's hear what our customers actually say

398
00:20:46,680 --> 00:20:47,800
about the product.

399
00:20:47,800 --> 00:20:52,240
- When we've been around for about 10 years,

400
00:20:52,240 --> 00:20:54,080
our business has, and we've been using Nozbe

401
00:20:54,080 --> 00:20:55,320
for about eight of those years.

402
00:20:55,320 --> 00:20:57,280
And as we grew, we kind of got to the point

403
00:20:57,280 --> 00:21:00,200
I just couldn't remember everything anymore.

404
00:21:00,200 --> 00:21:01,520
I'm pretty organized.

405
00:21:01,520 --> 00:21:03,040
I would just kind of keep everything in my head

406
00:21:03,040 --> 00:21:04,960
and with post-it notes and things like that.

407
00:21:04,960 --> 00:21:06,400
And it just got to be too much.

408
00:21:06,400 --> 00:21:07,560
And so I started looking around

409
00:21:07,560 --> 00:21:09,920
for some sort of project management software

410
00:21:09,920 --> 00:21:13,160
that could help me have a set up really trusted system.

411
00:21:13,160 --> 00:21:14,320
But really I just wanted a system

412
00:21:14,320 --> 00:21:16,740
where I could know that I had everything in there.

413
00:21:16,740 --> 00:21:18,120
I wasn't gonna forget anything.

414
00:21:18,120 --> 00:21:21,120
I wasn't gonna drop any balls for clients or missed deadlines

415
00:21:21,120 --> 00:21:26,320
- All right, and we are back.

416
00:21:26,320 --> 00:21:29,400
let's go back to talk about Kaizen improvements.

417
00:21:29,400 --> 00:21:31,920
You spoke about like dev tools,

418
00:21:31,920 --> 00:21:36,920
the tools we developers using for producing a code,

419
00:21:36,920 --> 00:21:38,820
for writing a code.

420
00:21:38,820 --> 00:21:42,560
I also remember that recently we improved a lot

421
00:21:42,560 --> 00:21:44,320
our build server.

422
00:21:44,320 --> 00:21:47,840
- Yes, so this is one of the myriad

423
00:21:47,840 --> 00:21:50,080
of little technology pieces

424
00:21:50,080 --> 00:21:53,560
that are not user visible technologies,

425
00:21:53,560 --> 00:21:55,160
customer visible technologies, but--

426
00:21:55,160 --> 00:21:58,440
Actually, I can make it visible as a podcast chapter art

427
00:21:58,440 --> 00:22:01,120
and display it on the video version.

428
00:22:01,120 --> 00:22:02,200
Yeah.

429
00:22:02,200 --> 00:22:03,040
Wow, that's ugly.

430
00:22:03,040 --> 00:22:05,760
I'm ashamed of myself.

431
00:22:05,760 --> 00:22:09,560
Well, it's not a UI that customers see.

432
00:22:09,560 --> 00:22:10,600
True.

433
00:22:10,600 --> 00:22:14,880
Anyway, long story short, we build a lot of code.

434
00:22:14,880 --> 00:22:18,800
We have a small but very active team.

435
00:22:18,800 --> 00:22:23,040
And after every change, which we will make a lot,

436
00:22:23,040 --> 00:22:26,860
you want to run automatic tests on the code base

437
00:22:26,860 --> 00:22:28,500
and make builds.

438
00:22:28,500 --> 00:22:31,680
So with tests, there's like five different tools

439
00:22:31,680 --> 00:22:33,940
that we run on the entire code base

440
00:22:33,940 --> 00:22:37,600
to check for any errors that can be caught automatically

441
00:22:37,600 --> 00:22:39,240
without human interaction.

442
00:22:39,240 --> 00:22:43,020
And for builds, we have the web app, the Mac app,

443
00:22:43,020 --> 00:22:45,100
the Windows app, coming soon,

444
00:22:45,100 --> 00:22:46,540
the Android app and the iOS app.

445
00:22:46,540 --> 00:22:47,620
That's five apps.

446
00:22:47,620 --> 00:22:49,800
And it takes a lot of time to build.

447
00:22:49,800 --> 00:22:51,240
Actually not that much time

448
00:22:51,240 --> 00:22:56,200
because one of the Kaizen events actions

449
00:22:56,200 --> 00:23:00,280
and my own time was spent on just making

450
00:23:00,280 --> 00:23:02,740
these automatic tools and the builds faster

451
00:23:02,740 --> 00:23:04,040
and faster and faster.

452
00:23:04,040 --> 00:23:07,880
And then we have Apple come out with new computers

453
00:23:07,880 --> 00:23:10,040
which are faster and faster and faster.

454
00:23:10,040 --> 00:23:15,040
So again, in the old days, you'd make a smaller number

455
00:23:15,040 --> 00:23:20,520
of larger changes, larger commits in the tech lingo

456
00:23:20,520 --> 00:23:22,860
just because what you have to do afterwards

457
00:23:22,860 --> 00:23:24,260
was just painful and slow.

458
00:23:24,260 --> 00:23:26,780
And the idea here is we want to be nimble

459
00:23:26,780 --> 00:23:30,160
and very, very fast and make lots of tiny changes,

460
00:23:30,160 --> 00:23:33,700
changes that are easy to review, to test,

461
00:23:33,700 --> 00:23:35,860
to just ship to the users.

462
00:23:35,860 --> 00:23:38,660
And so we need the process of automatic testing

463
00:23:38,660 --> 00:23:40,700
and build making to be very, very fast.

464
00:23:40,700 --> 00:23:43,480
So that's what CI/CD means,

465
00:23:43,480 --> 00:23:46,180
that's automatic testing and making builds.

466
00:23:46,180 --> 00:23:47,700
And we have our own server for that

467
00:23:47,700 --> 00:23:51,680
because it turns out it's less painful and cheaper

468
00:23:51,680 --> 00:23:53,660
to just have your own computer do that.

469
00:23:53,660 --> 00:23:57,100
And because we make iOS apps,

470
00:23:57,100 --> 00:23:59,500
we need to make our builds on a Mac,

471
00:23:59,500 --> 00:24:02,500
which is not ideal, but you know, it is what it is.

472
00:24:02,500 --> 00:24:07,500
So we got the fastest Mac Mini money could buy

473
00:24:07,500 --> 00:24:13,740
and just put it on the shelf with a fastest SSD,

474
00:24:13,740 --> 00:24:16,960
stuck it in a server room.

475
00:24:16,960 --> 00:24:20,760
other friends at the Warsaw Hackerspace, hackerspace.pl.

476
00:24:20,760 --> 00:24:25,840
We have a nice server room, our server sits there.

477
00:24:25,840 --> 00:24:29,000
And you know, every single time someone pushes

478
00:24:29,000 --> 00:24:33,760
a tiniest change to the code of the new Nozbe,

479
00:24:33,760 --> 00:24:37,340
within four minutes and 30 seconds,

480
00:24:37,340 --> 00:24:39,600
there's five apps to download and test

481
00:24:39,600 --> 00:24:44,160
and all the automatic checks are either passed or failed.

482
00:24:44,160 --> 00:24:46,480
- It's like every change on every branch

483
00:24:46,480 --> 00:24:51,480
or only those branches that have open PRs.

484
00:24:51,480 --> 00:24:53,000
- Have open PRs, yeah.

485
00:24:53,000 --> 00:24:56,580
- So, yeah, and I can see that's pretty fast

486
00:24:56,580 --> 00:24:59,680
and already today I think we have like,

487
00:24:59,680 --> 00:25:04,480
as I can see on what output of our build server,

488
00:25:04,480 --> 00:25:07,200
we already have three versions.

489
00:25:07,200 --> 00:25:12,200
Well, someone build it on 2 a.m. today, tonight actually.

490
00:25:12,200 --> 00:25:16,240
- Yeah, occasionally someone does that, I don't know why.

491
00:25:16,240 --> 00:25:18,200
- Not me. - Yeah, obviously.

492
00:25:18,200 --> 00:25:21,320
Yeah, you respect your sleep.

493
00:25:21,320 --> 00:25:24,440
So that's CI, is there some errors,

494
00:25:24,440 --> 00:25:29,000
a bigger area that you constantly improve

495
00:25:29,000 --> 00:25:31,920
besides those dev tools and CI and code?

496
00:25:31,920 --> 00:25:36,560
- Yeah, I think we talked about the majority

497
00:25:36,560 --> 00:25:39,720
of what I've been working on over the past year or two.

498
00:25:39,720 --> 00:25:43,160
So it is the improvements of the code base

499
00:25:43,160 --> 00:25:44,400
and then performance.

500
00:25:44,400 --> 00:25:47,880
and performance is, sometimes it's like

501
00:25:47,880 --> 00:25:51,560
stacking a bunch of five, 10% improvements,

502
00:25:51,560 --> 00:25:53,800
which is like, doesn't sound like much,

503
00:25:53,800 --> 00:25:57,900
but you have five or 10% improvements

504
00:25:57,900 --> 00:26:00,480
and then suddenly everything is so much faster.

505
00:26:00,480 --> 00:26:04,960
And sometimes, some new technology

506
00:26:04,960 --> 00:26:07,040
that we can easily use becomes available.

507
00:26:07,040 --> 00:26:11,240
So we recently shipped something that's called Hermes

508
00:26:11,240 --> 00:26:12,700
on our iOS app.

509
00:26:12,700 --> 00:26:16,180
And that made it three times faster to launch

510
00:26:16,180 --> 00:26:18,260
on iPhones and iPads,

511
00:26:18,260 --> 00:26:23,260
and twice as fast to like move between like views in the app.

512
00:26:23,260 --> 00:26:25,540
And it was just a few days of work.

513
00:26:25,540 --> 00:26:27,500
Like it's just something that became available

514
00:26:27,500 --> 00:26:30,580
and I could use it and bam, three times faster,

515
00:26:30,580 --> 00:26:33,500
which is a gigantic difference.

516
00:26:33,500 --> 00:26:35,520
And it's so fast.

517
00:26:35,520 --> 00:26:39,780
It's so fast that iOS doesn't even finish animating

518
00:26:39,780 --> 00:26:41,200
and the app is already launched.

519
00:26:41,200 --> 00:26:43,800
And you know, all these iOS native apps,

520
00:26:43,800 --> 00:26:45,240
they're not even that fast.

521
00:26:45,240 --> 00:26:47,760
- Yeah, and what was really nice

522
00:26:47,760 --> 00:26:49,640
and actually surprised for me,

523
00:26:49,640 --> 00:26:52,600
like it would be even more surprised for me

524
00:26:52,600 --> 00:26:53,600
like two years ago,

525
00:26:53,600 --> 00:26:56,640
but now after releasing app every week,

526
00:26:56,640 --> 00:26:58,920
I see that like we just,

527
00:26:58,920 --> 00:27:01,000
there's new piece of technology,

528
00:27:01,000 --> 00:27:04,580
like external framework or like this Hermes,

529
00:27:04,580 --> 00:27:07,320
we include it in our code base, yes?

530
00:27:07,320 --> 00:27:08,680
And nothing blew up.

531
00:27:08,680 --> 00:27:09,500
- Yeah, right.

532
00:27:09,500 --> 00:27:10,960
- Yeah, that was strange, yeah?

533
00:27:10,960 --> 00:27:13,160
It's just worked.

534
00:27:13,160 --> 00:27:15,440
- Yeah, part of that is external technology

535
00:27:15,440 --> 00:27:16,440
getting better and better.

536
00:27:16,440 --> 00:27:18,800
Part of that is our tooling getting better and better.

537
00:27:18,800 --> 00:27:23,040
Part of that is just our skills getting improved.

538
00:27:23,040 --> 00:27:26,820
But yes, in this case, I made the changes.

539
00:27:26,820 --> 00:27:30,120
Kamil and me just tested it ourselves for a week,

540
00:27:30,120 --> 00:27:32,320
just used the app with this change.

541
00:27:32,320 --> 00:27:34,960
And then we all use it internally for a week

542
00:27:34,960 --> 00:27:37,120
and then we shipped it and nothing blew up.

543
00:27:37,120 --> 00:27:39,520
- I can imagine a customer right now,

544
00:27:39,520 --> 00:27:42,240
- I rise up is crashing because--

545
00:27:42,240 --> 00:27:45,760
- Yeah, my favorite, yeah, that's true.

546
00:27:45,760 --> 00:27:48,120
My favorite thing was that the only error

547
00:27:48,120 --> 00:27:52,400
that Kamil, our QA person found,

548
00:27:52,400 --> 00:27:57,400
was that his plan, his Nozbe personal team,

549
00:27:57,400 --> 00:28:02,160
was valid until the year 2100.

550
00:28:02,160 --> 00:28:07,160
And it didn't say 2100, but 2099.

551
00:28:07,160 --> 00:28:08,480
- Oh, no.

552
00:28:08,480 --> 00:28:10,640
(laughing)

553
00:28:10,640 --> 00:28:12,680
- Yeah, yeah, so we stole a one year

554
00:28:12,680 --> 00:28:15,360
of premium account from him.

555
00:28:15,360 --> 00:28:17,120
- Exactly, that was the one issue.

556
00:28:17,120 --> 00:28:20,400
- Yeah, that was, yeah, that's the critical issue.

557
00:28:20,400 --> 00:28:22,280
But we fixed that, right?

558
00:28:22,280 --> 00:28:23,120
- Yeah.

559
00:28:23,120 --> 00:28:26,560
- So let's talk HEM, because as I mentioned,

560
00:28:26,560 --> 00:28:29,400
every week you meet with the developer

561
00:28:29,400 --> 00:28:30,800
that is currently on HEM.

562
00:28:30,800 --> 00:28:33,140
- Yeah, which is Horizon Expanding Month.

563
00:28:33,140 --> 00:28:35,760
- Yeah, what's that about?

564
00:28:35,760 --> 00:28:37,440
What is the purpose of this?

565
00:28:37,440 --> 00:28:41,320
because this is like we have three front-end developers,

566
00:28:41,320 --> 00:28:42,160
not counting you.

567
00:28:42,160 --> 00:28:43,620
- I'm a three and a half.

568
00:28:43,620 --> 00:28:44,460
We can say three and a half.

569
00:28:44,460 --> 00:28:45,300
- Three and a half, yeah.

570
00:28:45,300 --> 00:28:48,980
Okay, you can be a half of a front-end developer, yeah?

571
00:28:48,980 --> 00:28:49,820
- Yeah.

572
00:28:49,820 --> 00:28:53,880
- And two of them are assigned to projects within a cycle

573
00:28:53,880 --> 00:28:56,080
to implement features usually.

574
00:28:56,080 --> 00:28:59,760
And one of them is always on the scam

575
00:28:59,760 --> 00:29:03,360
and like 50% internally,

576
00:29:03,360 --> 00:29:07,680
50% of his time he's supposed to spend

577
00:29:07,680 --> 00:29:12,680
on expanding his area of responsibility within the app.

578
00:29:12,680 --> 00:29:16,520
And the rest like for on Kaizen events

579
00:29:16,520 --> 00:29:18,760
or implementing small improvements

580
00:29:18,760 --> 00:29:23,080
that actually can be done within one day

581
00:29:23,080 --> 00:29:26,120
or fixing like major bugs,

582
00:29:26,120 --> 00:29:28,400
support, reply to support tickets.

583
00:29:28,400 --> 00:29:30,760
- First of all, if I remember correctly,

584
00:29:30,760 --> 00:29:33,600
I came up with the Horizen Expanding Month name

585
00:29:33,600 --> 00:29:36,160
and it was supposed to be a joke.

586
00:29:36,160 --> 00:29:39,160
It was supposed to be making fun of corporate newspeak,

587
00:29:39,160 --> 00:29:43,600
but it stuck by accident, but we just call it Hem.

588
00:29:43,600 --> 00:29:48,160
Like when you expand the, when you expand the Hem,

589
00:29:48,160 --> 00:29:50,180
it just, gross name.

590
00:29:50,180 --> 00:29:51,240
I don't like it.

591
00:29:51,240 --> 00:29:55,320
Anyway, yes, so the idea was that, you know,

592
00:29:55,320 --> 00:29:58,420
it's great and all to build features

593
00:29:58,420 --> 00:30:00,480
and ship them to our customers

594
00:30:00,480 --> 00:30:03,480
and customers are happy when you see new features.

595
00:30:03,480 --> 00:30:08,480
The problem is that features is all that customers see.

596
00:30:08,480 --> 00:30:15,680
Like it's what they say they want most of the time.

597
00:30:15,680 --> 00:30:19,420
But the problem is that there's many different things

598
00:30:19,420 --> 00:30:21,760
around the process of building software

599
00:30:21,760 --> 00:30:23,960
that are not directly visible to our customers.

600
00:30:23,960 --> 00:30:27,720
But if you neglect them, things deteriorate over time.

601
00:30:27,720 --> 00:30:29,640
and we talked about this already.

602
00:30:29,640 --> 00:30:33,880
For example, we found it somehow somewhat difficult

603
00:30:33,880 --> 00:30:37,640
to plan bug fixing.

604
00:30:37,640 --> 00:30:41,080
So sometimes there's just bugs in the app

605
00:30:41,080 --> 00:30:43,480
and bugs can be a lot of things.

606
00:30:43,480 --> 00:30:47,400
Sometimes they're like, some of them are minor,

607
00:30:47,400 --> 00:30:50,640
some of them are major, but even the minor bugs,

608
00:30:50,640 --> 00:30:54,980
if something is just misaligned and just looks ugly,

609
00:30:54,980 --> 00:30:57,060
but isn't there someplace deep down

610
00:30:57,060 --> 00:31:00,180
that almost no one ever sees, then that's one thing.

611
00:31:00,180 --> 00:31:02,780
And then you can call the bug "minor",

612
00:31:02,780 --> 00:31:05,500
but you see it every day and it's really annoying.

613
00:31:05,500 --> 00:31:09,980
So what that means is that over time, the list of bugs,

614
00:31:09,980 --> 00:31:14,520
the stuff we could possibly fix just grows very large,

615
00:31:14,520 --> 00:31:16,320
even though the app is mostly fine.

616
00:31:16,320 --> 00:31:18,060
Like, yes, there's a couple of things to fix,

617
00:31:18,060 --> 00:31:19,640
but it's mostly fine.

618
00:31:19,640 --> 00:31:21,740
And yet there's a long list of bugs

619
00:31:21,740 --> 00:31:25,040
and you have to decide which of them to fix.

620
00:31:25,040 --> 00:31:28,480
It's often not easy before you start working on it

621
00:31:28,480 --> 00:31:31,760
to decide how easy it is to fix.

622
00:31:31,760 --> 00:31:35,980
Sometimes a major bug will take 15 minutes to fix

623
00:31:35,980 --> 00:31:37,600
once you get around to it.

624
00:31:37,600 --> 00:31:40,960
Sometimes a minor thing that you can just ignore

625
00:31:40,960 --> 00:31:45,960
and no one will notice would take hours or days of work.

626
00:31:45,960 --> 00:31:50,960
And that's part of the reason why it's kind of difficult

627
00:31:50,960 --> 00:31:55,600
to assign developers to work on fixing bugs.

628
00:31:55,600 --> 00:31:58,240
So improving quality in that way,

629
00:31:58,240 --> 00:32:03,240
by removing errors, imperfections.

630
00:32:03,240 --> 00:32:04,640
It's just hard to schedule,

631
00:32:04,640 --> 00:32:06,520
it's hard to pick what to work on.

632
00:32:06,520 --> 00:32:09,580
So that's one of the reasons why we thought,

633
00:32:09,580 --> 00:32:14,500
okay, we need to do that.

634
00:32:14,500 --> 00:32:17,240
Like we need to spend some time working on that.

635
00:32:17,240 --> 00:32:18,480
It can't be the only thing

636
00:32:18,480 --> 00:32:21,160
because we could just be fixing and fixing

637
00:32:21,160 --> 00:32:26,160
and people wouldn't see that it's getting better.

638
00:32:26,160 --> 00:32:28,300
So we need to be fixing things.

639
00:32:28,300 --> 00:32:32,420
Then there's technological aspects like the team members,

640
00:32:32,420 --> 00:32:34,160
they have to be growing,

641
00:32:34,160 --> 00:32:36,860
they have to be improving and learning new things.

642
00:32:36,860 --> 00:32:40,460
It can't be like it can't be me

643
00:32:40,460 --> 00:32:41,700
building all the infrastructure.

644
00:32:41,700 --> 00:32:43,380
Yeah, I'm in charge of all the infrastructure,

645
00:32:43,380 --> 00:32:46,500
but there are certain areas that while I have to delegate.

646
00:32:46,500 --> 00:32:51,340
So each team member has some extra responsibility

647
00:32:51,340 --> 00:32:54,220
that's like purely in terms of technology.

648
00:32:54,220 --> 00:32:56,840
But it takes time to learn and improve.

649
00:32:56,840 --> 00:33:00,980
And the learning and improving and experimenting

650
00:33:00,980 --> 00:33:04,220
with things in that technological area,

651
00:33:04,220 --> 00:33:06,420
like it's not something you can easily schedule.

652
00:33:06,420 --> 00:33:07,540
You know, you can't say,

653
00:33:07,540 --> 00:33:12,180
oh, you work for two weeks on that to build X.

654
00:33:12,180 --> 00:33:16,700
Like it's kind of an open-ended endeavor, right?

655
00:33:16,700 --> 00:33:20,380
It takes time, you know that, but you can't,

656
00:33:20,380 --> 00:33:21,660
like with features say,

657
00:33:21,660 --> 00:33:24,060
we're gonna work on a week on that feature

658
00:33:24,060 --> 00:33:26,100
and whatever comes of it, we ship.

659
00:33:26,100 --> 00:33:27,940
Hence, HEM, right?

660
00:33:27,940 --> 00:33:31,380
We rotate between the team members

661
00:33:31,380 --> 00:33:34,340
and so that everyone has time,

662
00:33:34,340 --> 00:33:37,980
like dedicated time to improve their skills in that area,

663
00:33:37,980 --> 00:33:40,380
experiment with new things,

664
00:33:40,380 --> 00:33:49,140
bug fixing, the person on ham plays a larger role doing code reviews.

665
00:33:49,140 --> 00:33:55,100
Everyone does code reviews, but the person on ham has slightly more time that can be

666
00:33:55,100 --> 00:33:56,940
easier to find to do reviews.

667
00:33:56,940 --> 00:33:57,940
And then Kaizen.

668
00:33:57,940 --> 00:34:03,640
Yeah, it's me, but there's not enough of me to do all of that.

669
00:34:03,640 --> 00:34:08,600
And also this is a thing about culture, right?

670
00:34:08,600 --> 00:34:11,440
It's not just about spending time to continuously improve.

671
00:34:11,440 --> 00:34:16,440
It's people need months to start changing their mindsets

672
00:34:16,440 --> 00:34:19,840
and start noticing the things that can be improved

673
00:34:19,840 --> 00:34:21,220
instead of doing things

674
00:34:21,220 --> 00:34:23,780
the way we've been doing them for years.

675
00:34:23,780 --> 00:34:28,780
So it's important that these sort of extra responsibilities,

676
00:34:28,780 --> 00:34:31,360
that everyone does some of that.

677
00:34:31,360 --> 00:34:35,940
And the reason why it rotates is because it's kind of hard

678
00:34:35,940 --> 00:34:40,500
to be like, "Hey, you have an appetite of one week

679
00:34:40,500 --> 00:34:42,180
"to work on that feature."

680
00:34:42,180 --> 00:34:45,660
But then also, "Hey, you can't be focused 100%

681
00:34:45,660 --> 00:34:50,660
"on that task, like that specific and time-bound task,

682
00:34:50,660 --> 00:34:53,960
"because also, you know, do the code reviews,

683
00:34:53,960 --> 00:34:55,720
"oh, check out this bug to fix,

684
00:34:55,720 --> 00:34:59,060
"and hey, are you coming to Kaizen today?"

685
00:34:59,060 --> 00:35:00,220
Right? - Yeah.

686
00:35:00,220 --> 00:35:02,180
- It's just hard to be,

687
00:35:02,180 --> 00:35:06,060
It's hard to simultaneously be in the mindset,

688
00:35:06,060 --> 00:35:11,060
in the mode of mind of focused task-based work.

689
00:35:11,060 --> 00:35:13,740
This is the task and this is the timeframe.

690
00:35:13,740 --> 00:35:18,740
And in the mindset of open-ended improvements

691
00:35:18,740 --> 00:35:22,220
and learning and exploration and stuff like that.

692
00:35:22,220 --> 00:35:26,220
It's just two different types of work,

693
00:35:26,220 --> 00:35:28,660
types of mental activity.

694
00:35:28,660 --> 00:35:30,860
Hence, it is easier to rotate that

695
00:35:30,860 --> 00:35:32,740
between every team member,

696
00:35:32,740 --> 00:35:37,260
then have people split their days or their weeks

697
00:35:37,260 --> 00:35:40,100
between these responsibilities.

698
00:35:40,100 --> 00:35:42,100
- That's really healthy too,

699
00:35:42,100 --> 00:35:44,020
because we have three front-end developers,

700
00:35:44,020 --> 00:35:46,660
as I mentioned, and we work in five week cycles, so.

701
00:35:46,660 --> 00:35:47,500
- Three and a half.

702
00:35:47,500 --> 00:35:50,020
- So it's three and a half, yeah.

703
00:35:50,020 --> 00:35:52,260
We work in five week cycles,

704
00:35:52,260 --> 00:35:54,820
which is almost a month.

705
00:35:54,820 --> 00:35:58,180
So that's why it's horizontal expanding month.

706
00:35:58,180 --> 00:36:02,580
So each developer has one ham per three months.

707
00:36:02,580 --> 00:36:03,420
Yeah.

708
00:36:03,420 --> 00:36:06,220
So that's, I think that's the healthy balance.

709
00:36:06,220 --> 00:36:10,800
And also you mentioned that takes months to change habits,

710
00:36:10,800 --> 00:36:14,660
to teach our developers better habits,

711
00:36:14,660 --> 00:36:18,100
to figure out places that can be improved.

712
00:36:18,100 --> 00:36:20,140
And I can see that in my work,

713
00:36:20,140 --> 00:36:24,380
like when I remember how we used to develop Nozbe Personal,

714
00:36:24,380 --> 00:36:27,960
I was so much needed to giving feedback

715
00:36:27,960 --> 00:36:29,660
to developers every day.

716
00:36:29,660 --> 00:36:32,840
And now I'm just needed in the week

717
00:36:32,840 --> 00:36:34,940
when we plan the cycle actually,

718
00:36:34,940 --> 00:36:38,020
and a day after in the next week

719
00:36:38,020 --> 00:36:39,700
when we do kickoff meetings.

720
00:36:39,700 --> 00:36:43,080
And after that, developers are leaders of the project

721
00:36:43,080 --> 00:36:45,280
and they really make great decisions,

722
00:36:45,280 --> 00:36:48,400
not only like from the technical point of view,

723
00:36:48,400 --> 00:36:53,400
but they grow in sense of design decisions also.

724
00:36:53,820 --> 00:36:57,700
And I'm really glad how the whole process works.

725
00:36:57,700 --> 00:36:58,620
- I think I lied.

726
00:36:58,620 --> 00:37:00,760
I think it's like years, not months.

727
00:37:00,760 --> 00:37:05,020
I'm really proud of our team

728
00:37:05,020 --> 00:37:08,340
and how far we've come with this.

729
00:37:08,340 --> 00:37:13,340
It is very easy to create in companies these bottlenecks,

730
00:37:13,340 --> 00:37:17,200
these decision bottlenecks,

731
00:37:17,200 --> 00:37:20,500
where people are just waiting on a designer

732
00:37:20,500 --> 00:37:23,640
or a manager to decide on something.

733
00:37:23,640 --> 00:37:31,440
And it doesn't just slow things down, but it just creates worse outcomes because you're

734
00:37:31,440 --> 00:37:33,400
a person doing the work.

735
00:37:33,400 --> 00:37:38,900
It might be development, but it can be any industry, right?

736
00:37:38,900 --> 00:37:39,900
Any job.

737
00:37:39,900 --> 00:37:40,900
You're doing the work.

738
00:37:40,900 --> 00:37:47,400
You're spending weeks just being immersed in it, understanding the problem, how to solve

739
00:37:47,400 --> 00:37:49,480
with possible approaches.

740
00:37:49,480 --> 00:37:53,740
And then you're waiting for that one guy who spent hours

741
00:37:53,740 --> 00:37:55,040
and not weeks working on it.

742
00:37:55,040 --> 00:37:58,120
And they might not have the full picture.

743
00:37:58,120 --> 00:38:03,120
Yeah, they might be specialized in design or management.

744
00:38:03,120 --> 00:38:06,440
They know things, they're experienced in things you're not.

745
00:38:06,440 --> 00:38:07,320
That's true.

746
00:38:07,320 --> 00:38:09,860
But as the person doing the work,

747
00:38:09,860 --> 00:38:13,560
you tend to have the broadest picture of,

748
00:38:13,560 --> 00:38:16,840
hey, okay, I could do this and it would be a good result,

749
00:38:16,840 --> 00:38:19,440
but it will take me one week to get this done.

750
00:38:19,440 --> 00:38:22,160
Or I could do this and it's almost as good,

751
00:38:22,160 --> 00:38:25,100
but I can get it done in an hour, right?

752
00:38:25,100 --> 00:38:27,380
And when you have these decision bottlenecks

753
00:38:27,380 --> 00:38:31,680
with these extra decision makers,

754
00:38:31,680 --> 00:38:35,480
it again slows things down and creates worse outcomes

755
00:38:35,480 --> 00:38:39,640
because it's hard to compress your weeks of experience

756
00:38:39,640 --> 00:38:43,620
working on something into something you can quickly express

757
00:38:43,620 --> 00:38:47,820
to a decision maker to approve or disapprove.

758
00:38:47,820 --> 00:38:50,760
But at the same time, just people are really not used

759
00:38:50,760 --> 00:38:55,380
to leading and making their own decisions in organization.

760
00:38:55,380 --> 00:38:58,380
People are employed and they see,

761
00:38:58,380 --> 00:39:00,700
okay, I need to know my place.

762
00:39:00,700 --> 00:39:03,300
You know how companies, organizations, institutions

763
00:39:03,300 --> 00:39:05,900
are like, people are very territorial,

764
00:39:05,900 --> 00:39:07,920
people are in a hierarchy.

765
00:39:07,920 --> 00:39:12,180
So people are not used to leading, making decisions.

766
00:39:12,180 --> 00:39:15,320
they might have experiences that when they tried,

767
00:39:15,320 --> 00:39:17,280
didn't end up well for them.

768
00:39:17,280 --> 00:39:20,160
So it really takes a lot of effort,

769
00:39:20,160 --> 00:39:22,160
not just empower people by saying,

770
00:39:22,160 --> 00:39:24,800
hey, you can do it and you should do it,

771
00:39:24,800 --> 00:39:27,680
and you're the best person to make that decision,

772
00:39:27,680 --> 00:39:32,680
but to actually convince someone and show them

773
00:39:32,680 --> 00:39:37,360
and give them the opportunity to have experience

774
00:39:37,360 --> 00:39:39,880
with making these decisions,

775
00:39:39,880 --> 00:39:42,920
to show them that, yeah, you can do it.

776
00:39:42,920 --> 00:39:46,120
So I feel like we've talked about

777
00:39:46,120 --> 00:39:48,520
like these sorts of ideas for years.

778
00:39:48,520 --> 00:39:53,400
And it took us years to somehow something changed

779
00:39:53,400 --> 00:39:55,520
and it kind of clicked.

780
00:39:55,520 --> 00:39:57,580
And like we made some process changes,

781
00:39:57,580 --> 00:39:59,680
talked to people, explained it to them,

782
00:39:59,680 --> 00:40:02,000
explained it over and over and over again

783
00:40:02,000 --> 00:40:03,820
until they got it.

784
00:40:03,820 --> 00:40:06,760
And they just run with things.

785
00:40:06,760 --> 00:40:09,280
And I don't need to be bothered all the time.

786
00:40:09,280 --> 00:40:11,220
you don't need to be bothered all the time.

787
00:40:11,220 --> 00:40:13,380
Michael certainly doesn't need to be bothered all the time

788
00:40:13,380 --> 00:40:17,660
with just minutia of building a new feature.

789
00:40:17,660 --> 00:40:18,660
It's fine.

790
00:40:18,660 --> 00:40:21,540
The developer can get this done.

791
00:40:21,540 --> 00:40:22,380
- Exactly.

792
00:40:22,380 --> 00:40:25,380
And even if they had initially

793
00:40:25,380 --> 00:40:28,620
when we started to encourage them

794
00:40:28,620 --> 00:40:30,020
to make their own decisions,

795
00:40:30,020 --> 00:40:31,840
even in short term,

796
00:40:31,840 --> 00:40:35,940
the first decisions weren't good,

797
00:40:35,940 --> 00:40:37,700
but it's a long-term investment.

798
00:40:37,700 --> 00:40:40,420
they learn how to make better decisions.

799
00:40:40,420 --> 00:40:43,580
And yesterday when we had a kickoff meetings

800
00:40:43,580 --> 00:40:45,460
about calendar improvements,

801
00:40:45,460 --> 00:40:48,220
we want to improve some of our calendar view in the app.

802
00:40:48,220 --> 00:40:50,460
And actually, yeah,

803
00:40:50,460 --> 00:40:53,180
the people want to have easier access to calendar.

804
00:40:53,180 --> 00:40:56,820
So the obvious thing is to add a possibility

805
00:40:56,820 --> 00:40:59,320
to have calendar in favorites.

806
00:40:59,320 --> 00:41:02,240
But for some technical reasons,

807
00:41:02,240 --> 00:41:07,240
because task list is a very complicated form of living

808
00:41:07,380 --> 00:41:08,380
in the cold.

809
00:41:08,380 --> 00:41:09,380
Yeah.

810
00:41:09,380 --> 00:41:11,980
So it's not that easy.

811
00:41:11,980 --> 00:41:20,220
But actually, Miho, who is the leader of this project, just made an idea, "Okay, what if

812
00:41:20,220 --> 00:41:21,900
we do X?

813
00:41:21,900 --> 00:41:28,300
It will take 15 minutes, and it might have a high chance to actually do the job."

814
00:41:28,300 --> 00:41:31,960
And that is exactly what we want.

815
00:41:31,960 --> 00:41:38,200
make good decisions, they are not afraid to experiment and see if even, okay, let's see

816
00:41:38,200 --> 00:41:44,480
if something that takes 15 minutes, one hour can do the job instead of doing something

817
00:41:44,480 --> 00:41:46,760
that can take one week, as you said.

818
00:41:46,760 --> 00:41:47,760
Yeah.

819
00:41:47,760 --> 00:41:54,640
You know, as I'm listening to ourselves talking about these different ideas, I think it's

820
00:41:54,640 --> 00:42:00,240
important to say that they're not exactly completely independent ideas.

821
00:42:00,240 --> 00:42:02,780
they form a coherent whole.

822
00:42:02,780 --> 00:42:05,920
I hate to use this word

823
00:42:05,920 --> 00:42:07,900
because it's overused in the corporate newspeak,

824
00:42:07,900 --> 00:42:11,600
but it's a different paradigm of organizing our work.

825
00:42:11,600 --> 00:42:13,540
It's a different paradigm of building software.

826
00:42:13,540 --> 00:42:16,220
It's like with, I mentioned lean manufacturing,

827
00:42:16,220 --> 00:42:18,040
Toyota has been doing that for decades

828
00:42:18,040 --> 00:42:19,380
and they're doing fine

829
00:42:19,380 --> 00:42:22,060
and people are having a hard time copying them

830
00:42:22,060 --> 00:42:26,280
because you can take a la carte different ideas from it

831
00:42:26,280 --> 00:42:28,380
and they help, they're interesting,

832
00:42:28,380 --> 00:42:29,940
but when you have the whole,

833
00:42:29,940 --> 00:42:32,780
it really starts to make the most sense.

834
00:42:32,780 --> 00:42:36,940
So here, notice how it plays together

835
00:42:36,940 --> 00:42:39,780
with us shipping every week.

836
00:42:39,780 --> 00:42:42,500
Like those are not two disparate ideas.

837
00:42:42,500 --> 00:42:45,860
They form a coherent idea of how you want to work.

838
00:42:45,860 --> 00:42:49,220
A developer makes their own decisions

839
00:42:49,220 --> 00:42:53,700
and we ship, we ship Chippo in small chunks.

840
00:42:53,700 --> 00:42:57,180
We don't design and build the best version

841
00:42:57,180 --> 00:42:58,820
of a feature that we can come up with

842
00:42:58,820 --> 00:43:03,260
because that takes a disproportionate amount of time.

843
00:43:03,260 --> 00:43:06,860
So some decisions might not be the best at first,

844
00:43:06,860 --> 00:43:10,660
or like, we stumble, but okay,

845
00:43:10,660 --> 00:43:12,700
we've spent a week working on that feature

846
00:43:12,700 --> 00:43:15,500
and that's it for now and it's already better.

847
00:43:15,500 --> 00:43:18,500
And yeah, this decision, that was bad,

848
00:43:18,500 --> 00:43:20,340
we shouldn't have done it this way,

849
00:43:20,340 --> 00:43:21,500
but guess what, it's fine.

850
00:43:21,500 --> 00:43:24,260
It's not like someone made some decision

851
00:43:24,260 --> 00:43:29,060
And that got us into a six month project.

852
00:43:29,060 --> 00:43:31,140
And at the end of it, we ship.

853
00:43:31,140 --> 00:43:33,660
Like, no, we've worked on something

854
00:43:33,660 --> 00:43:36,740
and sometimes it's great, sometimes it's fine,

855
00:43:36,740 --> 00:43:40,060
sometimes it's eh, but we ship every week

856
00:43:40,060 --> 00:43:43,420
and we'll get to it again.

857
00:43:43,420 --> 00:43:46,380
So this idea of, you know,

858
00:43:46,380 --> 00:43:51,380
him and developers being leaders of these feature projects

859
00:43:51,400 --> 00:43:54,280
that plays together with Kaizen,

860
00:43:54,280 --> 00:43:56,920
it plays together with us shipping every week.

861
00:43:56,920 --> 00:43:59,720
- Yeah, but the funny thing is that Kamil,

862
00:43:59,720 --> 00:44:03,960
our QA person, he was always like to test everything

863
00:44:03,960 --> 00:44:05,060
before shipping, et cetera.

864
00:44:05,060 --> 00:44:07,640
And now he is the person responsible

865
00:44:07,640 --> 00:44:11,120
for driving our shipping process every week, actually.

866
00:44:11,120 --> 00:44:12,460
- Yeah. - Yeah, so.

867
00:44:12,460 --> 00:44:18,440
So he actually shipped 46 updates last year.

868
00:44:18,440 --> 00:44:23,440
All right, I think we can slowly wrap up this episode.

869
00:44:23,440 --> 00:44:26,640
So Radek, tell me, because as we said,

870
00:44:26,640 --> 00:44:31,640
your role in our company in building current Nozbe,

871
00:44:31,640 --> 00:44:36,680
our main product right now, evolved through all of this years

872
00:44:36,680 --> 00:44:41,680
so you had a big impact on design, how Nozbe works,

873
00:44:41,680 --> 00:44:47,240
and now you have a huge impact on the whole technology stack

874
00:44:47,240 --> 00:44:50,560
and our dev tools and how the code base is organized,

875
00:44:50,560 --> 00:44:52,040
et cetera, et cetera.

876
00:44:52,040 --> 00:44:56,320
This Nozbe is really, you can say it's your child,

877
00:44:56,320 --> 00:44:58,840
but what's your favorite feature of Nozbe?

878
00:44:58,840 --> 00:45:01,680
- Well, you know, you're not supposed to have favorites.

879
00:45:01,680 --> 00:45:03,480
(laughs)

880
00:45:03,480 --> 00:45:04,640
- I guess.

881
00:45:04,640 --> 00:45:07,200
- I don't think I have one favorite feature,

882
00:45:07,200 --> 00:45:12,200
but something that I really care about deeply

883
00:45:12,200 --> 00:45:16,280
is these little power user improvements.

884
00:45:16,280 --> 00:45:19,440
So not things that every customer is using,

885
00:45:19,440 --> 00:45:22,120
but something I'm using because I use

886
00:45:22,120 --> 00:45:25,440
the new Nozbe everyday for the last four years, right?

887
00:45:25,440 --> 00:45:29,160
Well, since its inception pretty much.

888
00:45:29,160 --> 00:45:32,040
And so I love the keyboard shortcuts

889
00:45:32,040 --> 00:45:35,160
and there's more keyboard shortcuts coming.

890
00:45:35,160 --> 00:45:39,400
And then you jump to, which I think will ship next Monday

891
00:45:39,400 --> 00:45:41,360
or we've already shipped, I don't remember.

892
00:45:41,360 --> 00:45:43,680
- Yeah, it's already shipped actually.

893
00:45:43,680 --> 00:45:46,200
The one thing we didn't ship is highlighting.

894
00:45:46,200 --> 00:45:47,040
- Highlighting, okay.

895
00:45:47,040 --> 00:45:49,640
- Highlighting for search and fuzzy search.

896
00:45:49,640 --> 00:45:51,360
- So I recently made some improvements

897
00:45:51,360 --> 00:45:54,180
to the jump to feature,

898
00:45:54,180 --> 00:45:56,860
which makes it so fast and so fun

899
00:45:56,860 --> 00:45:59,760
to just go to different places in the app.

900
00:45:59,760 --> 00:46:03,740
I don't have to click around, look for tasks.

901
00:46:03,740 --> 00:46:08,160
If I remember the name and I just hit Command + K

902
00:46:08,160 --> 00:46:11,800
and I type in like two or three or four characters,

903
00:46:11,800 --> 00:46:13,360
not just the full name,

904
00:46:13,360 --> 00:46:16,800
but a few characters that match that's called fuzzy search.

905
00:46:16,800 --> 00:46:20,400
And we have this highlighting that will ship,

906
00:46:20,400 --> 00:46:21,580
I think next Monday,

907
00:46:21,580 --> 00:46:26,580
that kind of shows why the search results show up.

908
00:46:26,580 --> 00:46:28,780
And it's very fast now.

909
00:46:28,780 --> 00:46:32,120
And so, within two seconds,

910
00:46:32,120 --> 00:46:34,740
I can go between tasks and projects

911
00:46:34,740 --> 00:46:36,160
and just places it in the app

912
00:46:36,160 --> 00:46:38,560
without moving my hands off of the keyboard.

913
00:46:38,560 --> 00:46:40,200
And it's glorious.

914
00:46:40,200 --> 00:46:41,480
- Yeah, I really liked that too.

915
00:46:41,480 --> 00:46:43,800
and I started to using even more

916
00:46:43,800 --> 00:46:47,800
after your recent performance improvements.

917
00:46:47,800 --> 00:46:50,860
Yeah, I would say now it's my second favorite

918
00:46:50,860 --> 00:46:55,220
after incoming, because incoming is just a magic.

919
00:46:55,220 --> 00:46:59,240
I think that's it for this week.

920
00:46:59,240 --> 00:47:00,920
Tadek, tell me what day is tomorrow?

921
00:47:00,920 --> 00:47:02,280
- Tomorrow is a mighty Friday.

922
00:47:02,280 --> 00:47:04,000
- Exactly, mighty Friday.

923
00:47:04,000 --> 00:47:06,680
So make a, do your weekly review,

924
00:47:06,680 --> 00:47:08,240
plan priorities for next week,

925
00:47:08,240 --> 00:47:12,040
and to learn something new to have a great weekend.

926
00:47:12,040 --> 00:47:15,880
We actually recently launched a new website

927
00:47:15,880 --> 00:47:17,680
about our Mighty Friday,

928
00:47:17,680 --> 00:47:21,280
so you can check it out on nosbe.com/friday.

929
00:47:21,280 --> 00:47:23,240
And if you enjoyed this episode,

930
00:47:23,240 --> 00:47:26,680
please feel free to help support this podcast,

931
00:47:26,680 --> 00:47:28,960
either by sharing it with a friend,

932
00:47:28,960 --> 00:47:31,600
leaving us a nice review in Apple Podcasts,

933
00:47:31,600 --> 00:47:34,920
or by just signing up for our Nozbe app.

934
00:47:34,920 --> 00:47:36,160
And that's it for today.

935
00:47:36,160 --> 00:47:37,440
Say goodbye, Radek.

936
00:47:37,440 --> 00:47:39,440
Bye!

937
00:47:39,440 --> 00:47:45,400
This episode has not been created in the office, because in Nozbe there is no office.

938
00:47:45,400 --> 00:47:49,640
Your hosts were Laphroso Sowolewski and Ladosławie Trushevski.

939
00:47:49,640 --> 00:47:53,840
All the links and show notes you can find on no office.fm/36.

940
00:47:53,840 --> 00:47:59,480
The whole production process of this episode has been coordinated in a project in Nozbe

941
00:47:59,480 --> 00:48:00,480
app.

942
00:48:00,480 --> 00:48:05,680
Control is good, but trust and transparency are so much better.

943
00:48:05,680 --> 00:48:08,200
Thank you and see you in two weeks.

944
00:48:08,200 --> 00:48:15,800
Remember to have a mighty fly day!

945
00:48:15,800 --> 00:48:18,380
(upbeat music)

946
00:48:18,380 --> 00:48:20,960
(upbeat music)

947
00:48:20,960 --> 00:48:23,540
(upbeat music)

948
00:48:23,540 --> 00:48:25,420
(upbeat music)