The only reason these services got market share in the first place is by using other money (other division's income, or vc funding) as loans to undercut the competition, such as by offering prices cheaper than probably sustainable in the long term. Eventually, the loans must be repaid, which means the undercutting ends if it's not sustainable. In "real" businesses, that initial capital is used to develop something that'll be sustainable (knowledge, new technology, new products). In these industries with well established economies, there's often not something actually sustainable to develop, so eventually they have to fall back to the original economics of the industry (or shift the economics to something else that may or may not be better).
I've become a lot more really leery of "free" services, and a bit more okay with spending money when I think it makes sense. For example, I'm anti-Amazon Prime because I realize it's basically a huge loss just to get you into ordering more items from Amazon to keep their total revenue and usage high as they've diversified into even less savory business practices due to their market share. Tech companies over index too much on convenience because consumers want convenience. We should be okay with less convenience for a greater good.
I try to mention this every time I notice any major publications (WSJ, WaPo, NYT, Economist, Bloomberg, HBR) post basically trash under their main, but especially their "Opinion" channels.
I think they're trying to reckon with their ads business model not succeeding in the online world, so their editors allow these controversial pieces to exist as a means to retain viewership by appealing to some mob anger.
I also want to mention that of all the news agencies, I have consistently not felt this way from anything from the Atlantic, which is the only publication I now subscribe to, because this work is kind of nonsensical.
There's been no change, in fact the numbers have gone up because the program has become even more competitive.
Some people in my year (2016) couldn't leave Canada due to visa issues. Most who left are still in the States. 2018s had a higher % US-bound, and so did the 2020s.
The textbook is the only real textbook I've bought after university because it's so... foundational.
I like to refer to programming paradigms as the building blocks of design patterns -- how do you derive design patterns and best practices? By trying to bring programming paradigms into your design! Our practice of immutability can be viewed as a means to make data flow more deterministically.
As an Android developer on apparently one of the N biggest apps there are, lots of hard truths but also lots of 'I like things this way so I don't think things any other way is fine'. It's problematic and in an ideal world we could do so much better, but as they mentioned, there's a lot of cruft and backwards compatibility. Have you tried writing a Win32 app?
---
AndroidManifest.xml vs code declared, the manifest in reality is very different. An "app name" isn't really something useful programmatically. Orientation can be handled programmatically, but you can declare app-wide support for what kind of orientation you support in the manifest.
One syntax is really a style preference. I don't mind using different tools for different tasks, and the manifest is very specific to a specification for the app store, not on-device.
Java vs C++, meh, I think the main idea is that Java is a better language for most people than C++. Especially whatever C++ version existed when Android first came out.
Low-power is kind of a bad argument and pre-mature optimization without real metrics. It's been pretty clear that the reason phones drain the battery is because of the screen, and background jobs hogging the CPU, not running the JVM. Maybe running some compiled binaries would be more performant, but laptop batteries kind of also suck.
Keyboards, yeah, a bit weird, but the idea is that you almost never need to interact with the keyboard, you interact with elements that the keyboard injects into, since people can swap and use custom keyboards and other ways to enter text like dictation or accessibility modes.
Very true that all of this is not newbie friendly though. Shockingly bad really. Especially the status bar APIs.
Save State and process death is also a hilarious one that's underdocumented and confusing to new (and experienced) developers alike.
Its not an argument of Java vs C++, its a platform trying to force their language of choice on to everyone, thinking existing code, experience, and workflows doesn't matter.
I like running the above command because it gives a good sense of coding productivity at the very least. And then you can dig into specific people to understand why exactly they have lots of commits or not. Most people use Git in a very similar fashion so you can very quickly make a generalization about how they commit if you look through their last N commits.
Some 'high commit count' people have lots of low value commits, e.g. lots of 'fix it' commits.
Other 'high commit count' people are very productive but mix in a lot of atomic commits, e.g. lots of 'another commit to change this comment', leading to a PR of 9 super small commits + 1 real commit, that's readable alongside their actual work.
Others are actually just more productive than other people. That might be because their code changes are simpler, or in an area that's easier to be productive in and write lots of code. Or they just work more. Or they work at a higher velocity because they understand the codebase and domain better.
Definitely don't _only_ use these metrics because some people just code slower and put out 1 large PR, but I can definitely believe a pattern of people at the top end of productivity who put out both small and large PRs at a higher velocity than the 'less productive' people.
I would honestly just attribute those high value, high commit count people to being stronger developers overall, in my limited experience. Overall as in, not weak in any particular area, and quite strong technically in every area. The people you can put in any situation in the domain and they'd probably succeed. Because they're strong across the entire codebase, their productivity is just generally higher no matter what they're doing.
I've become a lot more really leery of "free" services, and a bit more okay with spending money when I think it makes sense. For example, I'm anti-Amazon Prime because I realize it's basically a huge loss just to get you into ordering more items from Amazon to keep their total revenue and usage high as they've diversified into even less savory business practices due to their market share. Tech companies over index too much on convenience because consumers want convenience. We should be okay with less convenience for a greater good.