Companies that give programming challenges to new hires are doing it wrong.

I’ve been a freelance developer for 10 years. Work has been slowing down a little bit lately so I began applying for full-time telecommute or remote work to test the waters. I’m not sure what the deal is, but 99% of the companies I’ve contacted either want me in the same area as them or want me to come in to the office at least once a week. In this internet age with Google Hangouts & Skype, it seems quite antiquated to require someone to be on-site for a programming gig. I could probably go in for a few hours once a week, but my personal situation requires that I work from home. The “face to face” interviews haven’t been that great either: One interviewer didn’t like that my wife was watching TV in the other room. Another interviewer balked at my salary requirement to sustain my household. He didn’t even attempt to offer me less, he basically stated they had to get their money’s worth from their developers.

Occasionally I get to the point where a potential employer wants a code sample. Picking out a sample of code to impress someone I don’t know, stinks. Over the years as I’ve entertained full-time employment, I apparently never pick out the “right” sample of code. I can only assume something I think is interesting, isn’t to them, or they don’t like my coding style. I have no clue as they never tell me why, even if I ask. That may be part of the problem… programming has always come naturally to me, so what’s cool or interesting? I started programming in the 4th grade (think 1982). I’ve done BASIC, Perl, Visual Basic, REALbasic, Pascal, Java, C, C++, Objective-C, PHP, and more. I enjoy some languages more than others, and some I don’t “do” at all. These days all of my front end stuff is done in Objective-C and back end code in PHP. For one of my iPad apps, I came up with a pretty ingenious chained menuing system for the TableView. I’ve been sending that code… maybe they just don’t understand it.

And here’s my big peeve, the so-called “programming challenge”. I’ve been told that they are not necessarily about programming… it’s about asking for help, seeing how well one works under pressure, understanding one’s thought process… blah blah blah. As someone who is consulting for a living, you potential employer, are not valuing my time. Do you think my client list is fake? How have I been in business for a decade & not able to problem solve? Who do you think made the desktop & mobile apps that I sell? Here is some information you may not realize about me… If you count hobbyist programming, I’ve been coding for 32 years. Hired directly out of college, I’ve been a professional programmer for 15 years. I’ve been running my own business for 13 years, and have been freelance consulting full-time for 10 years. I’ve been a system administrator for every current platform, I’ve been a database administrator, and I can do web programming if I have to; I don’t like it.

When I was hired directly out of college, I started out at a lower rate, with benefits, and was on a three-month probation. If I couldn’t prove myself after three months, I would be let go. After two months I was given a raise and removed from probation. That is the way to do it employers. Allow the coder to learn your coding style guidelines, get to know your existing employees, and prove himself. All of your under-pressure non-real-world coding challenges suck.

Finally, here are some examples:

Please Solve this Programming Challenge:

Given a definition for data within a table structure of:

[[“1″,”2”],[“3″,”4″,”5”]]

with cellspan information represented as:

[{“1”:[2,1]},{“2″:[1,3]}]

where each member of the array is a value that represents the data that spans multiple columns and the value is the cell span information [rowspan, columnspan]

The above data is equivalent to the table described in HTML as:
<table>
<tr><td rowspan=”2″>1</td><td colspan=”3”>2</td></tr>
<tr><td>3</td><td>4</td><td>5</td></tr>
</table>

Write an algorithm that will calculate the final table as a two dimensional array with empty values (null, nil, etc.) for blank spaces.


Write one’s own number formatter without using built-in functions. (20 minutes)


Your goal is to create 115 equal-width columns. The width of each column should be (Window width / 115), and the columns should dock to fill all available width. (60 minutes)

Inside each column, create 12 boxes – one for each “Box0-Box11” value in the .CSV file. The value determines the height of the box – 0.24 means that the box should take up 24% of the column height. If you add up all Box0-Box11 values, you’ll see that they add up to 1.0 (or 100%).

In addition to drawing 12 boxes inside each column, please color them according to their Box number. Box0 should be Red, Box1 should be Orange, et cetera. The actual colors don’t matter – just make sure that Box0 is the same color in every column.

 

Since there are 115 columns, and 12 boxes in each, you’re drawing a lot of objects on the screen. Your goal is to make this code as high-performance as possible, especially when the window is being resized.

And there are 2 others I can’t think of right now. What a waste.