Hacker News new | ask | show | jobs
by corysama 3307 days ago
I find it mostly depends on your personal motivation. If you somehow are magically motivated to slog through a huge amount of crap that seems meaningless and pointless to everyone else, bottom up is preferable. You'll end up in a better place in the end. But... it only works because you see the meaning and point of investing a large effort before the tangible payoff. Bonus points if you find the slog to be fun in and of itself.

Naturally, a lot of professors and highly talented experts tout this as the only way to go. It worked great for them and they don't see the point of any other path.

But, in my observation, "talent" is usually a false explanation of someone who is highly motivated by something I'm not aware of. Most "talented" people I've known were actually putting in a huge amount of work in the area.

On the other end... if the return on investment isn't clear. If the path to the payoff is branchy, windy and foggy. If you are motivated by results, not process. Top down is a good way to determine if it really is worth the effort. In the meantime, investing some extra effort in finding the payoff and the joy in the process would be wise when taking this approach.

2 comments

Bottom up may require a different learning ability. You read something, and you don't have a mental hook to hang it on yet, because you don't have any idea of the overall framework. So you have to be able to leave it hanging in midair for a while, until you learn enough of the higher-level structure to understand how it fits.

I used to be better at that when I was younger...

I think you have that backwards. Bottom up is about the composition of already understood pieces into more powerful ones (the utility of which is obvious due to solving limitations/ inconveniences inherent in the previous layer).
Also don't forget about feasibility.

Whether you start bottom up, or top down, your design may run into performance problems at some point. In cases where this is likely, it is better to determine key components, test their performance, and run calculations.