One Way to Get a "job" With an Early Stage Tech Startup

Kristina Chodorow dropped some wisdom a while back on "How not to get a job with a startup." Head on over there and read up cause Kristina knows what she is talking about and has the mega tech chops to back it up. I'm gonna try and expound from the perspective of someone that has been and is being recruited by startups among others but I want to talk specifically about startups here. Specifically, I want to talk about being employee #1 - 12 or so. Ok, here we go, in no particular order.

 

Don't be in need of a "job"

If you want to get a startup "job" you generally already have a job or you do not need one; like say, you're in school now or you're a trust fund baby or you're a trophy spouse and they got bank and/or big heavy bags of coin to keep you posh. Not needing a job automatically puts you in the driver's seat and allows you to be selective. It also lets you appropriately weed out the better opportunity from the less better ones. 

Why "job" in quotes? Well, cause we aren't really talking about a "job" in the traditional sense. What we are talking about is an opportunity. A great opportunity. An opportunity to work with something you are interested in or passionate about. Something where you look forward to tomorrow and not to 5 o'clock. Those kinds of opportunities are out there and they can happen to you. Just be ready for it.

 

Don't be a douchebag

When you are working in a startup what you are really doing is spending a significant amount of time with other people. These people need to want to spend time with you. Nobody likes having to spend the day with a douchebag. Don't be a jerk, don't be mean to people. Don't think your shit don't stink cause it probably does. Be open to ideas that are not your own. Learn to accept constructive criticism. Be a "team player." If you are in the habit of reflexively saying things like "that's not my job", then maybe a startup is not for you. Cause in a startup you'll probably be asked to do a lot of things that were never itemized in a job description just because there is so much to do and not enough people to get it done.

 

Find some tech you like and are interested in

This is kind of critical. Remember, you are looking for an opportunity, not a time clock to punch. Find something, anything you are passionate about and dive into it. Eat it up. Devour it. Cause when you find that something and someone is actually paying you to do it all of a sudden it ain't work anymore. It's a good time and it's fun. Remeber, this is an opportunity. Not a "job." Example, if you hate Java and gc on the jvm gives you hives stay out of a Java shop. That simple. Cause you ain't gonna like it and it will show in many, many ways.

 

Participate in the Community

Like Javascript? Python? Erlang? Networking? (BGP not cocktails) Find your local meetup group and start going to meetings. Find an open source project on github or wherever and grok that code. Fix a bug. Join the mailing list and IRC channel. Answer questions. Be helpful. Other people are desperate to find someone like themselves that they can bounce ideas of off and talk shop with. Go out there, they are waiting for you.

 

Write

Presumably you have found something you are really interested and passionate about. Well, talk about it. Get a posterous or tumbler. Get a twitter account. Get on HN or Reddit. Participate, write. Maybe you get so good at something that you can put a slide deck or demo together. Then you can give talks at your local meetup. Offer the meetup organizer a topic. Organizers are always looking for people to come and entertain for 40 minutes or an hr. Nothing says you know a subject like being able to talk about it and "teach" it to someone else. 

Let's say you're not a good writer. You're in luck! Take that function you just wrote and comment it up. Build a blog post out of a teardown of a function you found in some open source code somewhere. This will get you thinking about how to convey your thoughts and your opinions. Think of it as writers' training. The code is the the bulk of the post. You are just adding a bit of extra here and there. Before you know it, with enough practice, you'll wan't to go back and rewrite your earlier posts because you will have come so far with your new writing skills.

 

 

Now, if you've done those things and done them well enough, in truth, the jobs will come to you. Ya that's right. Think about that for a second. Let it sink in. You know all that stuff you did? You know what that is? It's your resume. Writing about all you've done builds a rich history of your interests and your strengths. It lets an employer get a feel for you before the first email. What it won't work for is for an established company. An established company has an HR department. An HR department needs you to fill out a form and submit a resume. If you want to do that there are lots of other resources out there to help you along that path. Again, if you've done your part you are going to get contacted directly by the founders, CEO, CTO, CIO, VP of Engineering or other like positions who know what they need, are aware of what you can provide and know that you are a good fit for them. A one page resume becomes a formality but not a requirement. I couldn't tell you when I updated my resume last.

