this post was submitted on 30 Jul 2023
142 points (95.5% liked)
Programming
16760 readers
209 users here now
Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!
Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.
Hope you enjoy the instance!
Rules
Rules
- Follow the programming.dev instance rules
- Keep content related to programming in some way
- If you're posting long videos try to add in some form of tldr for those who don't want to watch videos
Wormhole
Follow the wormhole through a path of communities [email protected]
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
Curiously "my way is the best way" is (IMHO) the greatest cause of problems at the design and architecture level in the Programming World.
I've worked for almost 2 decades as a freelance designer-developer (aka contractor) across various industries and even languages and frameworks (all the way from server-side Java to web interfaces and iOS applications) and one quite common scenario was me being hired because some piece of software was pretty much unmaintainable, and that was almost invariably that either a single designer-developer did the whole thing themselves during their oh-so-special learning stage were they've just learned software design and overengineer everything (in OO that usually means things such as totally unecessary, all the time, use of design patterns and inheritance for stuff were there is always and only 1 implementer) or 3+ people simultaneously or over the years who each got responsability for that software or part of it and decided "I know best" and proceeded to add a whole new layer with a different software design strategy, coding standard and sometimes even a different language, the result after a few of those being pretty much spaghetti code AND design and some of the most "interesting" bugs you can imagine (due to mismatching assumptions between layers).
By the way, you do notice exactly that kind of crap coming out as APIs and Frameworks from the kind of companies (*cough* Google *cough*) whose idea of Technical Architect is somebody with 8+ years experience and who never worked elsewhere: notice how the Android stuff has had various strategies for doing the same thing over the years, the API has grown over time massivelly (it was already too big and messy to begin with), there's code-generators in the IDE to try and cover the gaps between newer techniques and older ones and they've even introduced a new language half-way for no actual architectural advantage (the pinacle of "I know best" "genious" is making your own language).
Personally during my time as Technical Lead I used to hire people very much based on "have you ever worked on a project over its entire life-cycle?!" because those burned by their own ignorant-yet-pretentious stage are the ones who get it that Ego is less important that pretty much everything else in making software and I firmly believe that "having seen and having had to maintain the results of your own fuckups" should be a requirement for anybody designing an API or Framework.
well summarized write up.
I am working on a 50 year old codebase which little documentation since "tHe COdE iS tHe ManUaL"...
its in the academic field although this does not mean that people took care about it.
and due to porting to newer language styles this thing is near impossible to get into.
I understand that times have changed much.
however to maintain this stuff progress has to be put on halt until a system is established to clean up this mess of 30 years of spaghetti code (assuming for 20 years it was alright)