Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Search - "refactoring; generic;"
-
So you build a beautiful site; you spend good time on UX, refactoring, server optimisation, getting good page load speeds, SQL all optimised - life is good.
Commercial team comes in and slaps clickbait, generic advertising, tracking scrips over the lot.
Page loads go from a second to 30 seconds and even though you made sure all those crappy ad scripts are asynchronous pages still hang most times. PingdomTools lists your page scripts as going from 40 files to over 900... now users are ringing me up giving me grief about how slow this new company website is...5 -
Ah good ol' refactoring summer.
*Me starts refactoring spaghetti bolognese*
- Hurrah everything can be generic and so much better. I'll just do this and this and this and this, oh and this also needs to be reworked cuz of this.
8 hours later.
- it wasn't that bad!
$ git status
- oh god
$ dotnet test
- welp.... I need something to do tomorrow.4 -
For some reason I keep over engineering stuff to the point I spend 2 hours thinking the best way to do something. I'm making the backend for a project of mine and I wanted somewhat decent error handling and useful error responses. I won't go into detail here but let's say that in any other (oo) language it would be a no-brainer to do this with OOP inheritance, but Rust does OOP by composition (and there's no way to upcast traits and downcasting is hard). I ended up wasting so much time thinking of how to do something generic enough, easily extendable and that doesn't involve any boilerplate or repeated code with no success. What I didn't realize is that my API will not be public (in the sense that the API is not the service I offer), I'm the only one who needs to figure out why I got a 400 or a 403. There's no need to return a response stating exactly which field had a wrong value or exactly what resource had it's access denied to the user. I can just look at the error code, my documentation and the request I made to infer what caused the error. If that does not work I can always take a quick look at the source code of the server to see what went wrong. So In short I ended up thrashing all the refactoring I had done and stayed with my current solution for error-handling. I have found a few places that could use some improvement, but it's nothing compared to the whole revamp I was doing of the whole thing.
This is not the first time I over engineer stuff (and probably won't be the last). I think I do it in order to be future-proof. I make my code generic enough so in case any requirements change in the future I don't have to rewrite everything, but that adds no real value to my stuff since I'm always working solo, the projects aren't super big and a rewrite wouldn't take too long. In the end I just end up wasting time, sanity and keystrokes on stuff that will just slow down my development speed further down the road without generating any benefits.
Why am I like this? Oh well, I'm just glad I figured out this wasn't necessary before putting many hours of work into it. -
Sooo. That starts to be a bit annoying:
I'm working on a large refactoring with a pretty good inheritance / generic system. And some code generators.
Rghjt now I'm doing a script which generate code files, which will generate code-gen templates which will generate final files.
It's funny and it's a one shot generation, but still. So much abstraction.
(End result is good tho. Everything in small files less than 15 lignes of code. Everything structured.)