I'm thinking more and more that lean startup is overly conservative in what it's willing to build well.
If you are a business person who does not know how to program, it makes sense to be conservative on what you build, since programming resources are scarce and expensive. If you are a programmer, the only scarce resource is your time.
I really enjoyed watching Notch program and I'm sure he enjoyed it too, but he doesn't work like that all the time or Minecraft would be out of beta. There are bugs and glitches and loads of other little things. I love Minecraft but it's frustrating, for example, that minecarts get stuck to each other when going e/w but not n/s. It's a non-trivial bug.
From watching him code and also reading about how to change the height limits in Minecraft it appears to me that he may slip into some questionable coding practices at times. I've not read the code but it left me wondering why isn't there a single global height variable, never hard code numbers! I watched him copy and paste chunks of code and then manually change variables, often missing some and then having to go back. Again, not a good idea if you don't want to introduce bugs unless you're coding for fun. Cut and paste should really be disabled on programmer's machines!
Not that I'm criticizing, I've done the same thing. But proof of concepts are far easier than finished products, even unpolished finished products.
It's fun to play with a new concept. But most of the time it's not so fun to put in the effort to polish it or keep a tight code base. In fact it's downright laborious.
Just off the top of my head when you sit down and really have to code instead of coding for fun there's time, boredom, mental effort, lines of code, language limitations, testing methods, deployment, project management and on and on that are all resources to be managed. And if you do it for yourself there's also the constant doubt nagging you.
Are you doing the right thing?
So while the glib soundbites are fun, they're very misleading, lets sniff a little reality.
If you are a programmer, it can be tough to push stuff over the finish line.
Adding the dull login system or the annoying signup page, both trivial and so mundane, are usually much harder than implementing that tricky calculation.
I do think that doing something like that challenge is an excellent way to remind yourself why you got into coding in the first place. The joy of coding. But let's not confuse it with writing a new SaaS app.
There is a difference between making something amazing and something that sells. Both are inspiring. Talented programmers can build incredible things, but that doesn't mean they will make money. Businesses can makes lots of money without necessarily being all that beautiful or elegant. The Lean approach is more about business than craft, right? The goal is different.
Your main goal is either to build software or to build a business. If you care about software craftsmanship, then your focus will be on elegant code, test coverage, etc. If you care about business craftsmanship, then your focus will be on the customer, revenue, etc.
But you still want to make sure that time is spent on the right thing. It adds no value to "go to town" for a week or two on features that nobody cares about, no matter how quickly you build them.
That's all the Lean Startup philosophy is saying: don't waste time building something that nobody cares about.
But the OP is right: it can be used as an excuse to not get anything done!
Another point I'd like to raise - If you're not introducing any new technology (just a new platform), then creating a new website or app is like starting a 'people movement.' You are actually aiming to change the culture and the way people interact with each other. When you're doing this, great programming, clear UI/UX, and a smooth functioning website are extremely important. At the same time, building the 'movement' requires passionate, charismatic, and outspoken business co-founders that can inspire others with their presence, writing, and speaking.
Absolute genuis, @rohitkumar. Thinking back to the famous Betamax vs VHS tape technology, it wasn't the best tech that won, it was the easiest to implement. Websites/platforms are the same: the winners will be have the most elegant front facing solutions (graphics, ease of use, marketing/promotion as you note) not necessarily the most elegant back end or process solution.
Time is a very precious resource. The lean strategy is especially important for lone hacker as you have only so much time. Another big factor is energy level and attention. You don't want 12 hour hacking day for a long time or burnout is the norm.
I wish I had thought it through when I saw he was live-streaming a coding session. I ignored it, and wish I hadn't.
Later, someone posted the first 3 hours of it on Youtube, and I watched that... It was awesome and inspiring. I wish I had the other 37 hours to watch the rest. (I will admit, I'd probably skim parts of it.)
Watching a master work has always been a great way to learn a trade, and programming is no different. I used to work with a guy who was similarly amazing, and I learned a ton from him in the 3 months he was with the company.
In some way notch really is a model for what a programmer should be. Still I am not sure, if I really want to be like him. I want that ability to focus on something for 2 days straight without any deviation. But living like that for many years (which is nessesary to develop so much skill I guess) is just not really a life I want to live.
I would wager that if you could maintain that focus for three days, you could probably take a four day weekend every week and still stay ahead of people who might work 40 hours but are slaves to their distractions.
I doubt anyone could maintain that focus for three days on a consistent basis. This was a speed programming contest, I do not think he routinely programs that fast.
Don't forget productivity. If you can concentrate/focus for 10 hours a day, you can work 50hours a week and have free weekends and still 10hours ahead of the average developer. If you are more productive, your output will be even higher.
Increase your productivity by improving your environment, sleep, food...I think 48hours are good to have fun/make a short travel.
Yeah. That's why I want to improve my focus to a way higher level. And actually focus is what I suck most at. I bet the only reason I get anything done at all is years of experience and some god given talent. Milk glass has more focus then me.
He worked for roughly 40 of the 48 available hours. That's a
full work week in 2 days. You also won't see him flipping
between his editor and news or chat programs.
Notch has more than one computer. Knowing that you have a couple thousand people watching your every move also helps to focus your mind.
This is also an example of someone with creative vision. It's akin to Led Zeppelin sitting around jamming for 10 hrs straight and coming up with "Good Times, Bad Times" or "Kashmir". It's a work of art and also a blessing when you know what you want to create, and you have the ability and skills to create it.
I imagine the streaming video of him doing expense reports will involve a lot more web surfing.
40 hours could be 16 hours of work followed by 8 hours of sleep and then another 16 hours of work. (I don't know if that's what he actually did.) That's essentially what you do in the last few months of an engineering program, except it's 5-7 days a week, instead of for 2 days.
1. I'm pretty sure he was suggesting, wake up right about the time the conversation starts.
2. work 20 hours.
3. get a good 8 hours sleep.
4. wake up, work till the end of the competition.
So, this is a brutal, impossible, long term kind of schedule to keep.
I think the grandparent's point was, you could schedule time before and after the event, to make the event itself bearable, perhaps even enjoyable. Code that's fun to write is just so effortless. 12 hours isn't a big deal, but 20 would be really pushing it for me.
Done occasionally, I don't think it's any problem at all. Kind of like eating 1/4 of the normal sustenance for one week out of a year is actually beneficial on many levels, despite the fact that doing it constantly will kill you.
If you are a business person who does not know how to program, it makes sense to be conservative on what you build, since programming resources are scarce and expensive. If you are a programmer, the only scarce resource is your time.