Why I LOVE Working at a Startup

Disclaimer: Not all startups are created equal. This article is based on my work at Signal, which is the only startup I have worked at. However, I have read many articles and have had many conversations with others who work at a startup, and I’ve found that much of what I’ve listed here applies to those startups as well. In addition, many of these points may very well apply to small companies that aren’t necessarily startups.

After graduating from college I immediately started work at a very large, multi-national communications technology company. At the time, I liked the idea of working for a large company. I thought that it would provide room to grow, job security, and the ability to switch roles easily without leaving the company. Over the past 10 years, I have moved from a company with about 100,000 employees, to a company with about 2,000 employees, and then to a company with 4 employees. Every time I moved to a company with substantially less employees, I noticed that my job satisfaction increased.

I have never been more happy with a job that I am at Signal. And, there are several reasons for this.

The ability to wear all hats

When I started at Signal there were only 2 other engineers (3 if you include the technical co-founder who was looking to focus less on technology and more on growing the business). With only three people on the engineering team, you need to be able to work on any part of the system, at any time. Application design and development, user interface design and development, database administration, system administration, IT, etc. In an environment like this there are many opportunities to learn something new. Database administration and user interface design were not strong areas of mine, but working at a startup gave me the opportunity to develop those skills. Much more so than at company where teams are segmented based on the functional areas of the application. And, even after a year and a half, I’m still learning new stuff like crazy.

This isn’t to say that some engineers aren’t stronger than others in certain areas, and you can’t play to those strengths. You’d be foolish not too. But at this size, it’s simply not practical to have one engineer do all the UI work, one do all of the database work, and one do all of the application development.

The chance to make a really big impact

I was hired as Signal’s fifth overall employee. When there are only five people in the entire company, everybody has the chance to make a really big impact. The harder you work, the bigger contribution you get to make. And contributions can take many forms, like a newly implemented feature, providing awesome support to a customer, a new idea for a product, or a new way of resolving a problem that has been facing the company. There is no product group or customer service team at a very small startup, but the needs traditionally serviced by those roles still exist. In addition, you are able to see the impact of your contribution immediately, be it positive or negative.

You also have the opportunity to play a bigger role in how your product or service develops. If you see an area that needs improvement, a bug that needs fixing, or a gaping hole in the product that could be addressed by a new feature, it’s up to you to address it. There is no committee or change board that needs to approve the change, and no need to line up resources from the database and UI teams to help with the work. You are expected to drive the change. This, for me, is a major source of inspiration and motivation.

The ability to choose your tools

windows vs linux vs mac One of the things a software engineer likes to complain about the most are the tools they are forced to use at their company. And with good reason. Using tools that you are comfortable with can make you more productive, and quite frankly, happier. Little is more frustrating than being forced to solve a problem one way when you know you can solve it quicker, and better, another way. This is generally not a problem at startups. While you rarely have the ability to choose all of your tools (programming language for example), you will generally have the ability to choose your work machine, operating system, editor/IDE, web browser, mail client, etc. And, since you are your own IT department, there is no question that you will have root access to your work machine. These may sound like minor details to most people, but any geek will assure you how important this actually is.

The ability to choose the right technology for the job

Many companies standardize on technologies. There are many valid reasons for this. However, sometimes the standardized option makes little sense for the task at hand, and you are forced trying to fit a square peg through a round hole. This generally doesn’t happen at startups. One of the best things about my job is that the engineering team gets to decide which technologies to use after evaluating the technical details of the problem it is trying to address. One might think that a stance like this would lead to an explosion of tools and technologies in our stack, but this is hardly the case. Being responsible and professional developers, we understand that we will have to live with and support the decisions we make. So, we carefully evaluate any significant new technology before bringing it into the stack.

A voice in choosing your teammates

