Live data from Hacker News

Organizing complexity is the most important skill in software development

johndcook.com

281–286 of 286 posts

Re: Organizing complexity is the most important skill in software development

#281

This is incredibly true. I once turned 60kLoC of classic ASP in VBScript into about 20kLoC of python/django including templates. And added a bunch of features that would have been impossible on the old code-base. It turned the job from hellish (features were impossible to add) to very nearly boring (there wasn't much to do anymore). So with this newfound freedom I built some machines to automate the data entry and on…

Something I just realized that I wanted to write, but didn't, was that I generally don't do well in whiteboard interviews. I've done a few and it's always algorithms that I didn't learn in school because I was EE/CE (not CS) and while I took Data Structures and Algorithms, I didn't take Advanced Data Structures and Algorithms or anything like that. I took two compilers classes (which were great!) and a pile of classes dealing with hardware and the practical realities of computers rather than the theoretical aspects.

I'm pretty happy that I did what I did in school, but I wish that people didn't rely on the whiteboard situation as much. If I can talk about what I did to find the edges and corners of a piece of mail in a picture, and how I used that I can rotate the image to be square and then crop the image so that all you see is the letter and not the background, perhaps my ability to do some kind of whiteboard coding exercise isn't terribly relevant. The odds that I can answer questions about how I developed such an algorithm while still not being able to actually write code are pretty small.

You're hiring me to solve business problems and last I checked FizzBuzz or reversing a singly-linked-list aren't business problems. End Rant.

Re: Organizing complexity is the most important skill in software development

#282
post #237
post #178

Earlier quoted context omitted.

Whenever you need a character your keyboard won't produce - either because it's broken or because it's in a different language and you can't figure out how to get it, just google the character and copy/paste it. i.e. Google "double u"

Or just use the mouse to open your whatever "Character Map" program comes with your OS... which works when you're missing the same letters you'd need to "sound them out", or even with no keyboard at all. (Assuming you managed to log in.)

Try doing that when you sit down at a machine that has the language set to something you can't read :)

Re: Organizing complexity is the most important skill in software development

#283
post #135

Earlier quoted context omitted.

that assumes the candidate has an online repo somewhere. I think this is quite a discriminating practice - what if i don't do public projects?

>I think this is quite a discriminating practice - what if i don't do public projects? Then either start one or resign yourself to not getting the best possible tech jobs out there? As a discriminatory practice it's probably one of the most benign. There's a low bar to putting open source code out there. You can write a simple project and put it out there in a couple of weekends. That alone puts you ahead of about 80…

The bar is not necessarily as low as you think. At companies like Amazon you have to get approval for even the simplest personal projects, which could take months if you're unlucky.

Re: Organizing complexity is the most important skill in software development

#285
post #73

No part of a system is the most important part, from a car to a huge organization, all parts are equally required to interact and hence make such system 'work'. Having a clear functional organization at the start (and respect it throughout development) is very important, but after that is equally important to code clean and efficient code, to test, to debug, etc. Then, going up and dow on the solution stack is import…

Okay, if you need to be so detailed you also have to argue keep in mind that some parts are more important than others. Example with the car: If you leave out the head-rest you might sell your car for a few bucks less or have a harder time to get a customer (low importance), but if you have a car without some kind of motor you don't even have a car (high importance). While there are many things that are important the…

Nope, a car is not a system that was built to be 'sold', it was built to transport people/things safely. If you remove a part of a system and the system still works as intended, it was not part of the system. The head-rest can be removed and the car will still run but with less safety. Hence: all parts of the system are equally required to interact and make the system do what the system should do.
Post reply on HN