Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Surprises (collison.ie)
165 points by lackbeard on Oct 19, 2009 | hide | past | favorite | 32 comments


"Now, when coding, I try to think: 'how can I write this such that if people saw my code, they’d be amazed at how little there is and how little it does'."

golden. i've been trying to pound this concept into my head lately, and this is a very well-stated version of it.


This is in fact a very powerful idea. It's been my rule for a couple decades now. I think I learned it partly from Rtm, who has always been a kind of code miser.

Curiously enough, there is one weird edge case where this approach can bite you: when you're launching something new that you're going to publish the source of, and which a lot of people are already predisposed to hate...


A Feynman quote comes to mind :

'what do you care what other people think?'


Pedantry: That was his wife, Arlene.

(Edit: Though I guess she was a Feynman too at that point...)


OT: Seven hours of Feynman lectures online: "The Character of Physical Law" (in case you missed the announcement several months ago, Silverlight required)

http://research.microsoft.com/apps/tools/tuva/index.html


I love watching Feynman in action, but refuse to install evil MS plugins.


This has definitely given me a better way to phrase my current coding style than "on-demand" or even "lazy" coding. Basically, the way I work is: I build what's being asked for, and no more. I try and anticipate where future demands might come in, and build things such that there is "room" for those features, but I don't build them before somebody asks for them, even if they just take 5 minutes. 5 minutes of dev is also 10 minutes of debugging and 15 minutes of testing, and that adds up quickly.



"Perfection is achieved, not when there is nothing left to add, but when there is nothing left to take away."


100% agreed, been over engineering things for too long


One gotcha is that to truly making the code concise also can be over-engineering. It takes a phenomenal amount of work to really understand something, well enough to make it as simple as possible.

And then you release it and discover that the problem is a little different from what you thought, or you solved the wrong problem. It wasn't that you were stupid, just that you didn't have the data that can only come from outside yourself.


The first point hit home big time. When you're doing a startup you feel like every day is precious and the tide of change is racing along impossibly fast. It's healthy to remember that the world doesn't reinvent itself every month. The problem you're working on now will probably still be relevant in 1-2 years.


It's true that you rarely have to work fast because the world will leave you behind otherwise (though that has occasionally been the case with startups we've funded). The reason you have to work fast is that your initial idea is probably wrong, and you have to iterate till you get it right.


Plus you are probably in the process of running out of money and how long you get to tackle the problem(s) has more to do with cash flow than the state of the world.


The site I had the idea for three years ago still hasn't been made. A friend and I are ambling along getting it launched, but there's no particular drive. We figure if it hasn't been solved yet it won't be this year either.


What's the idea?


Coming soon-ish. ;-)


That also depends on the problem you're trying to solve. In a year or two there might be multiple solutions already and yours will be "yet another" one even if good but commercially not as successful. It's good to have these calming posts but deep inside there will always be anxiety and a fear of "missing the boat".

Timing your product/service well is one of the many things you have to get right to be successful.

And to get a head start by releasing early won't trigger the sleeping competition to overtake you in the early stages. You'll be the first and you can change along the way...it might be the wrong approach to solve the problem and you can have invaluable feedback along the way.


True, not every month, but every so often. It's more like punctuated equilibrium. In between, you might have something like 10-15 years.


How slowly things change.

depends on the context. for huge macro level projects e.g. iPhone reshaping cell phone industry or FB having Google size revenue, ebay's network effects being broken, that all takes time.

but in the same time period (past 2.5 years) a lot of things have completely changed. FB platform has gone from launch to supporting companies that could IPO (and made a whole load of single developers v rich). social gaming has gone from scrabulous to now posing a credible threat to the entire console gaming industry. the wii destroyed the xbox and ps3 within its first year of launch and now sells more than both of them combined.

i'd argue that it's the faster moving trends that impact startups and startup opportunities more than the slower moving macro trends.


+1 for paying attention to international customers

For our ecommerce startup, we did nothing as far as internationalization goes other then offering to ship our product outside of the US and Canada. We were amazed at the response we got and it was one of the factors that helped us get cash flow positive very quickly


I have a lot of concepts, I'm still narrowing down and going through in terms of what I'm working on next. Time and getting going is a big source of anxiety. This post helped calm that down a bit. Worth the read.


what about prototyping smaller pieces? - its a good way to clarify your thinking, try out the tech, and come up with new ideas.


I really think through the concepts. Usually dont go as far as the coding. Lots of mockups, design, specs, and sometime even database design.


For a web app, what is the least painful way to achieve internationalization? What language/framework would you use if you were writing a fresh one from scratch?

I had tried to convert a php web-app to handle utf8 correctly through and through a few years ago and gave up after a lot of pain. Is life any better now? Any guides/resources? Is life in ruby or python frameworks significantly better in this respect?


I've always done it with MS stack. ASP.NET, SQL Server etc all seem to handle unicode correctly (as long as you don't expect your users to still be on IE6!).


With PHP / lamp stack utf8 is reasonably well supported.

hmm maybe 'supported' is misleading - its a melange of hacks, but you can get it done, certainly.


Niche. For a startup or mISV, catering to a particular internationalization locale makes a lot of sense. But I think you'd need some expertise in that locale, e.g. be able to speak the language, for support, and know the customs and conventions.


I would worry about trying to specialize in internationalization. It can be a lucrative market, and things like iphone apps are relatively easy to do. Trying to aim for the international audience, however, can be deceptively hard.


Surely the biggest surprise was auctomatic being acquired? and not seemingly for the product but for the team. :/


>and everyone was talking about Twitter.

Back in 2007, twitter's userbase was smaller than 4chan's and it wasn't nearly as well-known. In 2009, they're now bigger than MySpace. These graphs should show the difference clearly:

http://www.google.com/trends?q=twitter%2C+4chan&ctab=0&#...

http://www.google.com/trends?q=twitter%2C+myspace&ctab=0...


"...a good product is so much more important than first mover advantage"

couldn't agree more.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: