Tagged: Yahoo! Toggle Comment Threads | Keyboard Shortcuts

  • Michael Krakovskiy 1:05 am on June 16, 2010 Permalink | Reply
    Tags: Beanball, corporate site, decent software developers, dice.com, Director of Back End Development, Employment, , , , HeadCount, hiring manager, , Job interview, , , , monster.com, , operating systems, , , Recruitment, second recruiter, travel sites, , VP of Web Things, VP of Web Things already explored somewhat, , Web Things, Webco Enterprises, , , Yahoo!   

    Hunting Heads and Developing Back Ends 

    I’d like to share with you a few thoughts about tech recruiting. This is not a post about how to write resumes, read resumes, ask or answer tech interview questions. Enough is written on the subject by people who are better at all of this than me. No, it’s about that email that arrives in almost every developer’s inbox about “a full-time, permanent position with a very competitive salary” for “a very prestigious company located in mid/down/up-town” which is looking for “an alphabet soup of technologies”. Half the time it’s a phone call. These happen during the times of boom and bust in the tech sector, although with varying frequency.

    Now, people who are not programmers would probably think that this is spammers or scammers who will ask for a fee. Well, there is a fee involved, but this is not scammers: every time there’s a reasonably well paying job involved. A huge number of programming positions gets filled this way.

    There’s always a shortage of decent software developers, project managers, system administrators and allied tradespeople. This was true back when I was starting my career, in 1997, but it only got worse. First of all the cost of running a startup came down from hundreds of thousands of dollars to thousands, and many talented programmers with ideas, tolerance of Ramen-heavy diet, slumming, and a little risk exited the corporate workforce to build url shorteners and travel sites for hipsters. Top notch people with kids and/or love of brightly colored furniture and fridges stocked with fancy sodas were vacuumed up by Google, Microsoft, Facebook, Yahoo and other modern Xerox Parc-wannabees. The hedge funds sucked in all those who are good at implementing complicated formulas and algorithms in code that can make a Kessel run in 12 parsecs or less.

    The biggies look for a healthy mix of specialists, but they can easily afford to hire jack-of-all trades hackers. Everybody else usually looks for a person who has proven experience with a certain “stack” – an alphabet soup of languages, operating systems, and servers. Sometimes stacks are ageless like COBOL, CICS, DB2 – even today typing it into dice.com brings up 155 results. Some come out of favor: LISP – only 16 results though. Somer are old standbys: Php MySQL Apache – 370 results: C# SQL Server IIS – 439 results. Some, like RoR are up and coming – 93 results.

    If you are relatively young(cheaper that way) and have done some work with a fashionable stack your phone will be ringing weekly with recruiter calls in the dreariest days of a tech bubble burst. If you are a specialist who deals with a particularly gnarly piece of hot tech – it will ring a few times a week.

    Now here we come to a somewhat interesting phenomenon. Most of the time the person calling is a “headhunter”. Here’s what’s happening:

    Web department in company Webco Enterprises has an opening. It could be caused by a number of things, but most commonly

    1) after gettig tired of incessant complaining of the VP of Web Things, the Bean Counter finally agreed to budget in Y dollars for another headcount.

    2) an experienced headcount who was making Y dollars accepted an offer of Y + $30,000 + an office with a door from company iWeb 2.0 and left.

    So here is VP of Web Things with a budget of Y dollars. She’s swamped with work. In the next team meeting she tells her nerds to ask all of their friends if they know somebody and offers a referral bonus. Next she puts together a typical job ad complete with technological alphabet soup and takes it to the Master of HR. The Master of HR posts it on the company intranet, on the corporate site and on monster.com, dice.com, etc. Next VPoWT goes to the same sites and looks for candidates who posted their resumes there. It’s mostly drek, and the one person who might be ok wastes a lot of her time because he has another offer for Y + $10,000 from another company.

    Now more desperate, she starts using “headhunters”. They send a couple of somewhat crappy candidates, followed by one barely ok one, followed by one who’s good enough. After a little song and dance the good one accepts Y dollars per year minus – 15% that silently go to the recruiter. The next few years he’ll be getting modest raises and maybe even a bonus or two that will not break the budget: the Bean Counter approved Y dollars, and it stays in the budget like that, and the headhunter only gets paid once.

    Now, here’s what was happening on the other end: headhunters start pounding searches into their computers. LinkedIn, all recruiting sites, internal databases, etc. They might not understand what those letters in the alphabet soup mean, but they sure can try to match them up with what comes back from searches. Then they start shooting in the dark – it’s easier to get people who are currently looking for jobs, but it’s the shallow end of the pool that VP of Web Things already explored somewhat. They start pinging people who are working at the moment – this is where the good heads are.

    Finally someone hunts up the the right head for VPoWT’s headcount and pockets the 15% of a yearly salary of that head.

    Now, here comes the interesting part: most of these headhunters who are calling are trying to line up publicly available job listings with people on LinkedIn. For instance, I recently received two emails about a rather awkwardly named position “Director of Back End Development” (second recruiter spelled it “Backend”).

    I looked it up on one of the recruiting sites (I think dice.com), and it was an old and infamous pre-dot-com-boom company that chose such a unique job title for what I do for a living. It was literally the only one with that creative title. I could have applied directly, bypassing the 15% headhunter’s fee. This is the reason why headhunters rarely name the company name.

    In the past, through my random and numerous connections I’ve heard stories about what the setup is like at that place, and it’s a doozy. I’m pretty sure that the person who will take that job will take a lot of development up his or her back end.

    The moral of the story is this: it’s easy enough to bypass recruiters – they are just engaged in arbitrage: the hiring manager is busy, the potential headcount is not even looking. That 15% is OPM (other people’s money) to the hiring managers, but not so much to the headcounts.

     
  • Michael Krakovskiy 8:14 pm on December 24, 2009 Permalink | Reply
    Tags: , , , , , , Markus Frind, , Nevada Test Site, okcupid.com, , , Web Heirarchy, web people, web traffic, Yahoo!   

    Are Tables Important? 

    I was talking to a former co-worker about Inc Magazine’s cover story about Markus Frind and his very profitable, but godawfully ugly dating website plentyoffish.com.

    My co-worker (a programmer) loaded up the website. He took a quick look around and opened the source of the ratings page. Giggling like Bevis he could not believe what he saw: a gradient bar that was coded as [gasp!] an HTML table with bgcolor attributes.

    It looked like this:

    And was coded like that:

    <table border=0 cellspacing=0 cellpadding=0 width=100%>
    <tr height=5><td bgcolor=#204080><img width=1 height=5 border=0>
    </td><td bgcolor=#202F70><img width=1 height=5 border=0></td>
    <td bgcolor=#3F2060><img width=1 height=5 border=0></td>
    <td bgcolor=#5F2050><img width=1 height=5 border=0></td>
    <td bgcolor=#7F1F4F><img width=1 height=5 border=0></td>
    <td bgcolor=#90103F><img width=1 height=5 border=0></td>
    <td bgcolor=#B0102F><img width=1 height=5 border=0></td>
    <td bgcolor=#CF0F1F><img width=1 height=5 border=0></td>
    <td bgcolor=#E0000F><img width=1 height=5 border=0></td>
    <td bgcolor=#F00000><img width=1 height=5 border=0></td>
    </tr></table>

    He was going on and on and on about how tables are bad, and mwu-ha-ha-ha — look at this.

    I was fully expecting him to take umbrage at the logo, the overall look and feel of the site, at the grotesquely skewed photo thumbnails. But no, all he was seeing is that Mr. Frind “used a table”.

    I tried to tell my co-worker that despite “tables” or ugliness this website generates tens of millions of dollars of profit to its creator, that it has as much web traffic as Yahoo while being served a small handful of very powerful servers, that it was created and maintained by a single person who gets to keep most of the profits – but to no awail. The kid could not get over “tables”.

    A famous hacker JWZ once was asked about his feelings about “an open source groupware system”. In a famous rant that followed he produced some of the best advice importance that I’ve ever seen:

    “So I said, narrow the focus. Your “use case” should be, there’s a 22 year old college student living in the dorms. How will this software get him laid?”

    While I’ve never heard of HTML tables (not the furniture kind) playing any role in getting laid, plentyoffish.com must have resulted in a mind boggling amount of action.

    Plentyoffish.com, being a technological and aestetical abomination that it is, is firmly rooted in the lower, fundamental layers of Maslow’s Hierarchy and my Web Heirarchy.

    At the most basic people need oxygen, water, food, to take a dump/whiz, sleep, sex, and a predictability in environment.

    On the web people need hypertext, images, search, speed, and community features. If you provide all of these for a topic that is important to people, you will be successful. Start thinking about “html tables vs divs” first, and likely you won’t get to the important stuff.

    Doing it another way – saying, look, I’ll do a site just like plentyoffish but prettier and without HTML tables does not work very well: Frind’s competiors at okcupid.com who set out to do just that are not succesful in toppling plentyoffish.

    Ugliness for the sake of ugliness is not a good thing. In the long run people want things to be pretty, like Apple products and not ugly like Microsoft products. But taste, being pretty high up in the pyramid of needs only becomes a factor after all the basic needs are met.

     
  • Michael Krakovskiy 9:01 pm on November 17, 2009 Permalink | Reply
    Tags: , , , , , , , DISQUS, , google.com, , , Internet ethics, , Maciej Ceglowski, , , road solution, search appliance, server farm, , , stackoverflow.com, , , web interface, , Yahoo!   

    8 Pieces of Architectural Advice for CMS 

    I have some advice for those in the business of building large websites with content management systems.

    1) Do not implement search yourself.

    Your CMS sucks at search, and so do you. I see this again and again and again. Everyone is implementing search on large websites instead of using Google. Developers are afraid of looking unprofessional. Managers are answer yes to the question “do you want advanced/faceted search” (the correct answer is no – user’s don’t like it and don’t use it). As a result a lot of resources (both server and developer) go into implementing something that Google is awesome at. Even some very smart people, like Jeff Atwood roll their own search, and their users end up going to google.com and typing “foo site:stackoverflow.com”.

    Users are very happy with Google CSE, and don’t mind the text ads. Those text ads – well, that’s revenue that you would otherwise would not have, however small this is. If you absolutely can’t do Google CSE – buy their search appliance. If you can’t do that either – well, you better be using Solr.

    2) Do not implement comments yourself (unless comments are what you do for a living).

    It is extremely difficult to get comments right. Users absolutely abhor comments. Spammers – well, they love it. Luckily, you can just go and get DISQUS to do all the heavy lifting for you. The time saved on using DISQUS can be used on building something else, meanwhile users absolutely love leaving comments through it, while spammers hate it.

    3) Physically separate your admin interface from the stuff that is going to be used by your users.

    Maciej Ceglowski has some words of advice about not having your blog hacked: cache your output in flat files and hide the admin interface. The benefits of this are tremendous: cached files are fast and secure. You will need to do some fancy footwork to serve up parts that change a lot, but you can do it the same way DISQUS and Google CSE do it – through the magic of AJAX.

    4) Sanity check: calculate the amount of RAM in the home computers of all of your interns. Compare that to the amount of RAM in your server farm. Who wins?

    5) Use a CDN and/or caching proxy, don’t be cheap. These things will save your butt when Yahoo and Digg will come a-knocking at the same time. I’m not even going to mention Memcached – you can’t get big without it at all.

    6) Fight WYSIWYG editors. These things are the worst. They are the Devil. They are a security hole. You never get what you see. People paste from Word. Do I need to go on?

    The best middle of the road solution is something like Markdown.

    Do not underestimate the user’s ability to learn a few simple rules. When I worked at TV Guide there was this movie database application. Very non-technical editors were using a very scary-looking Unix-based interface at an amazing speed. When I rewrote it as a web interface, it became more “user-friendly”, but they could not enter stuff as fast as before.

    7) Make sure you have good backups

    8) I know you won’t be able to follow my advice, I know I can’t either. Life is a constant compromise.

     
c
Compose new post
j
Next post/Next comment
k
Previous post/Previous comment
r
Reply
e
Edit
o
Show/Hide comments
t
Go to top
l
Go to login
h
Show/Hide help
shift + esc
Cancel