"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...
OT: Seven hours of Feynman lectures online: "The Character of Physical Law" (in case you missed the announcement several months ago, Silverlight required)
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.
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.
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.
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.
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!).
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.
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:
golden. i've been trying to pound this concept into my head lately, and this is a very well-stated version of it.