I am afraid of change, because it requires me to move out from my comfort zone to something which does not interest me nearly as much as what originally got me into programming - understanding how a computer works and how to tinker with it. These days there's no place for actually understanding systems when it comes to modern programming tasks which mostly happen in the web space.
Makes me feel sad. What to do? Have others moved to something more modern from mere bit twiddling and actually found the new ways interesting?
For me, I have my day job in an area nearly unrelated to my interests. That way, I have the freedom to work on my own stuff at home (and yes, this has been cleared with work in any case), which includes fringe operating systems like Synthesis OS (http://valerieaurora.org/synthesis/SynthesisOS/) and even Sparrow OS (http://www.sparrowos.com/ ---just becuase the author is schizophrenic doesn't mean his work has no merit).
I have been using Haskell, a very high-level language for about 4 years now, and there is so much deep stuff to learn. Not superficial "playground is changing" stuff, but deep, nature of computing and logic stuff.
The Haskell eco-system is very open, and the optimizers and compilers have excellent utilities to look under the hood. This all makes it very possible to actually understand what's going on.
It is definitely harder than it used to be, because we're using more sophisticated tools to solve larger problems.
But I think this is a mindset problem, not one with the state of modern software writing. We're standing on the shoulders of giants; There's plenty of unsolved problems out there to be solved by the next person willing to do it. And we do it armed with the work of the previous generation that's been packaged into the convenient form of libraries, modules and established knowledge.
Would your time really be better spent finding the most efficient sorting algorithm?
Probably not, but it is my nature to work with problems like these. Not necessarily to find best algorithms, but to come up with the most efficient implementation of the said algorithm. I don't mind counting cycles, going deep into memory cache models and pipeline depth and calculating branch probabilites to balance and research different implementation details. I would love that kind of stuff.
On the other hand, I am not a programmer because I wan't to create things. Creating something "cool" is irrelevant for me. It does not drive me. I am a programmer because I want to do creative problem solving. I want to come up with superior solutions to problems which require deep understanding of how the system and the environment works and operates. This, of course goes against how the progress happens - to ease things, to make everyone able to make everything.
That was the point I decided that there was no sense pretending anymore and got into a different line of work.
I get what he's saying, but that part is a little naive. You can always help the people around you.
Disclaimer: Programmer who wishes his professional work contributed more to the greater good.
"... couldn’t for another five or so years given that I (likely) wouldn’t even be in law or med school yet."
You can become a "programmer" at 18 for example. You can't become a "doctor" at the same age though - Doogie Howser excepted. He never said that doctors aren't important or that he believes that programmers contribute more to society than doctors do. He said that the path he chose enabled him to give back earlier and in a grander scale than compared to the traditional paths to become part of the doctors and lawyers of the world... And he is correct in making said statement.
How about if next time you call someone arrogant, you make sure you didn't leave reading comprehension out the door?
It's not that doctors or lawyers don't contribute to society. They start contributing at a later point in their lives because they were in school.
(Hypothetical) "Dude I can help you get up if you fall, but I can't help you survive cancer as I'm not a doctor yet, but I can make some software to schedule your medicine intake and therapy sessions though..."
Whereas if one is a doctor or lawyer, introducing innovations into the field is much, much harder.
If you feel that you're getting paid too much to sit for 8 to 10 hours solving problems by writing code into a machine and trying to work with a team and trying to meet specifications and ultimately what the customer needs; you should ask for a salary reduction.
...software I've written has helped people capture >tens of millions< of dollars of wealth. It's been run on >hundreds of millions< of computers.
... instead read ...
...software I've written has helped people capture >hundreds of dollars< of wealth. It's been run on >tens< of computers.
I don't think so - scale of accomplishment change how we feel about what we do and how we relate to the motivation of others. And I think that was the rationale in citing some of his biggest accomplishments. I didn't take his post as lacking modesty.
Point taken on the freelancing bit though (upvoted on that point ... I've been a consultant for 5 years).
Drawing the blueprint of an engine is not the same as understanding the fundamentals of physics and engine design. And it's not the same as drawing a portrait, a building or a landscape.
There's a certain irony in this statement. Writing code that works is easy, but writing code that clearly communicates a simple design to other programmers is not. Much like the difference between rudimentary use of English and that which is moving or persuasive. One is mechanical, the other achieves multiple objectives and requires a mastery of empathy.
That's my view, challenging and rewarding, that's programming.