When working on a small team, everybody needs to pull their weight in order for the company to be successful. Bringing new people onto the team is a big deal. A single bad team member can be a cancer to an otherwise strong and healthy team. Therefore, people interviewing for the company talk with everybody. This may be a bit overwhelming for candidates, but I think most appreciate how closely we protect our team dynamic. Now, this isn’t to say that everybody “interviews” each candidate. Our VP of marketing isn’t going to ask a candidate for an engineering position to solve a coding problem on the whiteboard. Instead, a few people will determine if the candidate is qualified for the position, and the rest will determine if the candidate would be a good fit, personality wise, on the team. As an engineer, I think this is great. When hiring a new engineer, we all get to ensure that the candidate is smart, loves technology, knows how to solve problems, and will get along with the rest of the team. And when hiring for a non engineering position, we get to ensure that the person we’re bringing onto the team isn’t a jerk.

A great work culture

Nerd Campfire Startup culture is great. I’m not talking about $1,000 desk chairs or having a company masseuse. Hell, two other engineers and I were coding around what the CEO called a “nerd campfire” the other day (can’t say that I disagree with that terminology) because we currently have no desks. I’m talking about the camaraderie; eating lunch together, getting to meet each others spouses and children, chilling out and having a few drinks with each other. I think this is very hard to find outside of small company. It seems to me that most startups have a casual, relaxed, and fun work environment. Flexible hours. No dress code to speak of. Signal even has a kegerator in the office which is always fully loaded with great beer. They do pretty much anything they can to make their employees feel comfortable so they be productive.

Flexible work options

Flexible work hours are very popular now-a-days. Even at the larger companies where I have worked, it wasn’t uncommon for some people to come in at 11am and stay until 7pm or 8pm. Having the ability to fit work around your personal schedule is a big plus, and I feel it makes for a much happier employee.

Even more important to me is the ability to work from home. I live about 30 miles from the office, which takes about 90 minutes to travel during rush hour by car or train. I’ve tried not too complain too much about my commute, because nobody forced me to live where I do. It was my choice, and I’d make the same choice again. But, when I was given the opportunity to work from home, I jumped on it. Working from home saves me 3 hours a day. That is huge for me, as it always feels like there are not enough hours in the day. Working from home 4 days a week has given me the ability to see my wife and kids more often, start running, and to spend a little more time on some side projects to improve and expand my skills as a developer. Seeing my kids more often is by far the biggest benefit of working from home. Now that my oldest is in school, I barely see him when I go into the office. Our schedules only overlap for about 30 minutes in the morning, and 30 minutes at night. This is not the case when I work from home.

No bullshit politics

When there are only 13 people in the entire company, there are no politics. There is no jockeying for position. There is no posturing to give the impression that you are an all star employee when you’re really just a leech. There is no room to hide. If you’re not contributing, everybody knows it. If you are trying to exploit others for personal gain, everybody sees it.

Your opinion matters

It’s hard to make a decision that impacts the company in complete isolation at a startup. The founders at Signal always consult the team when it comes to making a big decision. Make no mistake, they have the final say. But they value the opinions of the team and constantly request feedback. This gives the employees a sense of ownership, which is great for morale and can be very motivational.


I think many of these points are the product of a few major differences between a big company and a startup. First, productivity is paramount, and anything that can be done to increase productivity is done. If employees aren’t producing at their highest level, it greatly increases the risk of the startup folding (delaying time to market or being surpassed by a competitor). Second, startups run on the bare minimum. There is no extra weight to carry around. There are no employees that need to justify their existence by adding unnecessary overhead. Everybody has more than enough “real work” to do in order to move the company forward.

Working for a startup does have some drawbacks as well, but the positives far outweigh the negatives. The comparison is not even close as far as I’m concerned. As I mentioned at the beginning of the post, each company I have worked at has been substantially smaller than the previous one, and my job satisfaction has increased with each move. While some large companies can have some really interesting problems to solve (especially when it comes to problems of scale), I’m not sure I could ever go back to working for a large company.

Yo Ho, it’s a startup’s life for me.

Thoughts on WindyCityDB

