36
Wombat
7y

"Don't reinvent the wheel..." - I read it often, still I hate to use foreign code. It's not only that I do it for learning purposes. I just don't trust them. I want to keep the control, I want to understand my application and I want to be to blame when things fuck up.
I would probably through my laptop if my website gets hacked because of some fucking plugin or code I found somewhere on the internet.

So yes, I will invent the wheel new. At least I will spent some time to understand how this particular wheel is made, how it rolls and how I can improve it for my specific situation.

Sometimes my tires have some uncommon profile, but they fit to the stuff they are made for.

Comments
  • 12
    I used to be like that as well, then I took an arrow... Ok no its just after years you start to embrace existing platforms really for the offload of responsibility and most frameworks or platforms are usually kept better up to date then yours just because they have a team of community behind them. Thats not to say you should use the first thing you find on Google, dabble around a little before deciding
  • 9
    I agree and disagree at the same time. In working hours I relatively often use foreign code, but it depends how much time I would need to build it myself. In working hours time is money and my boss wants to see results fast, because of that I often choose to use foreign code. Even if it hurts me in the long run.

    In my free time it's completely the opposite, I even code my own JS framework and templating engine. And just for the fun of it. And of course it's for learning purpose too, but that's just a benefit on the side.
    I like doing the stuff others did before me and do it even better.
  • 2
    @plusgut your arguments are valid.
  • 1
    @Divisionbyzero what are you reinventing currently?
  • 12
    You are but a dwarf standing on the shoulder of giants.

    If you cannot trust the code by communities of seasoned developers probably smarter than you, why can you trust your own?

    Some libraries have human-years invested in them greater than your entire lifetime.

    And for some problems, I gladly trust experts. Especially if it's about algorithm about encryption. If I were to implement a password checker, I would make a bunch of mistakes that have already been solved as a lot of smart people have thought about attack vendors that I didn't even assume to be possible.

    I once wondered why a password checker would iterate over the entire string length of the input hash. As you can guess the right password within a brute force attack by measuring how fast the request is. Hence you want the password check to always take the same time so that an attacker cannot tell. Mind blown.

    Does it mean that the implementations are bugfree? Hell no. Yet you won't get fired for those bugs.
  • 8
  • 1
    @k0pernikus how it comes that I dont trust the work of others but my own?

    They don't have the same priorities and same opinions as I do. When I do something in my freetime I can do it exactly as my taste is, they can not - because they have not the same taste as I do. And because of that, the stuff they cook doesn't taste as good to me, as the stuff I do myself.
    And also I'm a narcicisst.
  • 6
    @plusgut And that is a good thing.

    Linus Torvald didn't like the taste of all the version control systems and hence he created git.

    Other people like the taste as well and entire businesses are now created around it.

    So reinventing the wheel is not bad per se. Just make the reinvention significantly better than the current alternatives. Having a killer feature is nice.

    To me, git wasn't so much reinventing the wheel but breaking the wheel and replacing it with an photonic laser thruster.
  • 1
    @k0pernikus I would not even say, that the thing you are rebuilding has to be better in any way. If it's not doing better, it will probably does not have success, but you still build something and learned something from it, or just had fun doing it.

    And that is in my opinion good enough. Why wouldn't you redoing something if you like doing it?
  • 1
    @plusgut That depends on who is paying your development time. As a hobby, reinvent whatever the hell you want ;)
  • 1
    @k0pernikus that's exactly what I said in my first comment :)
  • 3
    I can certainly empathise with the OP. Within reason, of course.

    I've lost count of the number of times I've used some plugin that I've subsequently discovered doesn't *quite* do what I want it to do, or the client has then asked for some additional functionality to be grafted on for which I must then manipulate the 3rd party code in order to accommodate.

    In short, it's the unforseen time spent on reverse engineering someone else's code, as opposed to the holistic understanding you gain having built everything yourself.
  • 1
    @Inigo holistic understanding of my own code? Oh how I wish. After six month, it could as well have been written by a stranger ^^
  • 3
    @k0pernikus haha, yeah that can happen. But I find I can usually tune back in relatively quickly most of the time, especially if I was kind enough to leave myself some comments. I've been appalled at some of the code I've written in the past, but I can't say it's ever been completely alien to me to the extent that someone else might as well have written it
  • 3
    The good thing about reinventing the wheel is that you can get a round one.

    Douglas Crockford
  • 0
    @plusgut I try to do everything I need on my own. So I recently did some js stuff. I avoid jquery an therefor I build some helper functions for working with classes and stuff.
Add Comment