It's
very hard to build a startup; it's even harder to build
two at the same time, especially since I have a full time job. For the past few months, most of my free time were spent on coding. Let me share some progress.
My first project is
Neytap, a classifieds for room rentals—which in Bahasa Indonesia is called
kos (correct term is
indekos, although sometimes people write it as
kost or
kos-kosan). I'm aware that there are some similar websites already, but competition is always good :) It has just reached version Private Alpha and right now is under development for Private Beta.
My second project is a location-based service. I can't tell you much about it since it needs to be in stealth until certain stage of development. I can only say that, for this project, I have a co-founder.
On using new technology
Both projects use JVM-based languages:
Java,
Groovy and
Scala. I'm currently learning Scala, so I try to use it as much as possible. Groovy is used for scripting (like one-time off code) and Java when I'm stuck with Scala :D
There's an important lesson that I want to share with technical founders who, like me, like to tinker with new technology:
Building startups with technology you're not familiar with is a bad idea.
I'm not talking about quality (since you're not familiar, you might develop sub par solution), but it's all about
time allocation. The point is, every time you want to use some fancy stuff in your project, ask yourself, "How much the distraction from achieving my target (delivering project)? Will it add significant value (i.e. "worth the time")?"
I spent a significant time learning new stuff instead of working on actual product for these two projects. Knowledge-wise, it's not a waste. Goal-wise, it is. I decided to fallback to technologies I'm familiar with, and adding just a bit new stuff that I'm sure will improve my productivity.
Infrastructure setup
You can code immediately without any documentation (
URS,
Diagrams, etc), which is exactly what I did. But at some point you will realize that you need some order. You need at least an
issue tracker.
Important lesson: Use what you're familiar with and don't spend too much time setting it up. I'm familiar with
Trac,
Redmine and
JIRA, but all of them are not trivial to setup for me (
YMMV). I end up using
YouTrack. It's free for 10 users, no installation. Just download the JAR file and run from command line:
java -jar youtrack-3.0.jar 9999. This assume you have Java runtime installed,
The next thing in mind is a
version control system (VCS). You must use VCS. Use the one you're most familiar with (if you're familiar with none, then stop coding and learn one,
Git is good).
Important lesson: If you don't like to wait, make sure your infrastructure is fast. Get a good computer with enough CPU and RAM. If you work alone, setup issue tracker and VCS in your workstation (localhost). If working with team, use the fastest server-based solution. I use
Unfuddle for Git and installed YouTrack in an
EC2 located in Singapore. If submitting an issue or comitting code take too long, you'll be tempted to open
Hacker News and not working :D
In conclusion, remember not to spend too much in either "research" or setting up infrastructure. In the end, it's your code that matters.