A lot of people like to pick my brain on technical things related to early stage startups, e.g., what framework to use, how long will it take to build an app or a website, should I hire or outsource. I decided to organize my answers to the most common technical questions in this post:
- Don’t outsource your core product. Outsourcing to a digital agency is the best way to spend your money fast and usually fruitlessly.
- Use frameworks, don’t write trivial things like URL parsers from scratch.
- Use available solutions to your none-core components. Things like: CMS, blog, analytics, landing page, forum, version-control, bug-tracking/customer feedback, project management, etc.
- Use PaaS or IaaS. Don’t use IaaS unless you really need to, for example when PaaS becomes cost prohibitive;
- Make mobile your first initiative, if and when it makes sense for your business; don’t even build a website if mobile app is your bread and butter!
- Use social connect APIs for smooth user on-boarding, most of your early adopter probably have at least Facebook or Twitter accounts; don’t make them type their emails and remember passwords.
- Use the most appropriate programming language don’t rely on your geeky “guru” friend’s advice that programming language is a matter of personal preference, to go with PHP, or that Ruby on Rails and Node.js are just a fads.
- Don’t over-rely on remote developers. It often leads to miscommunication; your teams will work longer, will have to spend more time and money; also, not everybody is disciplined well enough to work remotely without social interaction and direct supervision.
- Don’t over-rely on part-time developers. It will take longer to execute, the code will be less efficient due to distractions and as a result harder to maintain and more expensive to run in the future.
- Learn programming. Business co-founders without any programming knowledge will have a hard time understanding trade-off in features and available resources; expect longer sprint meetings and leap of trust between technical and business people.
- Don’t have more that one language for your core-product on a prototype stage because code is not an asset, but a liability and maintaining fragmented codebase could lead to a disaster.
- Start from scratch for your core-product or refactor your code often if you or your team are still learning a language or a framework; the longer you keep old spaghetti code the harder it will be to come back to fix it later.
- Use Test-Driven Development and Pair-Programming.
- Use peers and mentors help/feedback from fellow founders, programmer friends on meet-ups and at the office.
- Involve developers in customer development process. Tech people just love to build things for the sake of building something complicated. It’s so hard to practice Lean Startup methodology, because you need a lot of self-discipline. And it’s just so tempting to go to your basement for 6 months, into your hacker/coding nirvana mode, instead of doing endless customer interview, landing pages, mock-ups, paper prototypes and face website! The problem is that you’ll usually end up with another useless app or website. I had similar a phat startup experience with what later became open-sourced project http://openList.co.
Best of the web goodies for agile web development, startups and Lean Startup startups:
- Languages and frameworks: Ruby on Rails, Express and Meteor for Node.js;
- CMSs: Drupal, WordPress;
- Blogs: WordPress, Tumblr;
- Landing pages: LaunchRock, KickoffLabs or Unbounce, more on it in my post LaunchRock vs KickoffLabs,
- Forums: PHPBB;
- Version-control: Git, GitHub, BitBucket;
- Bug-tracking/customer feedback: UserVoice, BugHerd;
- Project management: Pivotal Tracker, Asana, JIRA, Basecamp;
- CRMs: Salesforce, Highrise;
- PaaS: Heroku, Windows Azure, Nodejitsu;
- IaaS: Amazon Web Service, Rackspace and Joyent.