Thank you for a very well detailed explanation.
Since I’m a junior dev I suppose I won’t have huge projects to compile.
Now that ML light testing did scare me.
The only reason why I didn’t consider the M1Pro 16gb is because it goes to 2000eur and that really blows my budget. I can buy it, but I really wish I didn’t have to.
So you’re saying a 16gb M2 Air would really not last long term?
This rMBP 2013 did last me +8 years to be honest ahaah
Thanks
I think you hit the nail on the head in this decision: longevity vs upfront savings. That's a tough call to make for most people b/c why pay for something you won't use immediately but then on the other hand, you have the question of how long do you need/want to hold on to a machine to "make it worth it"? The answer will vary for people based on their work, their budget, and their own perceived value of their time/work. And that's just fine, you gotta find where you fit on that spectrum.
For us, the pay off in developer productivity is easily there to just max out everything but the SSD (but we still spec 1TB SSDs, 256GB barely holds OS + runtimes + assets, and with SSDs, you want free space to allow wear leveling to do its thing, which is actually important in even junior developer workflows).
I'd also let go of the assumption that just as junior dev you don't have needs: your title may not relate to your machine needs. Your time is still valuable, and if you're compiling even a "simple" project but it has many libs, you have the same needs as a senior dev: especially if you're working in a team where you're building a larger project, but even a small "hello world" that uses graphics, etc is pulling in a LOT of deps/libs and has to link them, etc even if you didn't write that "advanced" code.
CPU technology and evolution is less important for devs for the most part, esp as heavy lifting of things (AI/ML training, even some large builds) are happening on hosted services, but what IS very important is I/O and caching of large data structures (modern IDEs do this for auto-complete, etc) and the name of that game is RAM, RAM, RAM. And that will only grow, and I'd be confident saying that need is going to grow way faster than the needs of a continually faster CPU or more efficient CPU, so based on how much you can afford, I would max out the RAM to keep the life of the machine you buy today as long and productive as it can be.
I really think you will end up replacing this machine b/c you are starting to hit RAM maxes before limitations in your CPU/GPU (and are swapping, basically killing performance, esp in highly parallelized workflows, which most builds are), so I'd maximize that, and I'd go above the 24GB.
If $$$ is a factor, if I had to make this decision, I'd sooner buy a refurb/lightly used M1 Pro/M1 Max with 32GB or 64GB than a new M2, really.
But, you CAN use the M2s with 16GB, but I think the toolchain RAM footprints are only going to grow and you'd be well served going with a minimum of 32GB if you can at all afford it.
Waiting on builds is one of the least productive times developers have but also largely the most preventable/optimizable to a point, even if it is taking a build from 60s to 30s (an incremental build on a hot reload style system maybe faster, but even then 20s vs 10s) but 100x times a day, even that 10s adds up...that is how I justified that decision in my budget as what our machine config baselines would be for developers.
Put a $ value on your time, then think about the $ value you may save, and think about the price diff up front and hopefully that can help guide you! Also, think about the "brain damage" you have sitting and waiting that, even if your time was "free" (it isn't, even as a jr dev, it is worth more than most people think!), it is proven that distractions (what do you do or where does your mind wander while you wait) hurts productivity beyond just the time you waited. There is some VERY good research out there that is very academic and well studied that proves it's WAY more than just the time you save!
Your "right" answer today is likely different than your "right" answer at a different time, and your "right" answer is likely VERY different from mine or others (or maybe not), but just saying that to really think more about what TRULY is an investment that has a pay off vs "new and shiny" emotional appeal (sexy new M2 vs used 1 yr old machine maybe not the same "shiny new" adrenaline hit, but likely a much better choice as the asset itself has depreciated and is still very powerful, maybe MORE powerful for what you need for what you'd spend on shiny and new), OTOH, maybe you don't "need" that much RAM, but I suspect you do or will. If you look into how Xcode and other tool chains like Expo, Flutter, etc compile, even simple projects are highly parallelized and can benefit greatly from not paging things out and having higher memory bandwidth (remember, the M1 Max has 400Gbps of memory bandwidth, the M1 Pro has 200Gbps, the M2 is currently only 100Gbps, this is not trivial, this makes a big difference in RAM-intensive workloads, which programming is: how quickly you can get that AST from memory the compiler uses to convert high level code into byte code to the CPU for a lookup/traversal/whatever and the result back into RAM, etc, etc is WAY more important than straight line CPU speed many times as are caches, which, again are much smaller on the M2 [for now, until the higher end variants of the M2 make an appearance]).