Made the switch to software and am now a senior software engineer. Didn’t know then that I would somewhat follow the trajectory outlined here.
Teach Yourself Programming in Ten Years (1998)
61–70 of 117 posts
Re: Teach Yourself Programming in Ten Years (1998)
#62The title is a bit misleading to me. 10 years is not to "teach yourself programming," it's to "become an expert in programming." Most people do not want to learn programming to become experts, most people want to learn programming to get a job. After getting a job, some will plateau right away, others will plateau after some time, and others still will keep learning even after years and years. The problem is "how lon…
I agree with everything you said. Not sure about this though: > I would say that the number of jobs that require the mastery of the craft is not large. Perhaps the number of jobs that require mastery is less well known? i.e. Not advertised as often / not vacant as often. I suppose I'm splitting hairs here in one's definition of "not large", by in my circles (~25 years of dev working experience) there are quite a lot…
The job market has to roughly follow this demographic trend, otherwise companies would fall behind competitors.
[1] https://insights.stackoverflow.com/survey/2020#developer-pro...
Re: Teach Yourself Programming in Ten Years (1998)
#63>> Learn at least a half dozen programming languages I'm always surprised by how many people disagree with this; they're on the search for that one language they can use for every task. Or even worse, they think they've found it and their search is over, that's a tragic situation given how spoiled we are for great languages today. Clojure (STM / refs, vars, atoms & agents), kdb/q (non-loopy array code), Rust (ownersh…
Languages evolve and it takes time to learn all the quirks. Usually you need a systems language, a scripting/shell language, and a front-end language. Sure you can get good at the entire stack, but that take time. I would say spend 70% of your time to get shit done, then 30% learning/researching.
Re: Teach Yourself Programming in Ten Years (1998)
#64Earlier quoted context omitted.
I like the general purpose GC languages like Java JS c# python lisp for most tasks though, and then go with something a bit wilder or low level like Go Haskell Rust Erlang c++ c when needed. Or R/apl for a mathy problem. Since I enjoy high level programming and the natural experience chicken/egg I never do the low level stuff. Not since Acorn Electron assembler! But I know of it.
JS isn‘t a general purpose language, even though is has been shoehorned to be one.
The former is a general purpose programing language that favors prototypical object oriented programing paradigm but supports multiple other paradigms such as imperative and functional.
The latter uses the JavaScript language and adds on a bunch of specific APIs (such as the DOM) for specific purposes. This includes APIs for DOM manipulation, playing audio, validating inputs, parsing forms, handling key presses, etc.
Re: Teach Yourself Programming in Ten Years (1998)
#65>> Learn at least a half dozen programming languages I'm always surprised by how many people disagree with this; they're on the search for that one language they can use for every task. Or even worse, they think they've found it and their search is over, that's a tragic situation given how spoiled we are for great languages today. Clojure (STM / refs, vars, atoms & agents), kdb/q (non-loopy array code), Rust (ownersh…
Even more important than different languages is to learn about different execution models. For instance, the difference between Java and C++ is relatively minor from that perspective, compared to (e.g.) understanding how Prolog works. That will open entirely new horizons if your previous experience was based on C(++)/Java(Script)/Python (just to mention a few of the usual suspects). Just look at how the addition of F…
It was transformational in a way my maths teacher was not...
Re: Teach Yourself Programming in Ten Years (1998)
#66Earlier quoted context omitted.
I like the general purpose GC languages like Java JS c# python lisp for most tasks though, and then go with something a bit wilder or low level like Go Haskell Rust Erlang c++ c when needed. Or R/apl for a mathy problem. Since I enjoy high level programming and the natural experience chicken/egg I never do the low level stuff. Not since Acorn Electron assembler! But I know of it.
JS isn‘t a general purpose language, even though is has been shoehorned to be one.
I wonder how much of the horizontal scaling trend is driven by JavaScript's horrible threading story.
Re: Teach Yourself Programming in Ten Years (1998)
#67Earlier quoted context omitted.
This is mostly just a rant not directed at you but on the state of software... The Colonial Pipeline ransomware wasn't life threatening. These things happen because of bad* developers and zero accountability from developers over publishers to software owners. As it is now pretty much all commercial software is "first time waiter" quality. Granted it isn't all on the actual developers but on the whole pipeline(!). Mos…
I'd like to add that modern agile IT environments are different than that of traditional engineering. We aim for fast MVPs, fast iterations, "failing fast", "moving fast", "delivering value quickly", generally preferring speed over quality, agility over "waterfall" planning, continuous delivery over batched releases and, well, often accruing tech debt over shipping features later. One can argue that "fail fast" shoul…
But iterative development and fail-fast are independent of quality. If a company skips security reviews and is fine with technical debt because "it works, just ship it", what makes you think they would do security reviews or care about better-than-minimum code quality when following a waterfall system
Re: Teach Yourself Programming in Ten Years (1998)
#68Earlier quoted context omitted.
I like the general purpose GC languages like Java JS c# python lisp for most tasks though, and then go with something a bit wilder or low level like Go Haskell Rust Erlang c++ c when needed. Or R/apl for a mathy problem. Since I enjoy high level programming and the natural experience chicken/egg I never do the low level stuff. Not since Acorn Electron assembler! But I know of it.
JS isn‘t a general purpose language, even though is has been shoehorned to be one.
EDIT: Do you mean that it lacks certain features without a runtime like Node or the browser? For instance, it doesn't have a language construct for opening files like Python or Ruby. If so, I don't think that's a good argument.
Re: Teach Yourself Programming in Ten Years (1998)
#69Earlier quoted context omitted.
> And, I would say that the number of jobs that require the mastery of the craft is not large. This mindset is how we end up with layers upon layers of badly designed and buggy software that underpins almost every aspect of modern life. Just apply the same reasoning to other areas: Would you want to drive in a bus with a bus driver who just barely got his driver's license? Would you want to use a bridge designed by a…
not all code is life threatening in worst case scenario. Better comparison would be "would you like to be served by first time waiter or rather expert one?". In most cases it doesn't matter, and when it does, the price point of the service is significantly higher.
Re: Teach Yourself Programming in Ten Years (1998)
#70>> Learn at least a half dozen programming languages I'm always surprised by how many people disagree with this; they're on the search for that one language they can use for every task. Or even worse, they think they've found it and their search is over, that's a tragic situation given how spoiled we are for great languages today. Clojure (STM / refs, vars, atoms & agents), kdb/q (non-loopy array code), Rust (ownersh…
I’m surprised you don’t mention Perl in this list. It’s the de facto Unix scripting language and frankly more suitable to the task than others. Perl on the command line is beautifully concise; it’s easily embedded into CI/CD pipelines because the q, qq, etc escaped quotes; it has best-in-class regex support; calling external utilities equally concise with qx or back-ticks; etc etc. Personally I tend to favor C/C++ fo…