Live data from Hacker News

Organizing complexity is the most important skill in software development

johndcook.com

271–280 of 286 posts

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

#271
"""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."""

I'm not a functional programming evangelist but that reads like a very good reason to go for FP. I think a similar point was made in "Functional JavaScript". I don't remember it exactly and it's on my shelf at home but there was some passage about the biggest downside of typical OOP codebases being the mental effort of keeping track of values and value changes.

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

#272
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…

> default assumption that the best developers out there are white, male twenty-somethings.

don't you think that there's a higher proportion of white, twenty-something people who would have public projects (because they tend to have the most spare time)?

Don't you think that the over-worked CRUD programmer at an obscure insurance company wanting to get out because they are in a difficult situation (may be financially, may be race/background etc), would find it hard to have time for a public showing of their coding prowess?

No one is saying don't use public projects, but i would only consider them after other aspects, and certainly wouldn't cull people because of it.

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

#273
post #272

Earlier quoted context omitted.

>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…

> default assumption that the best developers out there are white, male twenty-somethings. don't you think that there's a higher proportion of white, twenty-something people who would have public projects (because they tend to have the most spare time)? Don't you think that the over-worked CRUD programmer at an obscure insurance company wanting to get out because they are in a difficult situation (may be financially,…

>Don't you think that the over-worked CRUD programmer at an obscure insurance company wanting to get out because they are in a difficult situation (may be financially, may be race/background etc), would find it hard to have time for a public showing of their coding prowess?

Like I said: the amount of time you realistically need to get something out there is about a couple of weekends.

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

#274
post #43

Earlier quoted context omitted.

This is pretty much how I feel just now (after 12 years). I know Django pretty well after 4 years, and know where and how to add things to avoid breaking other parts of the code and make it work consistently with other parts. Yet nearly every job I apply for these days wants a 90 minute online test. (I just had to implement a sorting algorithm in psuedo code - I have never in 12 years had to implement a sorting algor…

>> Yet nearly every job I apply for these days wants a 90 minute online test. (I just had to implement a sorting algorithm in psuedo code - I have never in 12 years had to implement a sorting algorithm as I choose an appropriate library to do that for me). True, but if you can't implement a simple sorting algorithm how are you going to implement _____ ?

Who said I couldn't?

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

#275
post #41

Earlier quoted context omitted.

> Sadly there's (seemingly) no way to interview people for this ability I think there is. Show the candidate some bad code. Not WTF code, but something you wouldn't be proud of but is realistic. Bonus points if you're comfortable enough to pull this out of your own production system. Ask the candidate about adding some functionality, but be clear that cleanup and refactoring changes are fine (even encouraged). The co…

It would be actually interesting to look at the commits of a candidate's any online project repository from the very start and observe how the candidate made the progress with respect to the structure of code and improvement in coding practice. To check whether the candidate optimizes and refactors the code during the development of the project leading to a stable release.

So I have a small side project I have hosted on Heroku. Getting stuff working on Heroku was a pain, and involved a commit for every thing I changed to try and make it work. How would you view a ton of commit messages in that context?

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

#276
post #49

the number one most important skill is how to keep a tangle of features from collapsing under the weight of its own complexity Agreed. very rarely is there some tricky data structure or algorithm that casts a looming shadow over everything else Agreed, BUT... In order to organize, sooner or later, you will have to get clever (with tricky data structures or algorithms). How I have always built something big and/or com…

I always liked Linuses quote about bad programmers worrying about the code and good programers worrying about the data structures. I often find reorganizing my data models can cut down on a lot of code.

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

#277

Earlier quoted context omitted.

If it were that easy, you could write a compiler compiler that knows all the “design patterns” and generates perfect solutions for all problems. Remember the 239th Rule of Acquisition, “Never be afraid to mislabel a product.” That goes for methodologies, too. If they could get away with it, they would probably say it cures baldness, too.

I believe that would actually be possible if we had a standardized problem specification format.

So it would boil down to the quest for the “sufficiently smart problem specification format”. OK, aren't programming languages standard problem specification formats? Why do you suppose there are different PLs? Right, because all problems _can't_ be specified advantageously in the same format. Which brings you full circle to where you started. That's by no means a discouragement. If you invent a PL that's better than what we have now, it's still progress. But, to use a famous quote, “there is no silver bullet”.

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

#278

Earlier quoted context omitted.

Our main product was developed on a keyboard that was missing a "w". It's not a big deal, though - you can use a for(;;) loop instead of a while loop without hurting performance. And it's easy to just avoid "w" words in the view templates by being clever with word choice. Of course, that's not true at all. But giving someone a defective-but-not-entirely-broken tool can be a clever way of seeing how they work around p…

If the 'w' key is the only worn out key on a keyboard, I would suspect that it had seen heavy use attached to a gaming PC, as the "forward" key in the default WASD movement layout. I have a keyboard with a broken 'w' key myself, and I know exactly why that key cap died young. It sure wasn't from typing out "while".

You might benefit from more strafing.

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

#279

I like this little article a lot. Personally, I try to write code in a way that reads like a book. Lots of comments, explicit function names, explicit variable names, object names, class names, ect. Talking about languages higher level than C/assembly here obviously. I am amazed at all the code I see that has terrible/too generic names for functions and variables and objects. Some people get so obsessed over short fu…

Totally agree on variable/function names, but for some reason I love complicated one liners. I know its wrong, but its my way of measuring how smart I really am(even though its not).

Much respect to you for acknowledging that it gets your brain off mentally! Need a 12 step program for folks like you. Complicated one-liners anonymous.

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

#280

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…

I got fired from a job because I had done this and they couldn't figure out how to keep me billable after that. Well, I got fired because I would "show up late" and "leave early" because there was nothing else for me to do (even though I was actually pulling a full 40 hours, they were expecting 60 out of people). They could have given me more work, put me on new projects, etc., like I kept asking to be done, but inst…

Awesome, thanks for sharing. Inspirational.
Post reply on HN