WindyCityDB has been over for a while now, and I’ve had some time to collect my thoughts about the conference.

First and foremost, this was an incredibly well organized and wonderfully run conference. Ray Hightower and the WindyCityDB team did an amazing job. The space at IIT was perfect. The food and drink was ample and tasty. And the talks were interesting and thought provoking. To top it off, all proceeds from the conference, approximately $1,000, was donated to the Greater Chicago Food Depository.

One theme that took me by surprise was the broad support for relational databases. Almost all of the speakers stated that the relational database still has a place in this new world, along side all of the NoSQL technologies that we had gathered to discuss. This is something I completely agree with, but being a NoSQL conference, I had imagined that there would be quite a bit of RDBMS bashing going on. Nothing could have been further from the truth. Everybody seemed to agree that the RDBMS is a very functional and reliable piece of software that is still very much needed. Everybody also seemed to agree that there are some things the RDBMS doesn’t do too well based on how it is designed, and that the different NoSQL technologies aim to fill this gap. Nobody was advocating their particular NoSQL database as a replacement to the RDBMS. Instead, all were pitched as alternatives, created to solve different problems.

Another theme that sort of caught me off guard was the wide acceptance of Polyglot Persistence as “the future” of application persistence methods. I say “sort of” because I was there to speak about Polyglot Persistence, which of course means that I think it can be a great tool if used properly. However, I thought it was a bit more controversial of a topic. As it turns out, there are many already taking a polyglot approach to solving their persistence needs. This was great to hear, as made me feel a little less insane for wanting to use multiple databases within a single application. Well, I could still be insane, but at least now I know I’m in good company :) Several speakers mentioned Polyglot Persistence in their talks, and I spoke with several individuals at the conference, and after the conference, who are actively using a polyglot approach to address their persistence requirements.

I also found John Nunemaker’s prediction that hosted database solutions are going to be the future of application data persistence to be very interesting. If you think about it, this is exactly what happened with web hosting. Most companies, especially small companies, now use a 3rd party to host their production environments. In fact, I’d bet that the thought of hosting your own environment doesn’t even cross the mind of the vast majority of small companies now-a-days. I can easily see how hosted database solutions, such as MongoHQ or Cloudant, could follow a similar path. You would no longer need to worry about hardware issues, scaling issues, backups, maintenance, etc. It would allow you to simply focus on your data.

Even though I didn’t get a chance to play with it, the WindyCityDB lab was a nice touch, especially for those who had never tinkered with some of the NoSQL databases on display. The lab consisted of several iMacs, each loaded with a particular NoSQL database. All of the databases were preloaded with the Stack Overflow data set. Sharing a data set was a great idea, as it gave you a good way to compare and contrast how the different databases handled the same set of data.

I really enjoyed myself at this conference, and am already looking forward to next year’s. At the rate the NoSQL movement is moving, I can only imagine what the landscape will look like a year from now.

What Will It Take To Dethrone The iPhone?

The mobile industry is exploding. In just a few short years, everybody will have a smart phone. A tiny, internet connected, mini computer right in their pocket. As each month passes, we learn more and more about what the future of this industry holds, and what the mobile handset landscape will look like. If one thing is for certain, it’s that nothing is for certain.


As it stands right now, Apple is king with consumers. Though not the first ones to market with an internet connected mobile device (the Blackberry has been around for a long time, and still holds the majority of the smartphone market share), Apple appears to be the first to really understand what the average, non-corporate consumer wants. A true mini computer. An open device that can play music, run applications, take photos, and provide a pleasant web browsing experience. And they did it in true Apple fashion, making the device extremely easy to use. As a result, the iPhone has become extremely popular with consumers, and is widely considered “the device to have”.

With the majority of people still without a smartphone, much of the market remains up for grabs. Apple’s competitors are scrambling to catch up, trying to ensure that they they get a piece of the pie. But, one very important question lingers. What can Apple’s competitors offer that would give the average consumer a reason to buy their device instead of buying an iPhone? To me, the reasons are few, and becoming fewer.

