you know what is the fucking bane of my existence (besides PMs)??? lazy fucking developers. if i can pick any single word to describe the culture of software development, it's lazy. this is a problem. to be honest, this disease is not just limited to software developers, it also infests PMs, analysts, clients, and just about any other moronic cocksucker who is too fucking stupid too avoid this kind of work. regardless of the situation, leave it to laziness to fuck things up beyond all belief. by the way, i was a professional musician for a long time, and i naively thought that musicians were the laziest fuckers on the planet...boy oh boy was i in for a fucking surprise...
why don't we look at some of the more prevalent scenarios (in no particular order)...
source control disaster man
this lazy piece of shit comes in three flavors:
- the fucker who only checks his code in every other month
- the shithead who checks in code that won't compile
- and both of the above combined
i'm going to stretch here a little bit and assume that this is something that most of you have run into at one time or another. This behavior is just COMPLETELY FUCKING MINDBOGGLING!! why does it exist? who works like this? let's break this down a bit... we'll use visual studio for simplicity's sake:
- to build a solution, you need to press the ctrl-shift-b key combination. now i don't know about you, but at most, this is only 3 ...only 3 fucking keystrokes. (most of you press these keys simultaneously, so it's really only 1, but i'm doing a worst-case scenerio here.) that's all it takes to make sure you can at least get the damn thing to compile. i don't know about you guys, but 3 goddamn keystrokes just doesn't seem like a whole hell of a lotta work to me (carpal-tunnel syndrome excluded of course). also, because microsoft is sooooo wonderful, it'll build a solution regardless of how many projects are in it!! throw 100 of 'em in there, it'll build them all (or at least try to)!! for FREE!! imagine that!!
- ok, now to check something in, you can just right click the file in the solution explorer window, and select the check in option from the context menu. it even works for project and solution files... at most, this is 2 mouse clicks. one right handed click to bring up the context menu, and one left handed to select the check in option. again, this doesn't seem like a whole lot of work to me (but i can just be completely fucking off my rocker on this one...)
now there are other ways of doing the above, but that's not important. what's important is that between the two actions above we have a total of 3 keystrokes and 2 mouse clicks. 3 KEYSTROKES AND 2 MOUSE CLICKS. you mean to tell me that at least once during the day you are too fucking lazy to do this?? are YOU FUCKING KIDDING ME?!?!? pure unadulterated LAZINESS!! these people should be taken out back and disembowled. ironically enough, most of the einsteins that exhibit this kind of behavior have no idea of the amount of work this would actually save them later on. alright, just thinking about this is giving me diarrhea like you wouldn't believe...let's move on...
the plagiarizer (very similar to something i wrote earlier here)
amazingly enough, my buddy bill just blogged about this here. There is nothing wrong with cut and pasting code. However, there is a shitload wrong with cut and pasting code and then not reviewing it carefully for mistakes, not making sure there are no irrelevant bits and pieces, not checking to see if additional code is needed, and finally not checking if the code you just cut and pasted even makes sense for what you need (like cutting and pasting ratfor code into a managed c++ source file). friends, this is just beyond laziness...it is the fucking height of stupidity. most of the code out there on the web is usually used for illustrative purposes, and is rarely ready to be integrated into any type of production codebase. it's usually missing such non-important things as error handling and security checks, among others. how can you just blindly fucking cut and paste code like that?? how many times have you had to fix somebody else's shit just because they couldn't get the fucking code they just cut and pasted working??
unfortunately, this is just a prelude to a whole new realm of laziness. with the internet, it is becoming more and more fashionable to just blindly start looking for code and than cutting and pasting as necessary. who gives a fuck if i don't understand what it does...just get it off the internet and away you go!! this kind of shit is becoming an epidemic. it's turning into this lazy as fuck version of software developer's instant gratification. pretty soon all you'll ever need on your resume is a listing of all the web sites you can rip some code off of. who cares about problem solving skills, experience, and the ability to communicate well?? instead of building systems out of re-usable components (or services for all you buzzword types), the reality is we're going to get so fucking lazy that the only thing we're going to be building systems out of is cut and pasted code from the fucking internet...
the half a unit tester
this is the fucking lazy moron that thinks along the lines of, "well...most of it seems to be working pretty well, do i really need to test those last two methods?...i'm sure they're fine too." holy shit! this guy is completely oblivious to the world of pain he has just entered...this is the dipshit that writes a couple of unit tests see's that everything is going fine, and then decides he doesn't need to write tests to cover the rest of his code. poor miserable excuses abound for these lazy wankmasters. everything from i didn't have the time to those methods don't really do anything are just some of the more creative, original, thoughtful excuses as to why you're just a fucking low down, good for nothing, piece of shit, puke-inducing lazy fuck (let me tell you how i really feel...).
a little while ago, there were all sorts of shit going around the web as to what and what wasn't unit testing. people were saying things like:
- i only test public methods
- i test all the methods in each class
- this unit testing shit is all a bunch of bullshit to just make me do more work, so fuck it
(here comes a small digression) let's get something straight...i don't know about you people, but this testing shit is not all together too difficult. let me give you the causticphil definition of testing:
testing: making sure the shit works properly
that's it. short and simple. like the c language, most is left up to you... all this simply boils down to is use your fucking head when it comes to shit like this. if you have a private method, but there is some insidious piece of logic in it, guess what...write the fucking goddamn test for it and make sure it is working properly. pure and fucking simple. get off your lazy ass and do it, you lazy fuck!! who the fuck cares if it's not a public member? if i were you buddy, i'd be more concerned about making sure the shit works, than about following some blind dogmatic bullshit just because, "oh, so and so said do it this way..."
the bottom line with this is that testing is not fun. i don't know anybody who said, "oh rapturous joy...let's write some unit tests and test cases!!" this shit is fucking tedious. sometimes it's difficult. make no mistake, it's also a serious pain in the ass. that's why to do it well, it often takes a good sense of discipline, experience, and will-power. which are qualites most lazy fucks like yourself just don't have.
also, before moving on, i would just like to point out there is also the laziness associated with the fact that just because your code made all your little fucking circles green, that it actually does what it is supposed to do...but that's another story...
(here's the last one for today)
the spec skimmer
this is the bastard that is just too lazy to read the fucking spec properly. "oh, you mean it was supposed to do this???" yeah, i do you lazy, incompetent, fool. IT IS RIGHT THERE ON PAGE 2345 OF THE SPEC!!! Guess what...most specs that are written are complete and utter pieces of shit, that require many iterations for them to be even remotely comprehensible (even for the poor bastard writing it). However, this is no fucking excuse. if there is something that you can't make sense of, don't fucking ignore it pretending that it will just fucking go away!! don't just start blundering into writing code based on what you assume it might mean. you can call this whatever you want, but again...it's laziness, pure and fucking simple. unfortunately it is your job to figure out what this shit means, and if it's not 100% clear, than you need to bug the living shit out of the person who wrote this miserable piece of shit. i don't care if i have to ask the same fucking question 8 million times and people think i'm a complete fucking nincompoop. i just want some understanding. it's no big fucking secret that putting in the time, energy, and effort to make sense of these things can actually create less work for you in the end, regardless of whether you're using something like RUP or more agile methods.
believe it or not, these or just the top 4 cases that immediately came into my head without requiring any thought at all. i'm not saying that laziness is the ultimate cause of the industry's complete inability to write bug-free software, but it is definitely right up there with the best of 'em. unfortunately laziness is so fucking rampant in this industry that there are also people who are too fucking lazy to comment code properly, work on documentation, use appropriate algorithms, etc... (i know this is shocking, huh?) now i know how much you love doing this shit, but trust me...it's having the self-discipline to do all the tedious, boring garbage that often separates a good developer from a bad one.
by the way, if you're going to cleverly point out that i'm too fucking lazy to use the shift key for capital letters, you would be quite correct. the reason i know about all this laziness is because i happen to be the biggest, laziest fuck of all...so go fuck yourself!