Jun 2014

StartUp Engineering

Last summer I took a Startup Engineering course provided on by a Stanford professor . It was, with no doubt, the hippest class I have ever taken, and what I take to be the epitome of Silicon Valley. It had what I perceive to be a typical premise; start a web company by doing it. The course introduction states that it is intended to a get a typical undergraduate/graduate engineer introduced to web technologies, and the prospect of starting a business. It was a foreign class for me at the time, and here is my review of the course, one year later. The MEAN Stack The course starts with an introduction to the MEAN (MongoDB, Express, AngularJS, NodeJS) stack as a development platform. The professor says something along the lines of, This is not necessarily the best choice; they are young technologies, but I think they will be very popular in the future. Coming from AJAX-less PHP and Python GAE, this was a fun and painful shift. Everything in Angular seemed like magic, and everything in Node seemed like I was doing it wrong (because I was). Even with a bit of a jQuery background, I was not quick in picking up functional programming. Not to mention, closures had me confused. But it was perfect, because right when I thought I was getting somewhere as a developer, I was right back at stage 1, and I like to believe that I am better off for it. Linux, Emacs, Node REPL, and Amazon EC2 This is my biggest problem with the course. The comprehensive tutorial on linux commands & manipulation was great, but I still do not believe that so much focus should have been placed on this setup. I understood the point-of-view that using a fresh development environment makes for less install issues, but I believe that Vagrant may have been a better alternative. The amount of struggles I dealt with and read in the forums about improperly setup .pem keys, or improperly configured servers was quite amusing. Not to mention that asking students to sign up with credit card information for an AWS account, seems likely to get some people into serious trouble. Which I believe I recall, it did. Vagrant & Virtualbox, in my experience, seem the easier install & safer financial route. But omg the Node REPL. The professor seemed particularly interested in the handiness of the Node REPL in conjunction with the use of EMACS. He even made some point about how most great startups have come from an EMACS or VIM setup. I guess nobody can resist making ridiculous generalizations about the perks of their own text editor. But the real reason I don't seem to agree with the value of this setup, is because of my pain of getting accustomed to EMACS was never really offset with a benefit from the REPL. Node specializes in network calls & concurrency, and this is where most of my problems in Node development have come from. And I am probably naive, but the REPL has never really provided an all that convenient solution to these problems. For me, troubleshooting http requests, sockets, DB queries, etc. in the REPL never seemed all too convenient, and this is where my problems occurred. (Although admittedly it is a fantastic tool for finding my problems with closures!). Silicon Valley The course then went on to provide some practical Silicon Valley mentality about succeeding in the Startup World. Like the importance of being social, local, and mobile, and how to not let regulatory affairs hinder your startup (i.e Uber, SpaceX). The class then uses the development stack to build a crowdfunding site (accepting bitcoin), that would propel the startup, which you were never stopped focusing on, to new heights. In Summary: This was a very tremendous course which took on quite an agenda. I should not lambast it for being so rigid in its setup, because that is most of the value I received from it. And I have to give a shoutout to Code & Conquer who came out of the class, and I can't wait to have a crack at your game.