(I’d love to hear your reasons in the comments. So please, chime in.)

A comparable feature set

This pretty much goes without saying. Any challenger to the iPhone crown must offer similar features to that of the iPhone. It is very unlikely that a competing device will lure anybody away from the iPhone if it is missing a feature that is now expected to be there. The device must be capable of running apps, taking photos, playing music, etc, for it even to be considered.

A better network

AT&T’s network leaves much to be desired. Having never been an AT&T customer, I can only relay the opinions of my friends and family who are AT&T customers. However, their opinions are one in the same. I’ve not heard a single word of praise when it comes to AT&T’s network. All of my friends and family with iPhones have expressed frustration that the device they love is frequently crippled by a network that is spotty and congested.

It’s no secret that Apple has an exclusive agreement with AT&T, and that agreement has an expiration date. Rumors have been circulating about a jump to another carrier, possibly Verizon, sometime next year. The more wireless carriers offering the iPhone, the less valid of a reason this will become for not purchasing one.

A comparable application ecosystem

Competing devices will need to have an application ecosystem that is at least comparable to the iPhone’s. This is no small task. There are over 100,000 applications in the App Store. Sure, several offer the same functionality, and many are of very poor quality. However, nobody can argue with Apple’s tag line of “There’s a app for that”. There really is an application, in most cases many, for everything you could possibly want to do with your iPhone.


Given their head start, beating Apple at this game will not be easy. Google’s Android OS currently stands the best chance of challenging Apple on this front, with over 10,000 applications already available. The Android OS is open, and capable of running on hardware from any manufacturer. In addition, applications written for Android are capable of running on any device that runs the OS (for the most part). Next year is going to be a big one for Android, with several new devices coming to market from many different manufacturers. Some analysts are even predicting that the number of Android devices in the hands of consumers will surpass the number of iPhones by 2012. This will no doubt attract more application developers to the platform.

However, Android has its own set of challenges awaiting. The fact that manufacturers are free to run Android on devices with very different hardware specifications (screen size, input controls, etc) poses a major challenge for application developers. Perhaps the risk of rendering thousands of existing Android applications useless by releasing a device with dramatically different hardware specs will be enough to convince manufacturers not to do it. Perhaps Google will provide a set of Android APIs that can help application developers deal with this issue. Perhaps a set of best practices will emerge as a guide for developers looking to tackle this issue. Perhaps we’ll see something similar to the PC application market in the mid-late 90’s (and the Blackberry application market today), where only certain devices will be capable of running certain applications. Only time will tell if these issues will prevent the development of the Android application ecosystem.

A killer feature

One wild card that is always in play is the killer feature. Apple’s competitors are only one, innovative, killer feature away from stealing the spotlight for themselves. By “killer feature”, I mean a feature so awesome that when you see it in action, you say to yourself, “I need one of those!”.


Version 2.0 of the Android OS took a stab at this with the introduction of Google Maps Navigation. A fantastic feature, Google Maps Navigation morphs your mobile device into a fully functional GPS unit, complete with a synthesized voice telling you where to go, real time traffic information, and several map overlays showing you the location of everything from ATMs to gas stations. But, is this a killer feature? Frankly, I’m not sure. But, its announcement was enough to cause a significant drop in the stock price of traditional GPS manufacturers, and it certainly has potential.

An incredibly easy to use device

Making devices that are intuitive and easy to use has always been one of Apple’s strengths. Look no further than the iPod for an example of this. Competing devices will need to be as easy to use as the iPhone is to appeal to the average consumer.

How do I get my music onto the device? How to I get the photos I take off? These operations should be simple and intuitive. Motorola’s new Android 2.0 device, the DROID, is seriously lacking in this area. Several steps are required to store data on or pull data off of the device:

  • Attach the device to your computer
  • Use the device’s menu system to instruct it to mount itself as an external drive
  • Locate the files on your hard drive that you would like to store on the device
  • Copy and paste the files from your hard drive onto the device
  • Unmount the device

