IIRC, they were doing things like patching bittorrent to prefer closer IP's to pull from during their deploys. So it would roll through their network from 1 side to the other without just completely saturating the entire network.
But the point still remains, they had challenges to solve, but they were also simple, which made it possible TO solve those challenges.
I don't know that I would call the Pareto Principle a mental model.
But having said that, for me software dev is supposed to be chaotic and that's ok. I describe it as boiling water. There's a process going on, but if you look at it you'll see a lot of activity and churn, but it's still a steady move towards an endpoint (no more water).
I believe simplicity trumps all unless there's a very good reason. A developer must be able to honestly introspect and ask themselves how much experience they really have in the current domain. If the answer is anything less than "a whole heckofalot" then do the stupidly simple thing instead of the complicated-thing-that-might-save-time-in-the-future.
I think code has an ROI. If you write a stupid, simple brute force method and it works for 6 months, it's not a failure to have to rewrite it. You got an ROI on that code, and you now have a more concrete idea of what your performance needs are. If the new code sits for another 2 years and then needs a rewrite, still not a failure. Outgrowing the current solutions is called success, but I've found a LOT of developers feel as if it was a failure due to not anticipating future needs.
I agree emphatically with the above poster about the 80/20 rule. I call it the 80% solution. This is particularly useful when automating things. For example, if you're a hosting company running VPS's and you want to automate the creation and destruction of those VPS's. It can be useful to have a human hit a button to confirm the destruction.
It also changes how you look at software used by users. It's a tool to assist them rather than trying to engulf the entire problem. It can be completely ok to allow the user to download data into excel, do what they want to do, then re-upload it rather than trying to recreate excel in your software. These types of systems are often times more productive for users.
I do it very occasionally, usually when I realize I need some form of code that I've deleted. I'll undo, copy the code, redo up to where I'm at, then paste and edit as necessary.
But I don't do this every 5 minutes, that's just mind boggling. And my reason for doing it isn't that I can't remember or couldn't recreate, it's that I use copy/paste a lot to avoid errors from typo's and the like.
It just seems weird to have to do this that often.
> I don't consider myself "on the left" but I really don't mind a publication being left of center or right of center.
As someone who is slightly left of center, it's kind of a painful place to be.
You tend to get attacked by both sides.
Personally I've just kind of checked out. I'm not sure there's actually anything relevant that gets said on these newspapers/media that you can't get from just being in online communities, and you'd have to sift through all the shit.
For example, sometimes I'll come across a Tucker Carlson video on youtube and about 80% of what he says is just biased bullshit, but he will make good points sometimes. It honestly makes me miss Jon Stewart. At least we had a means of laughing at them, now they take themselves so seriously.
And the hard on for Joe Biden makes no sense to me either, he's a sleezeball and how people can't be angry at the democratic party for putting up two horrible people in a row I'll never know.
I would be completely happy if IOS by default did not allow all the things it doesn't allow, but you could add a setting to allow 3rd party app stores with a list that apple curated themselves (similar to search engine preferences in a browser).
Apple can make it all scary about how the apps on the 3rd party applications could be doing more nefarious things. I would even be ok with apple having the ability to simply refuse to install specific apps from these 3rd party app stores for things that are egregious violations of ethics.
but I've just read too many stories about Apple rejecting apps over very innocuous things, and apple rejecting smaller apps but allowing the same thing in larger apps (anti-competitive).
I don't necessarily disagree with you, but I think you're overselling it a bit.
I've often found myself arguing that C++ has a simpler type system than the likes of C# and Java due to the latter's pragmatic bifurcation of their types. The C++ type system is certainly a lot more consistent. I know that MyType is passed by value, &MyType is passed by reference, and &&MyType can be reseated. Boom, you're done. It works the same whether it's an integer, a struct, a union, or a class.
Whereas int and Int are not the same thing in Java, autoboxing is a thing, and updating the value in a function may or may not update what the caller see's.
Same thing in C# only they were a bit smarter about it (they had hindsight). Instead generalizing it to value types vs reference types, but now you have a whole slew of rules to keep in mind, especially around nullability and default values. Just the other day I had to remind myself that in C# KeyValuePair is a value type and therefore cannot be null so the linq method 'FirstOrDefault' will return a tuple with all of it's elements default initialized.
You don't have any of these types of questions in C++. I've argued for years that the type system in C++ is simpler. Most think I'm a kook, and I understand why, but having worked with C# from the .net 1.0 days and C++ from the mid 90's, I firmly believe it.
OTOH, there __IS__ a lot of accidental complexity in C++. This generally comes from three places.
1. source compatibility with C. Sometimes this interacts in weird ways with C++, and sometimes it's just C. This is absolutely worth it. Until zig no one had interop with C as good as C++.
2. C++'s mantra of not paying for what you don't use (exceptions being the ... exception), and an extreme focus on performance. This can cause ergonomics or some of the downsides of approaches to be extreme.
3. simple lack of hindsight. auto_ptr and its interactions with containers such as vector are a perfect example of this.
There are a lot of gotcha's and surpising behavior and things you just need to know (such as when you need a virtual destructor). C++ is absolutely a complex language.
Do I think it's significantly more complex than rust? No I don't actually, but it can't be denied that C++ is complex (Rust is complex). People way oversell it, as if it's next to impossible to write good, stable code in C++ without being an absolute guru. Nothing could be further from the truth, and imo good C++ code __LOOKS GOOD__.
There flat isn't a language out there that can shift from high level code to low level code and I would argue the abstraction abilities of C++ is also stronger than Java or C#.
I absolutely love C++, but it's definitely complex. But that complex IS typically there for a reason.
> Eg TypeScript has convincingly shown to a large crowd that soundness isn't an important property for many key goals of static typing, such as programmer productivity, refactoring support, preventing stupid mistakes and navigating large codebases.
Typescripts goal was to interoperate with existing javascript in an easy manner, and doing so forced them to relax the type system in specific ways.
It turns out more typing is better than less typing so typescript > javascript. That doesn't mean something with stronger typing than typescript isn't strictly better in all of the facets you mentioned, just that typescript made that particular tradeoff and had MS behind it.
> Usually a person with good empathy can pick up on social spectral disorders after some time and factor for this in their communications capabilities. This is often not a hard barrier.
There is no such thing as a perfect person who can do these things perfectly. There is such a thing as an imperfect person who BELIEVES they can.
It takes two to tango, and it takes a minimum of two to communicate.
Just this morning I had a quick discussion with a woman who asked me a question. When I responded with an explanation she realized I misunderstood (her question was meant to clarify an earlier statement of mine) and clarified, at which point I realized I read it more negatively than she intended. I acknowledged it and we both moved on.
Neither of us is super awesome or sucks, we're just two people trying to get through the day. We get along relatively well and this interaction neither diminishes nor exemplifies either of us. It's simply the human condition.
Acting as if you, by yourself, can be the sole arbiter of good, successful communication, is exactly why people often hate "people managers".
> If a person commits to an action that is potentially harmful they must be halted and corrected even at cost of some minor embarrassment. If that person then attempts that harmful action again they should be severely counseled. The harshness of the words should reflect the severity of the failure. Empathy doesn’t mean agreement or kindness which are akin to sympathy.
I don't agree with this either.
The big secret people don't want to acknowledge in terms of "people skills" is that if you can't get along with people who are significantly different than you, you don't actually have great people skills. It's easy to get along with people like yourself.
Time and time again I've seen a "people person" complain about someone else not having people skills and being difficult to work with.
What managers in particular need to understand is that they work with people all day, which is malleable. You can walk into a room and get what you want through sheer charisma and willpower. But Engineers work with reality. No amount of charisma and willpower will fix that bug, or keep that bridge from collapsing.
The result of this is a fundamental difference in values and worldview. The good managers recognize this and don't mentally accuse an engineer of being on the spectrum (and treating them differently as a result) and/or being difficult to work with because they don't appreciate their charisma over reality.
The real "secret" is to simply accept people for who they are. If that Engineer doesn't appreciate your charisma as much as you think they should, accept that they're trying to do a good job in their world and don't hold them in a negative light as a result. And don't try to manipulate them either, acceptance is not manipulation.
As for your specific example, calling people out in front of others is exactly what you DO NOT do. The better approach is to let it be unless it's bad enough that it needs to be dealt with. I say this because it allows the other person to approach the offender themselves. If you're REALLY worried about it, talk to the person it happened to and see how they feel. encourage them to approach the offender. If they're not the personality type to do that (dislikes confrontation) THEN perhaps you can facilitate that conversation.
In my 24 years in this industry I've only ever had a single person who did not apologize profusely when approached by me about something they said or how they were acting towards me. The typical response is roughly "I'm sorry, here's what I meant or what I was trying to do".
People don't set out to hurt others feelings. Oftentimes it's an accident because they're valuing something else, or they're in the heat of the moment. Communicate with them and allow them to communicate and you can often times create a better environment for everyone.
But calling them out in front of everyone? Not a good idea.
> So, the guy basically wanted to totally lord over people and be able to fire them essentially at will, or worse. Can't say that I'm very sympathetic here.
That seems like an unfair interpretation to me.
The guy wants to be able to do what's best for the team. We've all worked with that one guy who shouldn't be there, but is.
I don't disagree with your point, but influencer nowadays is active whereas a simple ad is passive. Due to this, the modern day influencer (aka person) is absolutely a psychological manipulator.
There's a certain class of people who believe the free market can solve all problems, and for these people, the way you inject said free market is by using insurance.
The thing is, you're right about it being convoluted and hard. But when you believe the free market cures all ills, you reach for the hammer even if what you're looking at is a screw.
Similar to the adage "everything's a dildo as long as you have the will", the other truism is "everything's a nail if your hammer is being enough".
We really just need to fire bad cops, but that solution isn't tenable due to police unions. The real solution has nothing to do with the cops themselves and everything to do with busting the police unions.