Recent blog updates

Shown here are only posts related to careers. You can view all posts here.

How I applied for a web server developer, or why the fastest servers are written in C instead of C++

I realized why I was so aggressive in attempts to guide one of the latest StackOverflow questions so it would gain useful answers and wouldn't be closed as subjective. The question title is "Why are most really fast servers written in C instead of C++", and I really wondered why they are. Because that's... a bit personal to me. So, let me tell you this story.

Some time ago, after I suffered a fiasco to get a job in the USA, I thought it was a good idea to change my career to a less ivory-tower-ish. I thought about what was going on in the industry, and decided that since everything was moving to web, it would be a fruitful choice to become a web server developer. So I sent my resume to three companies that were hiring a newbie Linux C++ web server developer. Being under impression of "Smart and Gets things done" stuff, I wrote a resume that way and explicitly stated that I don't know anything about web serving.

First

One company, which is the top Russian search engine, declined me with a note "Your skills are valuable, but we can't offer you a job now" (bold is mine). I still wonder what that means: am I good or bad? Should I get more experience and try again or that's just a polite rejection? But well, alright, that's the number-one company, so I didn't frown upon that.

Second

The other company was an emerging startup. They had a shiny big office with free coffee, and a large restroom (at least that's what they said). A sign of warning was that the team failed its previous startup, but hell, why not give it a try? I was contacted by the CEO (it's a small startup, isn't it? Anyway in one Silicon Valley startup I was also interviewed by a CEO, so that didn't bother me) and was sent a sample task.

The task was to develop a C++ anti-DDOS module that drops any IP that exceeds a connection limit per a prespecified time. The task had been sent without any prior notice, and had a week-long time limit (who cares that I have plans for the week?). Period.

Well, alright. I didn't have any experience with Apache and web serving at all, so I started googling like crazy. After five hours of googling, I learned how to create apache2 modules, I devised a way to create a C++, not a C, module and I wrote a module that worked but was thread-local (apache starts a lot of threads). Essentially it was useless, but, well, spending more than 5 hours for a job application is a commonly acknowledged overkill!

I thought it did prove that I was a fast learner and a capable programmer. I sent that solution with notes how it should be improved to make up a complete module. However, "the architect was not satisfied with my code," and I was asked to finish what I had been assigned to. A note that I already had invested enough time for them to see if I was capable good enough to do the job was replied with a hilarious letter. It happens that I don't profess the company's philosophy that values result rather than capability! And unless I finish the code I'm not accepted.

The startup I applied to has, I guess, already failed; they still are not spoken about--whole google output is their SEO technologies. And they still require a registration on their website to all applicants--pathetic, isn't it?

Well, if the company values working for it for free, then it indeed is of a different philosophy than me. Good luck to these guys, I hope they won't fail many startups until they learn something.

Third

The reasons why I don't and won't apply to Google deserve a separate post, I think.

The third was another top Russian Internet company. They assigned an interview in their shiny big office with free a pong table, PS3 avaliable, as well as the usual free coffee and a large restroom! The interview started with a question "Why didn't you apply to Google?" -- apparently because of my Summer of Code participation (or because I was a candidate to replace a guy who transferred to Google from there).

The interview went smoothly, even considering that I didn't know anything about how HTTP or web servers work. After more usual questions, I was given a coding assignment. The clouds started gathering: they asked to write a C program to parse apache log and detect how many different IP addresses were in it. "Why not C++?" I asked, "it's easy and fast in C++!" The reply was that they wanted to judge my algorithm skills, not the knowledge of standard libraries. Well, OK, that seemed fair.. So, let's reckon how I did it in programming contests... *rubbing hands*

In 20 minutes the program was ready, but the remote server I was ssh-ed to suddenly went out of space, and the source somehow managed to get erased after a failed attempt to save it (Vim let me down this time). I spent another 20 minutes to code it again; it was all OK, and the interviewer even didn't see anything to criticize my code about.

The interview seemed to have gone great. The architect that interviewed me happened to come from the same university as me, was a fan of Vim as well, and sounded pleasant. We proceeded to discussing my salary, I made an offer, and there it happened.

