Shared posts

23 May 16:18

Well Beat

by Malachi Rempen
You know it's been a good trip when you're more exhausted after your vacation than before you left



30 Sep 16:15

$534,900 - 1455 PARK GARDEN Ln, RESTON, VA 20194


Updated: the upcoming open house(s) were canceled
Beds: 3
Baths: 3.5
Sq. Ft.: 1,732
$/Sq. Ft.: $308
Lot Size: 2,140 Sq. Ft.
Year Built: 1994
Location: BALDWIN GROVE
Last Sale: -

On Redfin: 16 days
Status: Active
MLS #: FX8192723
Listing: Fuller and Fox Real Estate

Map It   |   View Details   |   Go Tour It
Buy this Home and Save $5,663. How?
19 Sep 14:48

Culture of Violence

Culture of Violence

20 Jun 19:43

Organizational Skills Beat Algorithmic Wizardry

by James Hague
I've seen a number of blog entries about technical interviews at high-end companies that make me glad I'm not looking for work as a programmer. The ability to implement oddball variants of heaps and trees on the spot. Puzzles with difficult constraints. Numeric problems that would take ten billion years to complete unless you can cleverly analyze and rephrase the math. My first reaction is wow, how do they manage to hire anyone?

My second reaction is that the vast majority of programming doesn't involve this kind of algorithmic wizardry.

When it comes to writing code, the number one most important skill is how to keep a tangle of features from collapsing under the weight of its own complexity. I've worked on large telecommunications systems, console games, blogging software, a bunch of personal tools, and very rarely is there some tricky data structure or algorithm that casts a looming shadow over everything else. But there's always lots of state to keep track of, rearranging of values, handling special cases, and carefully working out how all the pieces of a system interact. To a great extent the act of coding is one of organization. Refactoring. Simplifying. Figuring out how to remove extraneous manipulations here and there.

This is the reason there are so many accidental programmers. You don't see people casually become neurosurgeons in their spare time--the necessary training is specific and intense--but lots of people pick up enough coding skills to build things on their own. When I learned to program on an 8-bit home computer, I didn't even know what an algorithm was. I had no idea how to sort data, and fortunately for the little games I was designing I didn't need to. The code I wrote was all about timers and counters and state management. I was an organizer, not a genius.

I built a custom a tool a few years ago that combines images into rectangular textures. It's not a big program--maybe 1500 lines of Erlang and C. There's one little twenty line snippet that does the rectangle packing, and while it wasn't hard to write, I doubt I could have made it up in an interview. The rest of the code is for loading files, generating output, dealing with image properties (such as origins), and handling the data flow between different parts of the program. This is also the code I tweak whenever I need a new feature, better error handling, or improved usability.

That's representative of most software development.

(If you liked this, you might enjoy Hopefully More Controversial Programming Opinions.)