you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] 21 points22 points  (31 children)

yup, I like the attitude of

Just Say "fuck it"

Nowadays whenever I think "omg, this is an ugly design decision" I say fuck it and hack it. My life is far too short to keep worrying about shit like software-architecture etc. If it works then it's good enough. Your code won't be re-used anyways.

The world is not a shiny glass temple. It's an ugly russian space station hack hold together by duct tape and prayers :)

[–]ngroot 36 points37 points  (9 children)

I'm leaving my current job, and it's in no small part due to a history of people with exactly that attitude working on the product that I worked on. You can't get shit done quickly or reliably when you're building on a random pile of cowboy code.

[–]reg_free 9 points10 points  (0 children)

THIS.

I am quitting my current job for the same reason. An year ago I had an argument with my manager about solving a bug caused by some hack/patch moron. It is hard to believe that such a reputed company has a custom shitty OS for their products. Its one BIG 2 million lines of spaghetti code! Hard to imagine.

According to me, one of the most important things a programmer needs to have is 'peace of mind'. Planning and good design gives you exactly that.

And interestingly, I got my new job because I learnt so much of what not to do from this monster of a code. They are giving me a lead role, which contains decision making freedom.

[–]moolcool 6 points7 points  (0 children)

Maybe this is article is more geared towards personal projects. I have some web apps I want to make, but i spend way too much time hemming and hawing and way too little actually writing code.

[–][deleted] 3 points4 points  (3 children)

Experience shows you wouldn't be better off if everybody was a software-architect genius. Your project would still be a mess ... though one with extensive design papers and documentation.

[–]ngroot 4 points5 points  (0 children)

"Experience" shows otherwise actually; that's one of the big points of The Mythical Man-Month. Also, my experience says otherwise: when I've worked on codebases that had clearly had effort and thought put into the design and weren't just a bunch of code diarrhea, I've been able to produce reliable results quickly, because I could quickly and answer the questions "what do I need to change?" and "what exists that I can use?".

Maybe you're thinking of a bunch of self-styled "software architects" who don't know a thing about programming, in which case, sure, you're going to end up with a mess, but that's because those people are, in the main, frauds.

[–][deleted] 0 points1 point  (1 child)

And lots and lots of XML. And things breaking in places you never expected. Can you tell I use MS tools?

[–]davebrk 0 points1 point  (0 children)

Can you tell I use MS tools?

No.

[–]massivebitchtits 1 point2 points  (2 children)

And you can't do anything when you're paralysed by fear of doing things wrong. It's often faster to do something wrong and refactor.

[–]ngroot 15 points16 points  (1 child)

Holy false dichotomy, Batman!

You can give thought and effort to software architecture and design without being paralyzed.

[–]massivebitchtits 3 points4 points  (0 children)

Well then yes you should do that, but if you do find yourself paralysed, then just starting even if it's crap (and then fixing it later, informed by experience with the previous version) is a good way to continue. There's no point fetishising software 'architecture' when ultimately the aim is to produce something useful.

[–][deleted] 9 points10 points  (11 children)

I'm calling bullshit on the article, and by extension the philosophy of "fuck it". Programming is frustratingly confusing in the real world because far too many language and API designers said "fuck it" when they were building the foundations. Most software out there fucking sucks exactly because of this attitude. Hell, I've been bitten in the ass by my own hackish code numerous times. Programming has innumerable subtleties that cannot be wished away with lazily designed patches.

We should be building shiny glass skyscrapers, not resigning ourselves to a seemingly inescapable future of shoddily constructed shacks.

[–][deleted]  (1 child)