"Okay, now I must confess," the architect started, "We lied to you a bit. All our software is actually written in C. Although we were looking for a C++ developer, you'll have to do C programming mostly."

O_O

The thing, yet unknown to the interviewer, is that I hate C; I hate it as much as I love C++. Feeling so deceived, I burst into explaining that writing in C is disgusting, since C is the new assembler, regardless of that I can do it quite well... No wonder I didn't get this job either.

Of course, I asked why they did development in C. And the answer was, "well, we sometimes feel urges to start rewriting it all in C++, module by module. But then we question ourselves—"but why?", and leave things as they are".

***

And now I also question myself—"why?" The fact that servers are mostly developed in C, I think, was crucial for my life. Perhaps, if it weren't the case, I would already have said goodbye to science and my masters studies, and would become a full-time corporate server developer. But sometimes at nights I still wonder why... why didn't they rewrite it in C++? And that's why I wanted that SO question answered.

Read on | Comments (0) | Make a comment >>


Do programmers hate their jobs?

Having been searching for a new job lately, I've read a number of advices to job seekers and hiring managers. Perhaps, they're just parroting each other, but here are some quotes that sound surprisingly similar:

Passion. We look for evidence that the applicant is passionate about computers and really loves programming. Typical evidence of this: <...>

  • Extra-curricular activities. People who love programming often work on their own programming projects (or contribute to an open-source project) in their spare time.

Joel Spolsky, Sorting Resumes blog post

When I'm hiring, I'm attracted to open source projects for one reason above all others: it shows a degree of passion. It shows that you're really not just a "clock out and forget about computing until you come in the next day" kind of guy.

Jon Skeet, 2nd comment to a "Coding horror" blog entry

3. Although this is not a universal truth, open source developers are very passionate about what they do. They have to be, otherwise why would they do it? If you hire an open source developer that has a passion for their work on open source projects, it might very well spill over into the work they do for you. Now I understand that many developers are passionate about their work (I've read Microserfs ;-) ), but passion in the open source community runs a bit hotter than it does in the non-open source communities.

Jack Wallen, "Five reasons why your company should hire open source developers" article

The problem with open source contributions is that they don’t necessarily tell a recruiter what they need to know about you. They indicate passion and enthusiasm for programming, which is a plus, but they don’t necessarily indicate competence <...>

James McKay, "Some thoughts on the role of open source experience in recruitment" blog post

And if that's not enough, keep in mind that most programmers who work on open source projects do so because they love writing software and they're passionate about their work.

Brian W. Fitzpatrick, The Virtual Referral: Mitigating Risk by Hiring Open Source Developers article

If we advance a bit, the general idea is that you should participate in an open-source development, or you're not a real man! You're not passionate! You... may not even love programming at all, you, corporate clerk?

The concept reminded me of something similar. Isn't it like suggesting that every worthy man must have a mistress as well as a wife? Which is, of course, bogus, even if one stops at the wife part, but a programmer is supposed to cheat on their job.

So why these seasoned managers, who just have to be mostly serious in their hiring-related statements, claim something that looks completely out of touch? I can't question their proficiency and experience, hence the conclusion is simple.

Most programming jobs suck.

With all the stuff heard and adopted--that programmers are lucky to have a profession that is, at the same time, fun--the reality doesn't seem to look as a fairy tale. Programming jobs suck hard and often, and you're more likely to demonstrate passion by participating in side-projects, than by doing well at work.

My job is not of the best, but I still want to go there each morning, and my eyes still burn, even after two years of marriage... Of course, sometimes we had difficulties, but we've eventually made up with each other. And the occasional urge to do something different is well satisfied by flirting with small projects, like writing this website, or participating in GSoC.

***

Do not take this post too seriously. Its argumentation is superficial and I admit I should have read, for example, that Spolsky's book ("Smart and Get Things Done") for extended explanations. I just told about an interesting observation that may be wrong. Or may not. So, do most programmers hate their jobs?

Read on | Comments (2) | Make a comment >>


More posts about careers >>