Cities are likely to be much safer today than they were when you were growing up. It's the adults' attitudes to seeing kids alone and unsupervised that changed.
Uhhh no. When I was a kid there was viturally zero chance of running across used needles at the park, nor being harassed by homeless people on public transit. Look I want to make cities work as much as the next guy, but at some point I’m going to vote with my feet and signal that things are not acceptable.
Any homeless person who's not completely bonkers knows that harassing a lone child on public transit is just about the worst possible way of attracting the attention of law enforcement, since other adults might ignore harassment of other adults who seem to be dealing with the situation but will step in to protect a child. In all of my life living in large cities, I have never seen something like this happen, nor came across any news of something like that.
This seems to be in the same category as not letting a child walk alone to school, in a Western country, because of fear of Islamic terrorists -- possible, but so unlikely it is statistically improbable.
> I am saddened that the dream we all shared of allowing small towns to once again flourish, because knowledge workers could be located anywhere on the planet, are being quickly forgotten in favor of ultra-dense citiscapes.
It was always a futile dream, mostly propagated by people who themselves enjoy small towns and certainly not "shared by all". It turns out that many knowledge workers actually like big cities for the leisure options, health services, people and neighbourhood diversity, much bigger selection of potential life partners, and high availability of jobs.
Circular? Remote workers means, there aren't more jobs just because you're in a city. As for neighborhoods, an expanding cityscape of just more apartment blocks means no neighborhoods at all.
As for leisure options, a beach shared by 1M other people is not much of an option. Living in Colorado has orders of magnitude more leisure options for instance.
Isn’t that why Colorado cities are some of the hottest markets to be in right now? I’ve heard a lot of complaining from people in Denver, Boulder, Aspen, etc.
I bought a super cheap Toshiba laptop for taking notes in college. One of those ~$250 ones. Completely unusable with the included Windows 10, but sailed with ElementaryOS.
I put Fedora on it first, and it was mostly fine but Gnome was too slow for my liking. But then again I was usually taking notes in vim in a terminal, so that probably wouldn't have mattered in real world use.
This kind of problem is why my conscience is clear when I use KMS cracks. I legitimately own about two or three Win10 licenses, but can't actually use any of them for various reasons.
Life's too short to put up with bureaucratically obstructive licensing schemes.
Rockstars are lone wolves, write unmaintainable code that works quickly for demos but gives the company pain for years to come as nobody can figure out how to make it stable or maintain it. A rockstar's reputation is self reinforcing because it's easy to get a lot of shit done when one doesn't have to worry about maintainability, communication with the rest of the team members or the company at large, and service.
Senior devs balance development work and "service", a term I'll borrow from academia - hiring, mentoring, speaking, writing docs, etc. They either find fun in these tasks as well (I legit enjoy interviewing and mentoring), or understand this is a necessary part of being a well functioning team player at a senior level.
You hire the rockstar to write version 1. That's the one that gets you to market fast, and the one you should be planning on throwing away. It's the one you keep in production as your non-rockstar ninja and guru coders write version 2 from scratch. Once you release version 2, you really need to fire your rockstar. They will never be happy in maintenance mode, and that's fine, because they're usually bad at writing for maintainability.
Then you can hire some boring reliable folks from the khaki-and-polo brigade to help upgrade version 2 to version 3. This is when you have an opportunity to hire juniors and mentor them on what good software actually looks like, and how to make good-enough software better. The ninjas will probably leave at this point, and if they have done their job, the company will never need that level of expertise again in a permanent employee. The gurus will stay on to be an expert in your specific system, and teach the new people how to preserve its grandest traditions.
The problem is that a lot of companies never get to what I call "version 3". They might slap higher release numbers on it every so often, but if they never did a clean re-implementation of the quick-and-dirty prototype, that's still "version 1.X", no matter how high the numbers go. You put a junior in that environment, and they're not going to become a stable maintenance developer, and that's where the majority of the jobs will be for the foreseeable future, especially for inexperienced people.
To sum up: rockstars live fast and die young; ninjas quietly demonstrate incredible skills, and vanish; and gurus are the high priests for your established project, who will eventually pay off all your tech debt, if you let them.
There are different breeds of senior developer, and you really want the gurus teaching juniors when they start to run short of other useful things to do. If you don't have the kind of company that is mature enough to evolve a developer into a guru, you won't be able to handle juniors. And there aren't enough companies that can handle juniors. It may be because they aren't honoring the full software lifecycle that includes the long, long tail of maintenance mode.
I think the never getting there often happens because management isn't aware of the current quality of their software vs hypothetical quality of a rewrite.
And I get it: I imagine every one of them has been burned by an overly optimistic developer. "It'll be rewritten in 3 months and run 2x as fast" types.
As a discipline, inculcating "respect that the years of person-work in the current version weren't done by idiots solving unimportant niche use cases" would be very healthy.
Labels like rockstar, guru and ninja are labels we don't need. We need competent generalists and competent specialists who can work in teams as well as work alone and can communicate with those who are part of the team or part of the management and user bases.
When a person takes on for themselves labels like rockstar, guru, ninja, etc. I don't doubt that they can write code, but I certainly doubt that they can write code that fulfils the needs of those who will be using it.
Labels likes these are a detriment to the profession. If we want businesses to take note and consider those in the IT profession to be anything more than ignored, we need to lift our game a long way.
What is IT known for (in the general sense), games, social media, search engines and lots of crappy software that users have to fight to get anything done.
Yet we have people and companies that produce great software that fulfils the needs of those who use it in a way that is not detrimental to those users.
It's coming up to forty years that I have been involved with the industry and I hear complaints every day from users who are frustrated by the inconsistencies in the software they are using, whether it be social media, business software, games, etc.
In general, as an industry, we are far too arrogant about our own self-importance and what we develop. Whether it be the likes of Apple, Oracle, IBM, Google, etc, the industry has forgotten that they only exist as long as people will tolerate the bull dust that is thrown at them by these companies. We are always looking for the "next big thing", yet many of the actual needs that we could be filling are not being done. We like flashy and not substance.
We don't need titles like that at all. Let's change rockstar to MVP Developer, Ninja to Builder, Guru to Experienced Builder, and the 3rd type of developer described in GP to Maintenance Developer. I think the industry could go a long way if it admits that it needs all 4 of these types of developers, so that expectations were transparent for employees and needs are transparent for developers.
I object to those terms. The rockstar is most definitely not the MVP. To the extent that I have worked with any, they are the insufferable primo donnos that fill the garbage bin and set it on fire then they proselytize their own trash fire to management until they think it is "hot", "energetic" and "enlightened". The rest of us then get stuck dealing with their legacy issues. If you're going to title-ify it, how about "prototype developer"?
The others can be "foundation developer", "transition developer", and "maintenance developer". It's still meaningless as long as different companies won't standardize on those titles.
We likely all know which category we belong to now, and which one we want to be. We also know that any company that asks directly for a "rockstar", "ninja", or "guru" is probably one to be avoided.
Yes to both of these, but there are other options as well.
The frustrating ones are those who talk a good talk about "doing things right" (and, generally, talk a lot...), but then work on something for an age and come back with a solution that's objectively worse than the "RIGHT NOW" solution we've been using in the interim.
I have that dream too. It seems that the more years I spend as a developer, the less I am comfortable to taking on technical debt. Maybe it is because there are so rarely opportunities to pay it off - and the interest rate is almost always way higher than anticipated.
Isn't that the message you get if you forcefully power off (long-press power) a hanging mac, instead of a panic where it would reboot automatically after the core dump?
> Really, the problem is that online services (startups that are shutting down are the worst offenders) are allowed to destroy user data with reckless abandon.
How much are you paying them, per month, to safeguard your data?
Respectfully, I don't think that's the right question to be asking. Yes, you're correct that since I haven't paid them they currently have no legal obligation to treat my data with respect (usually because I've agreed to non-binding EULA that is vague enough to allow for most abuses).
But look at it from a user's perspective. A small company shows up and says "hey, look at this great 'experience' you can get if you just give us some of your data". So the user gives them some of their data, and that overall builds the community around whatever the company is selling. Then one day the company decides to delete the user's data without warning (or without their acknowledgement or consent). The data itself had worth to the users, but more importantly it is the reason why the company has a community. The fact they didn't treat it with respect is an ethics problem. Just because users didn't pay you to act as a decent person doesn't mean you should treat their data as though it was worthless.
When Yahoo deleted GeoCities they managed to set the world record for the fastest destruction of the largest amount of user-created content. The entireity of GeoCities was several terabytes (in 2009 that was small enough to fit a few hundred dollars worth of hard-drives). Was Yahoo legally obligated to not delete 22 years worth of user content in a single afternoon? No. Were they complete and utter assholes for doing it? Absolutely. Was completely un-necessary? Yes.
The onus is up to the professional using the software to vet it before employing it in their practice, afaik.
There are some guidelines for writing software in regulated industries, eg: FDA Part 11 and Annex 11 in the EU for food and drug manufacturing.
However it's more of a speed limit situation. If you're willing to risk your client getting audited while you're speeding you could get yourself and your client in trouble with the industry watch dog.
That being said I think our industry does need professional recognition and liability. That's not a bad thing... it just means you can't be reckless and you have to have someone with a PE on your team. I know SV likes to move fast without their permission but that's insane when it comes to protecting the public interest. Just look at the vulnerabilities and shady practices in automobile automation, testing, verification, etc, etc.
We could do a lot better and build more reliable things if there were some guiding hands leading the way.
Historical reasons, most computer engineers and electrical engineers never bother to get their PE. Medical devices also have their own robust set of liability laws. Quality control is exhaustive, for the most part. (Security vulnerabilities excepted)
> I've been interviewed by clearly hostile engineers... is a superb data point in an interview.
I agree, having someone be clearly hostile to you during an interview (which is often the first impression of what the culture at a particular company is like) is a great data point for the decision on whether to continue with the process of interviewing there.