For the iPhone, the list of steps is much smaller.

  • Attach the device to your computer, and let iTunes do the rest

Are the steps required to store data on the DROID too much to handle for an experienced computer user. No, of course not. But, there is still a large percentage of people out there who would struggle with completing those tasks. Believe me, I know. Many are family and friends of mine who I help complete “simple” tasks on their computers all of the time. These people make up a significant portion of the market. If you want them to buy your device, then you have to make it stupid simple to use.


Apple has set the bar high with the iPhone, very high. While I can think of several reasons why developers and techies would prefer a different device, I can’t think of many reasons why the average consumer would. And, there are a lot more average consumers than there are geeks.

But make no mistake, Apple’s competitors have the iPhone in their sights. The tide can shift very quickly in this market, especially since most people get a new phone every couple of years. Will the iPhone challengers be able make a dent in the iPhone’s market share? Or, will the iPhone be the de-facto standard for smart phones? Only time will tell.

Really Cool Site Containing Java Conference Videos

Yesterday I stumbled upon Parleys.com. It appears that Parleys has been around for a while, providing podcasts of various tech presentations (audio only). However, the new version of the site, still in Beta, takes their offerings to an entirely new level. It now contains several videos of presentations from various Java conferences over the past few years. Not only is the content fantastic, but the user interface is very slick as well. The UI displays not only the audio in sync with the slides, but also a video of the presenter, giving you the full experience. The navigation options are also great, providing a table of contents and a time line for the presentation…letting your jump to a specific point in the talk. In addition, Parley’s provides information about the speaker and the talk, a list of related talks, and the ability to post tags and comments at specific points in the talk.

In my opinion, the best feature provided by Parleys.com is the ability to watch the presentations, with all of the UI features, offline. This is HUGE for me, as I spend almost two hours every day sitting on a train. Parley’s provides an Adobe AIR application that makes all of this possible. Adobe AIR is a runtime environment that “lets developers use proven web technologies to build rich Internet applications that run outside the browser on multiple operating systems”. The Linux version of AIR, still in Beta, works wonderfully. The AIR application operates just like the site, and provides some additional functionality to download the presentations for later viewing.

I’ve been spending quite a bit of time lately looking for a site like this. With the current economic conditions, I’d imagine that most companies are cutting back on the number of conferences they send their developers to. According to the site, they plan on continuing to add content. If they do, I see this as an invaluable resource for keeping up to date on what is going on in the Java community.

No Firewire Port in New Macbooks? Really?

Wow, this sucks. I was seriously considering picking up a Macbook for my next laptop. Although I’m primarily an Ubuntu Linux user, OS X is becoming quite popular as a development platform. Plus, the hardware in the Macbooks is a big step up from what I’m currently working with. I was thinking a dual boot setup with Ubuntu and OS X on a Macbook would be perfect.

What was really making me consider picking up a Macbook was iLife, and specifically, iMovie. I’ve heard great things about iMovie. Supposedly, it just works, and it’s really easy to get it to do what you want it to do. Linux has no all-in-one video editing package. Just a bunch of stand alone applications that you can piece together to get the whole picture, but that’s too much work for yours truly. And, the Windows ones I’ve tried I usually end up fighting with to get them to do what I want. So, I was really leaning towards the Mac.

But, this is a deal breaker. My miniDV camcorder will not transfer the higher resolution video over USB. If you want the good stuff, you have to use the firewire port on the camcorder. And, I would like the videos of my kids in high resolution thank you very much. It creates a much better end result to blackmail them with when they’re older and don’t like me anymore.

Sure the Macbook Pros have a firewire port. But you know what else they have? A price tag that’s $700 more than the Macbook.

Shortly after Apple’s announcement today, I was already able to find disgruntled folks like myself on the web via Google. I can only hope that Apple fixes this mistake and puts a firewire port back on the Macbook.. Until then, no Macbook for me.