I hate interviewing on both sides of the table. It’s uncomfortable, time consuming and generally awkward for the candidate and the employer. Despite all that, I consciously make an effort to apply for jobs at least once a year to (A) see who are the hiring employers, (B) see what type of candidates the employers are seeking, and© try to improve my skills as an interviewee.
In the land of Silicon Valley and San Francisco, the landscape of employers and candidates has changes constantly and in large ways since I moved to the Bay in 2004. TechCrunch and other Valley blogs also cover which companies got funding and what they are doing. Cool, that covers objectives (A) and (B) handily.
Unfortunately for me with point©, my skills as interviewee have remained woefully the same: crappy. I regularly flub code challenges and brain-teasers in spectacular fashion. In fact, aside from HTML/CSS quizzes, I doubt I have ever successfully solved programming challenge or brain-teaser without copious hints or taking twice the time allotted to figuring it out.
After 7 years of awkward interviews — staring at whiteboards without half a clue of what I have been asked to solve — something dawned on me: in some cases (or many cases, I hope) I was interviewing for the wrong position! This isn’t just a cop-out to make myself feel better. ENGINEERS are different from DEVELOPERS.
ENGINEER vs DEVELOPER
A job title can imply distinct and obvious differences in the requirements and expectations for a person of a given title. This is probably very obvious when you hire a “PLUMBER” or see a “DOCTOR.” There are finer differences, such as licensure, that distinguish between a “COMMERCIAL DRIVER” and a “DRIVER.” The distinctions for “ENGINEER” and “DEVELOPER” are much blurrier. For years I have been using the two terms “ENGINEER” and “DEVELOPER” interchangeably and synonymously. There are, evidently, distinctions between the two words that I never realized. Distinctions which, had I known them earlier, would have prevented a lot of the pain and suffering for both myself and my inquisitors.
According to an article written by the IEEE computer society engineers:
“Of most importance in distinguishing engineering from development … are the words ‘systemic, disciplined, quantifiable,’ which derive from core engineering principles based on science.
... [D]evelopment and engineering are based on opposite tenets. Engineering is scientific, quantified, and disciplined, whereas development is random, not based on metrics, and stays away from engineering discipline. In some businesses, hiring managers and HR departments create an incorrect context when they give a software developer the title of software engineer. This is what causes confusion.”
Well, now we’re getting somewhere! For years I have been applying to BOTH “ENGINEER” and “DEVELOPER” positions. In fact, I would estimate I have applied to “ENGINEER” more frequently simply because there are more employers looking for ENGINEERS, not DEVELOPERS. This doesn’t excuse the fact that I have flubbed plenty of DEVELOPER interviews. It does, however, explain some of the more heinous interviews that I have had the displeasure of participating in.
Not an ENGINEER. Evidently not a DESIGNER.
One of the absolute most memorable interviews I’ve had in years happened while I was trying to get into Interaction Design and Information Architecture. I had an interview in the upper-Market area (Market & 6th or something like that). This particular company did team interviews. The first interview involved two engineers (or developers?) and one designer. The engineers sat at a table with me, meanwhile the designer sat off in a far corner by himself. They asked me a few questions about what what my goals were and kind of general stuff about what type of job I would like to have. A lot of my spiel was Information architecture-related and I talked a little bit about product product specifications, wireframes, thumbnails, storyboards, and reports that I had written in grad school.
The whole time I was speaking, the designer in the back was crossing and un-crossing his legs and fidgeting around a little. After a while he asked me something like “What is your Photoshop experience?” To which I replied I had relatively little. The designer then stands up, points at me, and shouts at me from across the room. “I am a designer. YOU are NOT a designer!!!” He storms out of the room and slams the door behind him. I was definitely shell-shocked by this outburst and I gave the engineers a “what the hell just happened?” look. They looked at me, shook their heads, and just said “Oh, don’t worry about John. He’s gets kind of angry about product people because he used to be a designer at Oracle.”
This interaction stuck with me because I realized at that point that when people want a Designer, they generally want someone who can make something look pretty. If you can storyboard and do UI design and write-up personas, there is probably a little bit of a different job title for that. It would seem that when small teams want a “designer” they want a visual designer more often than a wireframe person.
If only an ENGINEER would have had the audacity to stand up and tell me “YOU are NOT an ENGINEER. YOU are a DEVELOPER!!!” Things could have been a lot simpler these past few years. The expectations from an engineer, according to the IEEE article, more disciplined. This doesn’t excuse the fact that I can’t code on a whiteboard to save my life because most companies will ask for code from anybody that they hire to write code. I know I’m terrible at whiteboard code and if I can’t do your challenge then awesome. We’re in agreement that I’m a crappy coder.
However, when people ask me about sharding, network performance, TCP/IP protocols, or caching strategies then I will know that they are in search of an ENGINEER and that I am not the person they want to hire. At which point I can confidently say “Hey bro, that ain’t my cup of tea” and end the interview before they have a chance to ask me any god forsaken brain-teasers or code challenges.
Places that I think distinguish Engineers vs. Developers.
When I first moved, the hot name and game was Google because it had just IPO’d. MSN Live (a.k.a. Bing) and Yahoo were scrambling to improve their search because Google was eating their lunch. Local search and local directories have also been a big part of MY life but let’s just call it search. At the heart of web and local search are DEVELOPERS and ENGINEERS.
Search engines probably hired a lot of math and computer science geniuses as well as people who could write a good web crawler. I don’t know anything about how this stuff works so I never considered myself in-the-running for any of it.
YouTube and its dozens of lookalikes and also-rans. Who would have thought that you could stream petabytes of video data everyday to the world? DEVELOPERS and ENGINEERS figured it all out.
Video seemed to be all about infrastructure. Where do you store enormous amounts of data that takes up a lot of space? How do you deliver video dependably without a lot of buffering and jerky video? ENGINEERS had to have figured that one out. I guess the DEVELOPERS made the Flash video players. Infrastructure and Flash — things I know nothing about.
MySpace was king for several years and managed to sell at just the right time. Eventually Facebook and Twitter came on the scene with better user experience and smarter DEVELOPERS and ENGINEERS. MySpace has since been relegated to relative anonymity.
Facebook and Twitter generate massive amounts of user-generated content and also have immense social graphs. These problems with scaling and computation are probably best left in the hands of ENGINEERS. However, Facebook also has lots of cool API stuff, user interactivity, and things that work off of the social graph. I think DEVELOPERS can handle a lot of that.
Social media apps
The Facebook API spawned dozens social media “App farms” that scrambled to make as many crappy Facebook apps as possible in order to grab user share and probably harvest personal information. RockYou and Slide come to mind. How do you make hundreds or thousands of shitty Facebook apps really fast? Lots of DEVELOPERS in the tech equivalent of a sweat shop.
Apple created the iPhone an incredible smartphone and mobile craze especially Android and iPad. With the smartphone app market only four years old (iPhone launched in June 2007), it is still in its infancy compared to the web. Of course the gold rush is probably over but there is still a demand for DEVELOPERS and ENGINEERS overlap a lot here. They continue to improve and build the software.
Casual games have been around for a long time (i.e. Bongo). However, the sheer amount of people wasting time on Facebook, iPhone, and Android has exponentially increased audience size and thus the number of man-hours that can be frittered away on games created by Zynga, Kaboom, and Playdom. Consequently an exponential demand for DEVELOPERS (and game artists) has developed to churn out shitty games. While ENGINEERS work on providing the development tools and scalability to allow the games to be used by millions of folks around the world.
In the end, I would guesstimate that Engineers have an easier time finding a job because they can do the same job as Developers. However, as a developer, I think our job is more fun!