192 karma · joined December 6, 2012
The law is whatever society decides it should be. There is nothing inherently rational about it. You'd have to accept some pretty messed up things as rational if you actually believed that.
The way to do that is to have a communal backlog of work that people pick up tasks from, and to have an on-call rotation. Both of those things are rudimentary software engineering best practices nowadays. No one should be quietly maintaining things in their own corner. Situations like the ones described in the original post should be made part of on-call duties, or, even better, automated away.
From where I stand, software engineering has been an absolute boon. I have friends who are doctors, lawyers, consultants, traders, writers, salespeople, marketers... On nearly every metric -- pay per hour, amount of bullshit I deal with, variety and interest -- my job beats theirs. I started coding when I was 10 years old because I was a big nerd who wanted to make video games. I never, ever thought I'd make a top 3% salary 5 years out of college doing something I love. I'm tremendously grateful for that. I've been really successful by just being good at what I do, and that's mostly what I've seen other successful people do around me.
At the end of the day, unless you own your own labor, someone else will be profiting off of it. The lower down on the ladder you are, the bigger the gap between the value you produce and your income. But that being said, software is not such a bad place to be relative to other fields.
Even if some completely broken companies, this was good advice, it would be a recipe for a pretty pathetic existence.
In Capitalism, you profit from owning the means of production, not from working hard. Obviously, it can help, but not necessarily. There are plenty of start-up CEOs who worked just as hard as Jeff Bezos their entire lives, but aren't multi-billionaires, or even millionaires.
Cloning a directed graph seems like a perfectly reasonable interview question. It requires no specialized knowledge, just being able to navigate a fairly common data structure. I can't imagine a competent programmer not being to solve that problem on a whiteboard, which is precisely the point.
> A lot of programming is exploratory, and it’s quicker to get it wrong a few times and iterate than think to get it right first time.
It's really hard to get it wrong a few times if you have 10 other developers building on top of your mistakes. Then you're pretty much stuck with the code you thought you were going to get rid of. In accordance with Murphy's law, it seems like the code you push out knowing it sucks always ends up being the foundation for something really important. So yes, build the simplest thing possible. Yes, don't abstract pre-maturely. No, don't write shitty code on purpose.
Similarly advice with "copy-paste 10 times". While I agree that you should copy-paste 2-3 times, 10 times is way too many. By the time you've copy pasted something 10 times, it's too expensive to refactor. Or if you do refactor it, 5 of those 10 instances have changed beyond recognition and will be missed. They continue to evolve and now for the rest of the life of your software, you're fixing 6 times the amount of bugs.
If you are an alcoholic, you probably should check out AA in addition to checking in to a detox/rehab program where you will have a therapist and a psychiatrist. As a matter of fact, many "real trained and certified therapists" will suggest that you at least check out a few meetings.
What's important is to know that if it doesn't work out, it doesn't mean you've failed. But it's really, really hard to stop drinking when you are an alcoholic, and it would be foolish to exclude any safe solution that could potentially help you recover from a fatal condition.
When getting sober, there are worst things you could be doing with your time than socializing with other recovering alcoholics for an hour or two, even if you don't like the message.
I should add, I am an atheist and it was never an issue in all my time in AA.
My idea of a good modular file structure is that you could delete any random directory and delete it and it would lop off that feature as cleanly as possible. Each directory should represent an angular module, and each module should contain the routing, controllers, services, directives, and tests that it uses. If some of these are used across the app then you can have a "common" module.
Whenever you fix a bug in your code, try to cover it with a unit test. If you can't, ask yourself whether it might be because the code is poorly abstracted.
I think there are definitely varying degrees of value in unit tests. Your example is definitely not super valuable, but unit tests on higher level methods can save a lot of trouble. When I code I want to rest assured that the different pieces I am using work. I want assurance that this class I'm about to use has an API that does exactly what it says. If I want to change modify the class, I want to see exactly what assumptions I'm breaking that users of this class might be making, and I want to be able to do this in under a second. This can have a drastic impact on developer velocity. I don't know of any other way of doing this than unit tests.
Quite frankly this is a pretty lazy implementation. It doesn't even slow down for long words, and the highlighted letter is too far to the left most of the time. But the snazzy .io page and sleek interface probably will do way more for the tool's popularity than actually improving features, so kudos to the Author for the smart marketing.
I'm rooting for the open source versions.
I'm curious as to how they calculate the "Optimal Recognition Position", but there is probably a better way to approximate it. I'm going to play around with some different positions.
You listed some downsides, but none of them are actually breaking problems that block running a stable node production system.
I've found that if you want to work as a software engineer with people who don't make those types of judgments and regard and pay you as a professional, there are more than enough opportunities.
You may find swearing distasteful, but for some of us working with people who judge us based on some moral assessment of our language is just as repulsive.
It's not even a good comparison. The NYT is a daily newspaper. The better-written pieces on medium have aspirations closer to what you'd find in The New Yorker or Vice. You have absolutely no precedent for thinking public curation will yield better results than the professionals who work for those institutions. In fact, most of the evidence so far (reddit, digg, etc...) indicates the contrary.