Late forties too... Got burn out and now I'm studying again to get a engineering degree in data sciences (yeah, the full hype thing). It feels so good to study (with 20 y.o. kids :-)), and it sure dwarfs the lack of money coming in (I'm not working because studying is a full time job).
So it's a totally risk career move but that's either that either being sad at my workplace. Hopefully I'll feel empowered by the degree and be able to move on professionnaly.
This should just be normal. The idea that you study until a certain age then that's it is outdated. We are not mechanical cogs coming out of an educational factory.
Societal norms are not always right. Do what makes sense.
My dad is a 55 year old mechanical engineer. He have called me 3 times today with various questions regarding C++. He’s learning it by writing a program to draw Bezier curves.
Maybe at 55 I’ll pick up mechanical engineering as a hobby.
Hey! I'm 58 and just starting a new contracting position writing software for Software Defined Radios, which I never did before. Started working with Matlib. Need to learn/relearn some math, too. 55 is certainly not too old to learn C++.
Do it. You never know where it will lead. For example I started screwing around with C a few months ago and now I playing with microcontrollers and cameras because of that.
I started playing with Linux and C in 96. I was just an ignorant teenager. I didn’t know C was “hard”. I didn’t really care that Linux was different from Win95, I just knew Linux had fvwm2, gedit, and C compilers I needed for hacking on MUDs. I didn’t know chasing down obscure memory leaks was hard, I just linked libefence and did it. I was just playing and learning. Then I got offered a job doing web development with ColdFusion while still in high school. I was amazed at how easy the language was compared to C. Every “wow they must have a lot of time” project is often some other hacker playing and learning. Play and finding a way to make programming and computers not seem like work is how you develop a life long love of hacking and learning :) (this is not follow your passion advice, I think that is terrible advice, but if you can make your work feel like play and your play very intentional you will struggle to burn out or find it hard to sit down and write code any given day) :)
Edit: also, in 96 the Internet was very different. Many problems were solved by reading man pages, reviewing library source code, and thinking hard about what was happening. Modern Internet and stackoverflow /can/ make you more efficient in the short term but in the long term, it’s worth not rushing to google every error or weird problem. Give it a few minutes. If you’re writing a web app for example, in say Django or Rails go peek at the source code (they are beautiful projects). It’s almost a crime to not review the Go standard library source code, it is one of the cleanest out there. Etc, etc.
I had a similar experience growing up as well. At age 8, I learned QBasic (on an MS-DOS / Win 3.1 system). At age 13, I learned C, and wrote a lot of code in it as well. (I used to write tons of C code up until around the middle of age 17. I had grand plans for all sorts of glorious software projects.)
But then, at the middle of age 17, a certain mild depression ("dysthymia") set in, and I lost a lot of hope, inspiration, and motivation. And now, I'm 31, and I've accomplished very little of my teenage dreams (even though I still hold/aspire towards those software dreams). I might be "successful" in society's eyes, with software engineering jobs paying in the ~200k range (which is not really that impressive, as I have many friends making in the 300k to 400k (USD) range); but in my own eyes, I still feel very much like a failure.
The depression or dysthymia had a crippling effect, that made a lot of dreams hard to accomplish. My 2021 New Year's resolution has been to overcome it my mental issues, and live life to the fullest.
Not many people anywhere make 300-400k. It’s a lot of money. 200k is a lot of money. You are doing great. As long as you can do what you enjoy the money isn’t a big deal anyway. 200k is waaay above what the average programmer makes. Im guessing you know this and your insecurity doesn’t stem from compensation directly, but an indirect prestige and “am I doing enough” type thoughts.
> an indirect prestige and “am I doing enough” type thoughts
It's more like "I am not accomplishing my goals and dreams" type thoughts.
I am just living an existence of working for tech companies (doing stuff valuable to people indeed), and making good money; but however, with the talents, and gifts, and skills that I've been gifted with, I could be doing so much more.
Ahh, well, everyone has to eat. I know it is an increasingly popular option for folks to essentially work at FAANG companies, save up a bunch of cash and then semi-retire from big tech living modestly, RV life style, tiny homes, living remote, etc. A lot of folks, especially those that start families young, don't have those type of options, but it is worth considering if it is still an option for you :)
That's awesome. I am currently an ignorant teenager and I started messing around with C around this time last year. If I had to describe this current age I'd say it's driven by endless curiosity; I can't wait to start studying later this year. I don't think there has been one day in 2020 on which I haven't tinkered/hacked around. The latest thing I did was looking at the AArch64 reference manual and studying the structure of ELF binaries and then disassembling them manually.
This is good. Computers are very simple at their core. One of the first questions I used to ask people in interviews, for highly technical programming and information security roles, was “How do computers work?”. The number of people, even those with years of programming experience, who could convincingly answer that question was low. It was often hand-wavy answers about processors and memory and stuff. When someone could walk me down to logic gates, that was great. The odd electrical engineer or computer engineer who started taking about silicon doping was great, but I would stop them there lol. Never let the computer or it’s components be a mystery to you! Those fundamental skills and understanding will pay off over a long technology career. It’s not like everyone needs to be a systems programmer, but it’s a competitive and enjoyment advantage in my book :)
I’m also in my late forties. I did learn myself some Haskell, and it was literally mind-blowing. The last time I had so much fun learning a language was in my late teens when I was learning class hierarchies in OOP.
It’s never too late to learn anything. The problem is, are you ever going to be able to put it to good use before forgetting much of it?
I’ve wasted so much time in the past decade learning random shit that I never used, it’s been a poor ROI compared to just continuing to hone the skills and languages I use daily. Really demotivating.
It sounds like your problem is a certain outcome dependency. A better mindset is to learn things out of curiosity. You could level your criticism at learning anything that doesn’t help you in the cubicle tomorrow.
If you’re a working programmer using a mainstream language, then I feel that spending some time with an ML-derived language such as Haskell and a Lisp will pay dividends in your day to day practice.
There are some keen insights about computing that are revealed by these languages - and those insights are transferable to your daily work in JS, C#, Python, Java, etc to some degree.
> and those insights are transferable to your daily work
Some people say this, others say that it makes your daily work worse because going back to a language that isn't on the cult-approved list is so difficult.
Looking backwards, I dug pretty deeply into Clojure for a while.
When Streams came to Java, I felt like I was already an expert in that paradigm, and was able to adopt it immediately in ways that made my Java code clearer and more concise, and maybe even more performant in some cases. (Streams can allow you to transform a very long sequence of data, without needing to realize the whole sequence in memory first, as one example.)
I also use immutable data structures by default wherever possible, unless I know I really need to mutate the data.
I try to make the output of a method dependent only on the inputs, wherever possible.
You shouldn't take it to extremes, but incorporating paradigms from one language into another can pay big dividends.
So it's a totally risk career move but that's either that either being sad at my workplace. Hopefully I'll feel empowered by the degree and be able to move on professionnaly.