I’ve been thinking about writing this post for a long while, to be precise ever since last year’s PHP conference in London. At the conference Nikolay Bachiyski did a very inspirational speach on how they manage WordPress. After the speach at the Q&A two, about 18 years old guys were started to ask him questions about scaling, deployment tools, testing tools and similar stuff. I remember thinking: “Man, our industry is in trouble“. Let me explain why I think this:
They looked like some university students who probably working on their own project (which obviously a good thing). I strongly think those guys shouldn’t think about such matters (unless they are actually working for a company, but I don’t think that was the case). In fact IMO the worst three questions you can ask yourself while building a hobby project are:
1, How will I scale my application?
Don’t get me wrong: scaling is important, but I don’t think it is important in the alpha / beta phase of your project. I always believed in the try, fail and try again approach. Build something rough first which works. Release it. If you have enough users to crash your servers first celebrate then drink some Red Bull and figure out your bottlenecks. I think planning for scale before you have a working prototype is a complete waste of time. You will never know what your bottlenecks are and you might end up spending your time on fixing non-existent problems while your competitors might beat you.
2, What tools to use?
By “tools” here I mean both what language and what open source components to use. At the uni I had a friend who decided to make an MMORPG. He spent almost two years researching various database systems, physics engines and server side languages to use without writing a single line of code. You can guess: he never finished the game. I guess my point here would be: use the language and the tools you are comfortable with, make sure you abstract the layers as much as possible and you are good to go in the long run. Of course there are better and worse choices for the job you need the tool for but don’t waste too much time on the decision.
The company I’m working for used to be a complete PHP factory about a year ago. It’s APIs were serving about 6 billion hits per month before reaching the bottlenecks. We decided to move to Python. Of course the transition is taking some time and resources but we can afford it because we gained so much advantage above our competition by developing fast and learning from our mistakes.
3, How will I monetize?
If you are not a startup this is the worst question to ask yourself (especially in the planning phase). You are supposed to be passionate about the project you are developing and don’t care about the money. Develop something you really care about, build a good community around it and the money will come. Yeah I know, server costs, etc. Well, if you truly believe in the project it shouldn’t be problem to spend a couple of quids from your personal bank account, should it?
Did you realize that no new “Next big thing” came up in the past couple of years? I think the main reason is the “kids these days” are thinking too big. They think in corporate. If you think about it the “big things” of the previous decade were very simple ideas: “upload some videos on the internet”, “let’s aggregate some news”, “how about some inner-campus virtual dating?”. Stop thinking startup, stop thinking scale and most certainly stop thinking about money. Do something real cool what people will enjoy and scale will come and money will come