• 5 Posts
  • 17 Comments
Joined 9 months ago
cake
Cake day: October 14th, 2023

help-circle








  • I’m not caching or reusing method results however, and even the inputs are not necessarily cached for multiple uses. I’m just preparing all potentially required input data before the method is actually called so I don’t have to do any loads within the method itself, so the method is just pure code logic and no db interaction.

    For example, imagine you have a method that scores the performance of an athlete. The common “pattern” in this legacy code base is to just go through the logic and make a database load whenever you need something, so maybe at the beginning you load the athlete, then you load his tournament records, then few dozen lines later you load his medical records, then his amateur league matches, etc.

    What I do is I just load all of this into a cache before the actual method call, and then send it into the method as a data source. The method will only use the cache and do all the calculations in-memory, and when it’s done the result would be in the cache as well. Then outside of the method I can just trigger a save or abandon it to persist the result. If I want to unit test it, I can easily just manually fill a cache with my data and use it as the data source (usually you’d have to mock custom response from the repository or something like that, inject an in-memory repository with the same data anyway or just resign to using an integrated test).

    It’s like I’m “containerizing” the method in a way? It’s a pretty simple concept but I’m having trouble googling for it since I don’t know how to call it.



  • I only have half as much experience as you, and none with Go specifically, so I can’t give you any good answers but I can say I empathize - the company I work at is also stuck with a legacy monolith that’s still on .net framework and everything is so coupled that it’s impossible to even unit test, less alone deploy the projects separately. Some people aren’t bothered even with the basic principles of code writing and the senior people are just overworked and can’t keep tabs on it even if they wanted to.

    The worst part is that the company is mostly either juniors just doing what they are told or older seniors that are stuck in their ways and are afraid of anything new - although as I got older I started to see why that might be the correct approach, not everyone wants to learn and adapt to new tech and it’s a big ask of the upper management to risk it on that. Basically we’re just repeating the same mistakes and wasting time fixing known errors that keep happening and any actual improvement or proper removal of tech debt never happens.

    So yeah… I’m starting to believe that “clean good code” only happens either in hobby projects or new startups. Any larger, “stable” codebase of a larger company is going to be an inefficient mess however 🤷‍♂️





  • I use the CLI for simple commands, especially if helping someone on another PC and I don’t have access to my preferred tool, but I honestly don’t get people who use it religiously and never even try tools with GUIs. The convenience of being able to easily see the commit history, scroll through it, have a right click context menu or ability to just click it and see file changes (and then right click those files for additional options), is just something I can’t abandon. Nowadays even the aliasing can be replicated in those tools if they support creation of custom commands so even that is a moot point - with some setup you can be as fast as with a CLI.



  • Hmm, having googled very superficially about django and flask, it seems to me like the state (at least today) is the opposite - flask is lightweight and django is more heavy duty, having a built in ORM layer, authentication service, admin interface, db migration framework, etc.

    To be fair the article also says Django is known for its performance but when I googled that the other day, it looked like it was often near the bottom of the chart rather than top… I guess it really comes down to personal preference in the end 🤷‍♂️



  • Thanks for the book recommendation, I’ll definitely check it out! The course sounds really helpful as well, I imagine there are many remote classes like that nowdays or as part of learning sites like pluralsight so that might be worth checking out. If there’s one conclusion I got out of this thread so far is that it is pretty much something you have to learn and practice in advance and then hope to use appropriately, there’s no sure-way or easy way of finding a pattern once you’re already faced with a problem.


  • Seems like on one hand, programmers (online at least) are really against being questioned during interviews about whether they “live the code” and spend their free time on contributing to other projects or developing their own, but if this is really the only way to learn stuff like that then maybe they have a point. I was hoping there’s a better way but I guess it’s the same as always - work enough and hope the stuff you learn ends up being useful one day…