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.
Organizing complexity is the most important skill in software development
271–280 of 286 posts
Re: Organizing complexity is the most important skill in software development
#272Earlier 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…
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
#273Earlier 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,…
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
#274Earlier 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 _____ ?
Re: Organizing complexity is the most important skill in software development
#275Earlier 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.
Re: Organizing complexity is the most important skill in software development
#276the 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…
Re: Organizing complexity is the most important skill in software development
#277Earlier 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.
Re: Organizing complexity is the most important skill in software development
#278Earlier 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".
Re: Organizing complexity is the most important skill in software development
#279I 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).
Re: Organizing complexity is the most important skill in software development
#280This 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…