Live data from Hacker News

How Experienced Developers Can Handicap a Lean Startup

kevindewalt.com

21–30 of 55 posts

Re: How Experienced Developers Can Handicap a Lean Startup

#21
It's always the developer's fault eh?

Marketing: We need these features now to close $1 mill deal Dev: but... but... we can't implement them in 2 days... we need more time Marketing: Go figure out something...

Marketing: Remember that Y features we asked last month? well, sorry, the customers decided to go with X... Dev: Uh... Uh...

Perhaps once in a while we should switch side: hey management/marketing/sales/CEO, do whatever you need, without modifying our software, to close out deals and to grab huge market share... go figure out something...

Re: How Experienced Developers Can Handicap a Lean Startup

#22
The problem here is that the devils are in the details.

Should you use small variable and function names because they are easier to type? Throw away all error-checking because without customers errors don't matter? Or as this article says, perhaps toss out FKs because they might be difficult to refactor?

Trying to make the argument that it's one way or the other is really taking a very complex decision and boiling it down to comic-book level. You need to do enough of The Right Thing in order to make it to your first value inflection point, not just whatever it takes to score a couple of dozen freebie users (although every user is awesome!) Without some idea of where you are in your startup process and what your next value point is, you can't make those kinds of decisions. They're weighted choices.

Look at it this way: assume that you hacked something together doing almost the "wrong" thing every time and ended up 2 months later with a couple of hundred freebie users. Perhaps a dozen or so are even paying for your code, say ten bucks a year. But guess what? Your income won't support the amount of maintenance you have to do on your sloppy code, and customer growth is inadequate to pay for anybody to help you out. Somehow the bills have to be paid, and instead of sales and growth you're spending a large portion of your time as "database garbage man"

So you're stuck with crappy code and not enough resources to maintain the customer base you currently have. It's called "getting upside down" in a project. Not a happy spot to be in. (And it can happen without the lean code problem)

The best scenario is where you make the conscious decision to do a few quality items even at the expense of customer growth for a few days or a week or two and then consciously make the decision not to do a bunch of other things because the hit is too much.

It's complicated.

Re: How Experienced Developers Can Handicap a Lean Startup

#23
So basically the author is saying that experience says foreign keys are good, but in practice foreign keys make development and switching data providers harder.

Seems like an experienced developer would have written a data access layer that wasn't so concerned about how the underlying data store managed foreign keys. Almost all senior level developers know that foreign keys are a performance inhibitor and plans for eventual denormalization of data.

I'm wondering if this person is actually an experience developer or not. He starts out saying one of the problems he solved would be to “figure out a way to speed up the data processing”, yet he doesn't understand how foreign keys play into this and had to work around normalization?

I also wonder exactly why it took so long to rewrite the application because of foreign keys. I've never migrated from mysql to postgres but if the process was so time consuming to warrant a blog post like this, I really question the amount of experience this individual really has.

Re: How Experienced Developers Can Handicap a Lean Startup

#24
post #3

Solving problems TRW (the right way) almost always takes longer than quickly hacking together a solution. I would rephrase this to: Thinking about solving problems TRW (the right way) almost always takes longer than thinking about quickly hacking together a solution. Or graphically, with "t" as "minutes thinking" and "d" as "minutes doing": The quick way: ttttttdddddddddddddddddddddddddddddddddddddddddd The right way…

When trying to convince my customers to do things the right way, I often tell them, "It's not how soon we get started, it's how soon we finish."

I'm stealing this. :)

Re: How Experienced Developers Can Handicap a Lean Startup

#25
Articles such as this are what fuck up the computing industry.

If you want software engineers to be recognized as actual engineers they have to conform to a code of ethics and other standards. When the employer says "let's just cut this corner", the engineer says "NO we cannot!" instead of trying to justify and rationalise it.

I dislike the term software engineer and I think computing science would be better and more applicable. A scientist doesn't shy away from his responsibilities and he sometimes tells the truths that hurt.

We already always ship buggy code. That part is done for you. What this article advocates is going further and questioning almost everything that can lead to a proper design.

Re: How Experienced Developers Can Handicap a Lean Startup

#26
post #15
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.

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 wa…

what does orthogonal mean in this context

Re: How Experienced Developers Can Handicap a Lean Startup

#27
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.

Believing that your proof of concept or prototype won't end up in production is another junior's mistake.

Re: How Experienced Developers Can Handicap a Lean Startup

#28
post #15
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.

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 wa…

Let's see if you agree with this restatement of your post:

Fast, mediocre coders may be able to iterate really fast in order to get something out in front of users. This means that when you don't know what the problem or the solution is (as discussed in the article), they can be effective at identifying the problem that requires the solution.

But if their crummy code gets used as the nucleus of the solution (once the problem has been identified), the startup can often ensure its own doom.

This means that in successful startups, speed-of-writing-good-code and speed-of-problem-identification are strongly correlated, and therefore cannot be called orthogonal.

I agree with this & think it's a useful refinement to my thinking. Thanks.

Re: How Experienced Developers Can Handicap a Lean Startup

#29
post #4
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...

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.

Good developers are computing scientists or software engineers who think before they write code because if you don't understand the process or the concepts or the abstractions involved, your code is going to be shit.

Remember that TDD advocate who tried to write a Sudoku solver using TDD methods. He went up against Peter Norvig but that is irrelevant. Norvig knew how to think about the problem but the advocate did not. So the problem isn't how many lines of some random programming language that you can bang out and how quickly you can fix bugs in it, the problem is do you understand the problem and the solution you are creating?

Re: How Experienced Developers Can Handicap a Lean Startup

#30

The problem here is that the devils are in the details. Should you use small variable and function names because they are easier to type? Throw away all error-checking because without customers errors don't matter? Or as this article says, perhaps toss out FKs because they might be difficult to refactor? Trying to make the argument that it's one way or the other is really taking a very complex decision and boiling it…

It's not that complicated. Quality takes time.

As Greenspun said once, if we want software engineers to be treated with respect, we need to force employers to respect a certain minimum standard of quality.

Regarding your example...by releasing something badly designed/programmed into the wild and taking money from customers, you are committing fraud. It needs to be seen this way otherwise we will never be forced to take the time to create quality software.

Post reply on HN