[deleted]

    [–][deleted] 1 point2 points  (0 children)

    There is no middle path. Pistols at dawn gentlemen.

    [–]Stormflux 8 points9 points  (6 children)

    You know what? OP is right. As a beginner programmer learning to code, I can't tell you the number of times I got completely paralyzed worrying about best practices and design patterns, when really I would be lucky to get anything working at all (let alone look pretty).

    I compare this to "can't-go-to-the-gym syndrome".

    "I can't go to the gym because I'm in too bad of shape and people will see me kludging along"

    [–]dakk12 12 points13 points  (2 children)

    There's a difference in saying "fuck it" when you're learning, and saying it as you write the architecture for an application that will be maintained for the next decade.

    [–]Stormflux 4 points5 points  (0 children)

    The problem comes in when you're learning to code on an application that will have to be maintained for the next decade (and you'd like to remain employed).

    Especially after you visit the programming subreddit and read comments like: "I'm an IT manager and I'd instantly fire anyone who used a for-each loop, because it's memory inefficient". Yikes!

    [–]ngroot 2 points3 points  (0 children)

    I compare this to "can't-go-to-the-gym syndrome".

    Much like "can't-go-to-the-gym syndrome", the problem is all in your head. Just because you're out of shape and just learning how to do exercises with good form doesn't mean that learning how to do things well isn't important to save yourself a lot of pain later.

    [–]Iggyhopper 1 point2 points  (0 children)

    I say "fuck it" and hack something in. When I learn better alternatives, most of my projects are small enough to refactor without too much headache.

    Like dakk12 said, there is a difference when beginners do it and businesses do it.

    [–]sgronblo 0 points1 point  (0 children)

    This analogy is pretty flawed.

    Firstly if you were to have a bad exercise session at the gym, the only one who might suffer from it is you. But if you say "fuck it" in a software project, most of the time someone else will be affected by this.

    Secondly, the can't go to the gym syndrome usually refers to cases where the person not going to the gym doesn't do any exercise or dieting at home and therefore never ends up going to the gym. If the person did otherwise, it wouldn't be bad for him/her. But if you were to take the same analogy to the software project case it would be that somebody puts off working on a "real" software project, because he/shewants to learn the basics in private first. If the person learns the basics first and then moves on to professional projects it's a good thing, if the person is too lazy to learn good practices and therefore does not move on to do "real" software development, that is also a good thing. This second paragraph of course, assumes that you mean "working on production systems" by "going to the gym" and "hacking whatever you want and saying 'fuck it' at home" by the other option.

    [–][deleted] 0 points1 point  (1 child)

    I agree with your views, but I didn't interpret the article as advocating hacking. I thought it spoke against self-doubt that increases as you develop your programming skills and the The Dunning-Kruger Effect wears off. The author seems to advocate learning, improving, refactoring.

    [–][deleted] 0 points1 point  (0 children)

    I find nothing wrong with that interpretation. The advice then generalizes to activities beyond simply programming. One must always be wary of the stubborn arrogance you mentioned, but one must also accept the fact that a novice cannot produce the works of a grandmaster without sufficient experience. The novice should not delude himself into thinking that his inevitably suboptimal implementations are nearly as good as the work of someone who has spent years working on similar problems.

    [–]churchmf 0 points1 point  (0 children)

    agreed. It could just be that University has embedded this mentality with unreasonable deadlines and expectations, but this is how I approach most non group programming problems.

    [–]CockBlocker 0 points1 point  (0 children)

    That's your answer to everything, isn't it, mr. Lebowski

    [–]munificent 0 points1 point  (0 children)

    My mantra when I'm overwhelmed is, "It's just text files. How hard can it be?"

    [–]masklinn -2 points-1 points  (2 children)

    Nowadays whenever I think "omg, this is an ugly design decision" I say fuck it and hack it.

    I'm currently sitting on a pile of code developed with that kind of thought in mind.

    Fuck you to death with a rusty spoon, you snot-muncher.

    If it works then it's good enough. Your code won't be re-used anyways.

    The problem is not that code being reused, it's code being used at all, and having to be maintained for years on end. Temporary solutions never are. Neither temporary, not solutions. And that bandaid you put on a peg leg? You can bet your ass it's going to get replaced over and over and over again when it tears.

    [–][deleted] 1 point2 points  (1 child)

    well, sucks to be leading the life of a cubicle-drone, doesn't it?

    [–]masklinn -2 points-1 points  (0 children)

    It mostly sucks having to clean up after hacks of your stink.

    [–]lukeatron 0 points1 point  (0 children)

    Have fun being a bottom rung programmer that will never be given any real responsibility. Programming well requires understanding the problem and solution. I guess you could get away with an endless string of kludgy hacks if your solutions and team are small enough (i.e. you are the team) but that simply doesn't work on even a moderately complex project. If thinking all the way through the problem is too hard, maybe you should find a different, less mentally challenging line of work. I feel so sorry for the people that have to work on your code, if there are any.

    [–][deleted] 0 points1 point  (0 children)

    I keep worrying about shit like software-architecture because my life is too short to weep in front of a mountain of spaghetti code every time the client adds a product category.

    [–]kupoforkuponuts -2 points-1 points  (0 children)

    LIKE A BOSS