As it stands, you could read this and say to yourself "ya, but in this utopian future of awesome opportunities, I am still waiting for said opportunity to knock on my door." Fair, but now lets talk about being proactive. By engaging with the larger tech world through participation and writing you will quickly find out about the various opportunities and new startups sprouting up all over the place. You will be able to discern an interesting situation when you see it. Let's now couple your tech skills with another passion. How about travel or healthcare or sports? If you look around you will see that there are people trying to apply technology to every possible endeavor to make it better, more efficient, more entertaining. In short, more competitive and attractive to customers. Look at a lot of the YC companies. A raft of them are not pure tech plays. They are a new breed of company where technology is central to changing the status quo. The future will be built by these companies and if you want to be at a startup this is the kind of company you will be at. Take your skills and drop an email or a tweet or a dm or a prvivate message directly to someone at the company. Remember, a startup does not have an established corporate barrier to navigate. Send a message straight to the top because in a company with less than 20 people there are no elevators.

The Coming Twitter Monoculture and Why It Is a Mistake

The other day Ryan Sarver pushed a note on behalf of Twitter to the Twitter Development Talk Google group. The missive goes on to outline the reasons that Twitter wishes to limit third party clients from participating in the Twitter ecosystem. My kneejerk reaction, like most early Twitter adopters, is that this is a short sighted, premature money grab. It also is a further breach of trust amongst the developers who have worked to expand the reach of Twitter since the very beginning. Obviously all of those are true, but I am more concerned about a few things that I feel are getting lost in the mix. From my perspective it is pretty clear that the sort of service that Twitter provides presents a high value to society. Whether with or without Twitter, the ability to personally broadcast messages to the public is a feature that a growing group of people do not want to do without and are better off having. 

Before we go any further I am compelled to draw your attention to a bit of head tilting hypocricy. You know, my Ma grew up in and eventually escaped from Communist Russia, aka. The Swirling Pool of Dreck. Her stories and the fact that because she escaped I am a freedom loving American (not that Americans have a lock on loving freedom) have endowed me with a finely tuned bullshit/authoritarian radar. When I read things like 

"We’ve grown from 48 million to 140 million tweets a day"

and

"According to our data, 90% of active Twitter users use official Twitter apps on a monthly basis"

juxtaposed with 

"our user research shows that consumers continue to be confused by the different ways that a fractured landscape of third-party Twitter clients display tweets and let users interact with core Twitter functions

resulting in

"If you are an existing developer of client apps, you can continue to serve your user base, but we will be holding you to high standards to ensure you do not violate users’ privacy, that you provide consistency in the user experience, and that you rigorously adhere to all areas of our Terms of Service."

my bullshit warning starts dinging. Well, like, which one is it? Are you wildly successful or are your users having trouble figuring out how to tweet. And who are these "consumers" who can't figure this stuff out? My father has a hard time with email but you don't see me bitching at GMail to fix their "client app." 

In toto, with one fell swoop this latest policy proclamation has, for all intents and purposes, killed off innovation in the client space, aka. pwned. What if AT&T said that if you wanted to make phone calls you needed to use their phones the way they want you to use them. Oh wait, they tried that. Had AT&T prevailed perhaps we would forever be saddled with the rotary phone of yore. Now, Twitter is no AT&T and 140 character tweets are no phone calls. Yet. Twitter is fast becoming an important part of modern day communication. As it stands, governments are using twitter to communicate with citizens. I can tell you that 311nyc and nycasp are quite valuable to me. It was the legion of third party developers that created the compelling and broad reaching applications that enabled people to "dial in" to this new medium. Which future flavor of third party applications will Twitter deem "core" to their business? Does Twitter have a lock on innovation? By definition, the vast majority of the smartest, most innovative people in the world do not work for Twitter. Killing the communal comity as Twitter has is, in my humble opinion, an exchange of relevance for irreverence. 

All this which-client-should-I-use nonsense aside, lets get to the meat of my beef with Twitter. The most glarring affront to this nascent method of communication that this policy declaration has enabled is that Twitter itself now becomes a monoculture ever more easily censored, metered and controlled. As we have seen repeatedly, those in power wish to limit communication. One of the most impressive long lasting technological achievments that Twitter popularized is the concept of third party proxying or rebroadcasting of data. This is not a new concept but I think the way that Twitter employed it is one of the largest uses of the method in an end user application. Instead of having to directly interact with http://twitter.com one could use an intermediary to interact with the same data. In order for a beligerent government to censor Twitter they would need to block Twitter and all third party access points into the system. Obviously, it is far more difficult to block all third parties than it is to block a single provider. And I think it has been the case that Twitter has proven to be incredibly resilient in the face of direct opposition precisely because of their convivence with third party developers. Further, I think it is this exact method of proxying, rebroadcasting and relaying data that will play a major role in circumventing censorship in the future.

