Live data from Hacker News

How Experienced Developers Can Handicap a Lean Startup

kevindewalt.com

11–20 of 55 posts

Re: How Experienced Developers Can Handicap a Lean Startup

#11
post #6
post #4

Earlier quoted context omitted.

I agree. Good developers work fast and well. They produce less bugs and better code. That's just why you pay them more. If your experienced developer is slower at doing better, he just doesn't have the proper amount of seniority.

You seem to be missing the point of the article: producing less bugs and better code can be wrong if writing that code slows down finding out what the problem is. Speed-of-writing-good-code is an orthogonal parameter, here.

This is where I disagree.

Trying to be industrial strength for a proof of concept or an experiment is typically a junior's mistake.

Re: How Experienced Developers Can Handicap a Lean Startup

#12
post #7

Earlier quoted context omitted.

Sure -- but I don't think this is the point of the article. Let's say your ratios are correct, and you want the "t" to "d" ratio to be high in most cases, for shorter overall "t+d". The article is saying that you often want to get through each of the following lines as fast as possible: ttd (release) tttdd (release different feature set) td (release totally changed and simplified app) tttttttttttttdddd (now we unders…

Don't forget that some of those final t's are because you already invested a lot of other t's and d's into doing it the wrong way.

Sure, but

ttttttttttttttttttttttttttttttdddddddd

Startups have areal risk of running out of money, just before they complete enough d. However with

ttd,

I have a shot at cashflow with that d, which I can invest back into more (nt +nd)

Established companies dont have that risk so they can do

ttttttttttttttdddddddddddd

While for startups it makes sense to do

ttddttddttddttddttddttdd... etc.

Re: How Experienced Developers Can Handicap a Lean Startup

#13
I think the title should be "How Enterprise Experienced developers can Handicap a Lean Startup". This is really just limited experience. I once saw a very simple project list used by 20 people turn into an enterprise nightmare with 29 tables and a 3-month development cycle.

Wouldn't it seem to be a mismatch from the very beginning?

Re: How Experienced Developers Can Handicap a Lean Startup

#14
post #12

Earlier quoted context omitted.

Don't forget that some of those final t's are because you already invested a lot of other t's and d's into doing it the wrong way.

Sure, but ttttttttttttttttttttttttttttttdddddddd Startups have areal risk of running out of money, just before they complete enough d. However with ttd, I have a shot at cashflow with that d, which I can invest back into more (nt +nd) Established companies dont have that risk so they can do ttttttttttttttdddddddddddd While for startups it makes sense to do ttddttddttddttddttddttdd... etc.

For a minute there I thought you were going to do

  tddtddtdd

Re: How Experienced Developers Can Handicap a Lean Startup

#15
post #6
post #4

Earlier quoted context omitted.

I agree. Good developers work fast and well. They produce less bugs and better code. That's just why you pay them more. If your experienced developer is slower at doing better, he just doesn't have the proper amount of seniority.

You seem to be missing the point of the article: producing less bugs and better code can be wrong if writing that code slows down finding out what the problem is. Speed-of-writing-good-code is an orthogonal parameter, here.

No, it's not orthogonal. I can see it in things like the complaints about how foreign keys "caused problems" in the migrations. Generally, that means one of two things: The foreign keys were actually preventing bugs in your migrations (which even in a startup context is a Good Thing(TM), as "buggy migration" is effectively slower than "correct migration" no matter how fast the buggy migration is), or the developer was not experienced enough with foreign-keyed databases to really know how to migrate this.

Bear in mind that if you screw up hard enough there's no guarantee you can recover. Anybody hanging around this site for long enough has read at least a couple of stories about the technical error that brought the whole startup down because there weren't enough resources to recover, and "botched database upgrade" (combined with "failure to backup", which of course occurred because there was no time, we're going too fast and we're too awesome!!! to do the backup) is a prime candidate for that sort of event.

I say the latter because I've been there. Setting up foreign keys is one skill. Learning how to migrate them is another. I've screwed it up before. It does take a bit of learning. But once you learn it, you're still better off using them properly in the first place. There's also some skill in learning how to set up your database so it can be migrated; I'm not even sure how to begin putting it into words, but there's definitely some skill involved there. (I'm not guaranteeing I've got it all figured out, but I've certainly improved, which is enough to establish that it is a skill.)

They're not equivalent either, certainly, but when you say "orthogonal", you're making the claim that they are not just different (which is true), but utterly unrelated, and that claim is unsupportable. I've been deliberately spending my last couple of years learning how to build things both fast and right, and I've gotten to the point where I can spank anybody just "hacking around" after about a two-month window, after which it's all profit. In fact I'm building a system replacing just such an effort right now... well, after I stop posting this anyhow. My system isn't a glorious paragon either because as an experienced developer I know where to cut corners to get it out, but it's a lot stronger than the hack job it's replacing (and I'm doing it in less time, too).

(Part of the reason I started this learning is that I was at a startup where I did in fact make this exact error. In the end, this is not what killed it (what killed it was the management insisting that there was always just one more feature we needed before release, and then once we had that, there was just one more, repeat until out of money with no customers), but I've made this mistake and I won't make it again. But the alternative is not hackhackhackhackhack, the alternative is being more familiar with the cost/benefits ratios and picking the winners, some of which will still be "do it right", and some will not. Hardcoding the answer in either direction is wrong, as it pretty much always is.)

Re: How Experienced Developers Can Handicap a Lean Startup

#16
I think the difference between the best practices for "lean startups" vs "enterprise" is overstated. The benefits of fast feedback still apply to large projects - the only real difference is that big companies won't necessarily die from inefficiencies like over engineering. And the fact that, over anything but a very short timeframe, the right way is also the fastest way still applies to startups. Sometimes a shortcut is in order - but you can't sustain that for as long as it will usually take to become established.

Real experience teaches you how to choose the right balance.

Re: How Experienced Developers Can Handicap a Lean Startup

#17
I am having an experience that is in some ways strikingly similar to the one described.

I want to iterate on my game's level design abilities to choreograph various enemy AIs with detailed scripts - things like "this group will spawn over here and take this path over there, shooting at these intervals."

But figuring out what the best paradigm, the best data format and tooling to help me iterate on the choreography is - is a guess. I can make a bells + whistles solution, but it might not be the right one. But neither is it something that can just wait and becomes obvious at some later date - the technical solutions and the design solutions are intermingled and have to be resolved together. So even though I'm my own customer, I'm still in the "lean" stage of this feature.

So I'm trying to stick hard and fast to "stupidly simple" means of tackling each problem I encounter. Instead of making one all-powerful choreographer system I've started with the stupidest, simplest one I could think of, hedging my bet by allowing multiple systems to coexist, while making the key pieces of data I already know I need, like spawn positions and trigger targets, sit in a different layer where they're easy to edit and interchange.

Essentially, I want to ride on the "80% solution" for a while and then gradually accumulate the rest, and I think the key to making that work is to know where you are uncertain and start fencing off the most suspicious areas so that you can build the eventual shift into the architecture - not modularity so much as "this code will someday become legacy code, so treat as if it already is."

I'm really sleepy right now so this might seem more profound to me than it is.

Re: How Experienced Developers Can Handicap a Lean Startup

#18
post #6

Earlier quoted context omitted.

You seem to be missing the point of the article: producing less bugs and better code can be wrong if writing that code slows down finding out what the problem is. Speed-of-writing-good-code is an orthogonal parameter, here.

This is where I disagree. Trying to be industrial strength for a proof of concept or an experiment is typically a junior's mistake.

I agree this mistake is typical, but I would not be surprised to see a senior make it.

A related mistake is, of course, to keep a pilot project in production (usually as the core of the production project, with a variety of both functional and structural additions to keep it sort of working). This mistake is usually a result of a management decision more than development (but could be the same person).

Re: How Experienced Developers Can Handicap a Lean Startup

#19
post #10

Earlier quoted context omitted.

Don't forget that some of those final t's are because you already invested a lot of other t's and d's into doing it the wrong way.

I'm not sure what you mean -- that if you hadn't done the first three steps, you wouldn't have needed so many t's in the last? you already invested a lot of other t's and d's into doing it the wrong way But the first three steps were an incredibly valuable investment -- now you know the right problem to solve! (Maybe you mean something like this, just not sure from your comment.)

You're thinking about it from a business development standpoint in addition to a technical stand point.

I'm just talking about the technical approach. You've gained no new insight into what your business is supposed to be, you've just learned a hella wrong way of solving a technical problem. Now your thoughts are cluttered with the effort and you had to spend time unlearning the previous approach.

Re: How Experienced Developers Can Handicap a Lean Startup

#20
post #2

I guess an even more experienced developer knows when to use his best practices, and when to leave them be for the sake of the project...

Unfortunately I found that foreign keys in my Rails migrations were a constant source of headaches. Moreover, I decided to migrate to Heroku during the project and had to re-write the foreign keys for Postgres instead of MySQL. What did I learn about customers in this process? Nothing.

While I agree with Mr. Dewalt's basic message, identifying integrity constraints as something a "lean startup" shouldn't worry about for a production application containing his customers data undermines his implicit claim of data management competency - experienced database developers know how to design and organize their schema so that details like dbms-specific foreign key implementation are trivial. When foreign keys cause you serious pain relative to your other data management problems it means you're doing something wrong.

What he didn't learn about his customers in the hour at most it should have taken him to get the keys right (thus helping ensure his customers data is not corrupted by application, framework or provider infrastructure bugs) pales in comparison to the lesson he will learn if their data is silently corrupted.

Post reply on HN