• 0 Posts
  • 12 Comments
Joined 1 year ago
cake
Cake day: August 2nd, 2023

help-circle



  • I’ll often cludge something together just to make it work but I don’t feel like I made any progress

    That’s a good first step! I’ve been programming for ~25 years and that’s still usually where I start. Get a little code that compiles and produces some kind of output or tracing. Then compare the output to your requirements and tweak the code to get it closer to the right behavior. Run it and repeat till it’s doing what you want. Do this cycle with small changes, like a handful of lines or a short function, not 20 mins of coding at a time.

    Test-driven development can also help with breaking down tasks. It takes a good amount of practice to learn the right patterns, but it’s an approach that forces you to work with small narrowly scoped tasks. Then you chain those testable tasks together to create more complex behaviors to create robust testable code.

    Experience takes time. Junior developers frequently ask me after I’ve helped them “but how did you just know how to do that? I’ve been trying to solve that for an hour and you did it in 10 seconds!!” The answer is because I’ve solved that exact problem before. More than a few times.





  • My cousin got a job working on FOSS for 5 years out of college. His secret? Work 40+ hours a week literally for free, crash on people’s couches, and get his girlfriend to feed him. He eventually got a real job because that’s obviously totally unsustainable.

    Unless you have a sugar daddy/momma or a trust fund, you need an actual job. Some companies make good use of FOSS and give back to the community. But I’d suggest settling for any job to get an income and experience while you figure out what companies you actually want to work for.



  • I don’t recall which Java environment was used; I’m not a Java developer so some of those technical details went in one ear and right out the other. They did implement snapstart for Java lambdas and that made the warm start time similar to Go. But the runtime performance isn’t even close after they put a bunch of effort into trying to optimize it.

    I truly can’t recommend anything other than Go for lambdas. It’s better by every metric and it’s a lot easier to manage your infrastructure (just a single binary file with no file or environmental dependencies; it doesn’t get any more straightforward than that.) I’d definitely recommend doing a PoC to compare performance for your specific workload in Java vs. Go. As long as you have devs capable of writing Go, it’s a real winner. If you don’t, I’d still go with nodejs lambdas over Java; Java still seems to require a lot of tweaking to get its performance comparable. It’s a 30 year old swiss army knife, and it shows.



  • C# was my favorite language to use, though I haven’t touched it in 7+ years because I don’t do any windows or desktop UI development anymore. It feels the most expressive and doesn’t get in your way too much. It has all the mainstream OO language features while not feeling overly burdensome like Java.

    Go is now my favorite to use because it’s super fast at runtime and I don’t have to deal with a bunch of environmental and framework nonsense at runtime. It’s hands down the fastest runtime for serverless lambdas, which is the majority of my work. I have several gripes about the language, namely the embarrassment that is their implementation of type inheritance and generics, but the lack of ease for the developer is offset by performance. Java handles that stuff better, but I’m not trading a little ease in dev cycles for 20x longer cold starts and 5x poorer runtime performance. (Actual stats based on some use-case specific testing we did)

    TypeScript is my fav for frontend dev (React), but it’s not as if there’s any choice there. I used to be a plain-JS psychopath, but then I had to work with other people on projects and TS makes that waaaaay easier.