At the end of the day, Twitter doesn't need to do anything other than what is best for themselves. I submit that this move is ultimately not in their best interest. I know it has stoked the ire of many in the technology space (raises hand). Many of whom have the knowhow to do something about it. And a few who may have the brass to put together a compeling alternative. If Twitter wants to be bigger, have more users, be more influential and interwoven into peoples lives they will inevitably need to give up more control and be more open or face competition or worse, perhaps government regulation? But in the end, Twitters' lasting impression on civilization will be that it validated the model of the service they pioneered. It is my opinion that if Twitter continues to close ranks, become more closed than open, we will see compeling alternatives that will ultimately displace Twitter as the only game in town when it comes to broadcasting short missives.

This has been a Public Service Announcement. Carry on.

The world is awash in Javascript, but not everyone is speaking the same dialect

The Background

Recently I've been spending a fair amount of time hacking away in Javascript on the improbable node.js. As I've gushed, my preferred stack of choice nowadays is Redis, node.js and Riak. One great thing about this arrangement is that both node.js and Riak speak Javascript natively. Considering that Javascript is the lingua franca of end user browsers everywhere you can imagine a situation where being able to develop in Javascript throughout the stack could be a compelling proposition.

With visions of one language to rule them all running through my mind I set off to remake my world of applications in a new image. A better image. The transformation from a hodgepodge of languages goes smoothly. Synergies are being realized as functions get packaged for reuse in different environments. Alas, all is not well in the Shire. I've run into a snag and it is somewhat interrupting secondsies. 

The Problem

Middle-earth aside, it turns out that all Javascript engines are not created equal. Beyond specific performance differences between the various Javascript implementations there are also subtle differences in feature support. In my humble opinion, nowhere is this more glaring then in date parsing. In an era where you are executing javascript in three separate environments - browser, middleware and database - and potentially against three different engines, you need to concern yourself with the details. On the client end your user can be using any of a number of different browsers all with their own Javascript engine and version number. If you are using node.js your engine is v8, Riak uses spidermonkey as its engine. Do not be lulled into a sense of security due to the fact that you are using one language throughout. In some instances you may as well be in two completely different languages. Ok maybe that's a bit much, but let us take a closer look.

Here is a picture of a Date.parse() test I ran on the three major browsers, chrome, safari and firefox on osx snow leopard and the code used to make it happen. It's clear that v8 has the best date parsing support, but I'll let you be the judge.

chrome, safari and firefox

What I'm doing here is running an array of different date and date/time strings through Date.parse() to see which date/time formats a given engine will accept. If an engine can successfully parse a string it will return an integer, if not it will return NaN (Not a Number). This integer is the date/time represented as the number of milliseconds since Jan 1, 1970, aka. the epoch. Obviously this won't work for dates older than Jan 1, 1970 but I'm mainly interested in present and forward dates. Run the code for yourself, feel free to add any formats you are interested in and take a look at the results. After you are done being all 'WTW' about it come back. Ya, this sucks. This sucks... hard. But, like, why... specifically. 

As it turns out computers can sort all kinds of stuff, strings included. However, what you'll find is that string representations of dates like Jan, 1 2011 won't sort the way you want them to... you know chronologically. To skip that problem you need to convert said date into an integer - which computers also have no problem sorting - yet this time the sorting will mean exactly what you want it to mean. For example, this is an issue in Riak when you want to map/reduce over a range of keys and then do interesting things to them based on dates contained therein. I talk about sorting by date in Riak in a previous post.

 

So now that we know our date parsing is all out of whack what can we do about it?

If your application calls for date conversions do yourself a favor and do it in your middleware - node.js, python, ruby, what have you - and ship integers out directly to the end user and to the database. Centralizing your parsing will ensure that all your parsing is being done under the same rule set. All javascript implementations will be able to go from an integer to a date like so:

new Date(integer)

This will eliminate the vagaries of conversion in multiple environments. Sure, a lot of these headaches can be curtailed by controlling the date format before it enters your system but sometimes it is just out of your control. Minimize the number of places in your application for discrepancy and ship data around your stack in a format every language implementation can understand.

If you know of any other interesting gotchas between the various Javascript implementations please share them in the comments.