If the above description fits you, can you recall how you learned to program and build meaningful things? More importantly what drew you towards programming, and not another subject? And if possible, mention THE meaningful software you wrote.
How did I learn? Started coding in college, about as mundane a start as you’ll hear, but it does kinda prove my point that meaning and work can be very detached from eachother.
Now I work on purely backend, mostly services for other services, infra stuff, and it’s honestly so boring and dull. I know it’s important work as well, but it’s just not my cup of tea.
Unfortunately it seems that building products doesn’t pay as well as doing this purely backend plumbing. And I want to work on products which people out in the fields or in some specific industry use to do their jobs better. When I was doing this, I felt like I was actually making peoples work experience (and probably sanity) better.
Anyway I am a self taught and I just learned using YouTube videos, official docs/readme, looking at peoples code on GitHub, and also building out my own silly ideas. Probably have a hundred directories of half+ baked projects.
Feel free to reply if you work on an interesting product (please no dashboards for monitoring cloud systems :sob: lol) and looking for a guy who loves to build great app experience. Also down to discuss ideas!
```
interface IBackend {
ls(path) []file
cat(path) stream
save(path, stream)
rm(path)
mv(from, to)
mkdir(path)
}```
So I open source my work [2] as a result of that thought experiment. Almost 7k github star later, there's about 40k users who use my tool every month to access their FTP server, SFTP server, S3, WebdAV and more protocols and was contacted by people in places I would have never dream like NASA and MIT.
That project is a few order of magnitude more impact full than anything I've done in my professional life and I'm super excited to the prospect of developing the idea further as file manager are an amazing abstraction. My mum can navigate through folders and click on files but I would have a hard to time to explain her what a tree is and a lot of complex system can be model as simple file managers. A good example which was implemented in Filestash [3] is a relational database, the db can be modeled as different folders, tables as subfolders and rows as file which can be edited and save back which would under the hood simply generate a bunch of sql queries
There's still a lot to do but at this stage, it doesn't make enough money to make it a full time job yet.
I learned how to code from a massive rabbit hole that started in high school while trying to make myspace pages look nice
[1] https://news.ycombinator.com/item?id=8863
[2] https://github.com/mickael-kerjean/filestash
[3] https://github.com/mickael-kerjean/filestash/blob/master/ser...
By 11 or so, I became fascinated with AOL 'proggies' and picked up Visual Basic. Made a few of those. Ended up writing a keylogger on commission that I believe partly led to a man's murder. Story for another day.
After that I lost interest in programming with typical teen stuff, didn't really even use a computer much until later...I guess 21 or 22. Hired to do menial data entry tasks, and decided to automate my way out of it. Next job, same thing. Decided to read a few Python books instead of just Googling as I go as I did as a kid.
Over the years since, it's mainly just been picking up things as I need them or they interest me. Learned enough C to work on an open source library. Learned Go because Python deployments were annoying(among other things), and so on.
I've always enjoyed learning and coding, especially when I was in college. I remember in High School I learned about VB in Word and fell in love with how fun it was (not the language). That sealed me in and during college I would learn and code for fun, rather than do the homework assignments. I've always really loved it.
I've learned from watching youtube, reading articles, reading pull requests in software I liked or used, and just doing it. For the project above, I did it in Angular, something I already learned from work and C#, something I had touched a bit in college but due to the cross platform (.net 5), i picked it up as something to learn. Bought 1 course on Udemy, watched half of it and started coding. It was always a program to meet my needs but the lack of competition made me release it and grow with the communities needs as well.
For anyone interested: https://github.com/Kareadita/Kavita
I was a child, and computers were fascinating. I wanted to learn everything about them. When someone showed me that I could write a program of my own, that I could make the computer do what I wanted it to - that was it. I dug into programming just as hard as I see some kids now dig into video games, and I kept that exploration up for decades.
Much of my career I've spent trying to pass along something like that formative experience: in various ways, building tools which empower people to take greater control of their own computers.
Like many, I'm self-taught and learned to program before formally studying CS in college. I found my dad's copy of the K&R C book and would sneak into my parent's bedroom at night to write code on the family computer (he was jaded from his career and didn't want me to become a coder). I'd debug during the day in school. I found more programming books at the library and learned more languages that way. I mostly learned by building little projects constantly.
Curiosity is what drew me to programming. There was an endless supply of interesting problems to think about and I wanted to figure out how things worked--no different from a budding civil or electrical or mechanical engineer wondering how the infrastructure surrounding them worked. The big difference, I think, is that software is considerably more accessible as a young child than, say, building a bridge or building or robot.
Then I studied at University, where I got a more fundamental grasp of how things worked. My first job revolved around industrial automation and such.
These days I work in data science / engineering, and I write a lot of "useful" stuff for automating various tasks. It was really fun to automate stuff which freed up around 1000 manhours a week - not really impressive on the mega scale that many FAANG engineers work on, but when the company has xx people working on menial stuff which can be automated, you really do feel a sense of accomplishment.
I've learned quite a lot of theory at college, but I've learned the most by just writing code on my job. I've had quite a lot of independence and ownership of my code - complete freedom to do whatever I want to make it work - in the first ~2 years, so I've written and re-written my software every time I found that I've coded myself in the corner. After a while, I started to see patterns of which ideas work well and which don't, my understanding of programming in general has deepened a lot, and I've become able to write just about any random web-service in a reasonable amount of time.
In a nutshell: just write code.
I started to become interested in how computers where working when I was ~12, mainly driven by boredom. I didn't know how anything worked of course, but somehow was determined to create my own website, and struggled my way into HTML and free FTP/WWW hosting through various Swedish computer forums and guides. From there I added to my knowledge step by step, I learned CSS to make my sites less ugly, then PHP to be able to "log in", then SQL/MySQL to be able to create a "guestbook", and then some JavaScript, etc etc etc.
After a few years of spending all free time at the computer, I got my first job/internship when I was 14.
During my first 6 years or so as a "programmer", I don't think that I ever considered reading a book on any of the topics. I just went at it, and copy-pasted and brute-forced my way forward until things started to "click" in my head.
I very vividly remember a moment when I realised that I suddenly knew how to create a website that would look exactly the way I wanted, from scratch!
I was building things purely for fun, and started new projects seemingly every weekend. But I kept shipping, and somehow absorbed more and more knowledge.
These days I might read a book/paper/documentation to learn about a new topic, but brute-forcing/learning-by-doing is still my favourite way to learn.
>Now, it is used by quite a few people so you maintain it and the revenue it generates is your primary source of income.
I kind of wish I knew how to do that. I have 2 fully functioning products but I have no idea how I go about trying to sell them and give random people access and support problems etc. All the while still holding a job so I can pay the bills.
>If the above description fits you, can you recall how you learned to program and build meaningful things? More importantly what drew you towards programming, and not another subject? And if possible, mention THE meaningful software you wrote.
So I went to college whose tagline was that you are already skilled sysadmin and you want to upgrade or refresh your skills. In reality it was a class full of people who vaguely knew how to type.
So in my boredom I bought a 'learn C programming' book and taught myself how to program. I had already known bash and dos pretty well. C# and .net probably would have been the better choice but they were new at the time and not linux compatible.
The awful syntax of C really damaged my software development track. Many years later I got into python and frankly I wish I had gotten into python forever before. Now I love programming.
So my 2 private projects. 1 is a honeypot network which produces a threat feed of ip address in txt and stix output. Pretty much all the usual nextgen firewalls can ingest and block traffic.
The other is an NCM built with django. If pulls configs off the usual networking devices but also effectively runs a report to tell you what rules you are breaking in the security hardening guide.
I ‘learned to program’ when I was a kid back in the 90’s from books that my mom’s boyfriend had gotten me, trying to steer me that way. I didn’t like it much and it wasn’t until many years later that I picked it up again and got good, mostly driven by a desire to understand how old video games worked.
The thing that took me from a dude who knows how to do basic stuff to a senior engineer at a big company was having a mentor. My real programming job came with a fantastic one and he taught me pretty much everything I needed to know… he spent a lot of time distilling many years of acquired experience into something I could consume alongside him and I’ll forever be grateful.
First I wrote a tool to check a bunch of coupon codes on a website, then I taught myself to code to hack a friend who tried to hack me. Eventually it turned into writing tools to hack websites and then it turned into making them. Then it turned into entrepreneurship, contracting and now bootstrapping small projects which collectively make a good amount of money.
The key skill to effect change in the world (and reap the benefits) is not programming, it's learning to think in terms of product and use software as a way to deliver value.
With the lessons I learnt from that I bought a c compiler and kept learning. Six years later I left the radio industry to work full time as a developer.
However I made my first real money building websites for small businesses. This is where I learned what customers actually value. It also taught me how valuable an honest broker [0] is. Honesty is a powerful sales pitch. Trust signs blank cheques.
I then spent a few years as a professional web developer, making not-so-meaningful things for large companies. It slowly killed my passion until I found my way out.
Recently, I returned to small, home-cooked software [1]. I run a website that helps people immigrate to Germany. I built many tools and calculators to support the content [2]. It's so much more fun to build concrete stuff! With many users but no paying customers, it's a lot more relaxing. People really seem to enjoy the tools too.
I thought that I'd lost my passion for programming, but in reality I just don't like professional programming. I probably wouldn't like being a professional cook either. Better keep it small and personal.
[0] https://tedgioia.substack.com/p/how-i-became-the-honest-brok...
I was quite intimidated when I first started learning programming concepts. It seemed much harder than other things I was doing with computers. I initially started goofing around with windows bat files because they were somewhat less intimidating. Then I switched to basic bash when I switched from windows to linux. You actually get fairly advanced concepts in bash, they're just a horror to use. Then eventually web programming / python.
The moment when it all really clicked for me was when I decided I was going to learn web dev by brute force. Rather than getting into libraries and stuff I just wanted the simplest thing that would actually work against a web browser. I wrote the first thing in cgi-bin scripts and bash to render html and a form. Then once I understood the basic mechanic I switched over to doing it in Django and python and learned a more programming basics in that process.
I've repeated that broad scope process a lot though. Build the crappy version first, then once you see how it works go back and start trying to figure it out the right way. I find for me, where I can - it's a lot easier when I can get it to work myself first and the work backwards from that.
But the bulk of it, IMO, was just reading books (Teach Yourself C by Herbert Schildt was were it all really started for me) and working through the exercises. So hours and hours and hours of firing up Turbo C++ and going through the exercises in that book, and then later others. I majored in Computer Science at UNC-W (but dropped out before graduating) and that is where I was exposed to the Deitel & Deitel books, and after that I spent a lot of time reading and doing exercises in C:How to Program, C++:How to Program, and Java:How to Program by Deitel & Deitel.
There was more formal schooling that came after that era, but I look at the bulk of my programming education as being all that reading and coding I did back in the late 90's and very early 2000's.
That said, I'm still learning even now, so the story hasn't been fully told just yet. Maybe we get one of those Matrix style direct neural interface things, so I can "jack in" and experience a "Prolog? I'm going to learn Prolog??" moment before it's all said and done.
Looking back on my career, taking vague requirements and turning them into something useful after a hard slog through unfamiliar territory is pretty much the common thread in all my successes.
I was always interested in computing (to the point of asking my dad how to install linux when I was 6, not that he knew how to help lol) but only got started with programming (at about twice that age) when I started getting annoyed at how exactly computers worked, and figured out I can make them do different things with code.
I started working on PluralKit itself a few years ago - already a year or so after someone else created it - because I was struggling to find my own identity and this project helped a lot, and I guess I stuck with it! I hope to make it a full-time job soon, but I am very much not a business person and it's a bit of a struggle to figure out the details.
For me, code is of course a tool to make machines do things I need it to, but more importantly it's art - what I do is something that helps people rather than harm them (cough adtech cough), and I think that's beautiful.
[0] https://pluralkit.me [1] https://github.com/pluralkit/pluralkit [2] <https://morethanone.info>
I'm the author of m4b-tool[1] and tone[2]. The most important thing I learned about software development, is that the best software has a meaning to yourself and that you should use it yourself on a regular basis.
m4b-tool is a tool to merge multiple audio files into the m4b audio book format. I hacked it together in a weekend in the language I knew best (PHP) and that probably was the worst for the job. All because there were no tools, that fitted my needs. After the first improvements I said to my self: Why not open source it, even if it is in a pretty crappy state? And the feedback was surprisingly good for a hackish script. And I learned A LOT from the community (e.g. how to implement something like multithreading in PHP or the simple fact that `cd -` goes back one directory in history).
Another important thing I learned is, that early shipping is good, but automatic deployment and versioning is nearly as important. Thats why I decided to invest some time and simply release `tone` based on git tags with github actions... that was a very good decision so far.
So to conclude:
Build something, that you use (and want to improve) yourself
Ship early
Go for auto-deployment / CI as soon as possible
Do some "marketing" for high quality feedback (e.g. on hackernews)
Cover your ass with automatic tests as soon as possible
[1]: https://github.com/sandreas/m4b-toolI started learning how computers work back in the 80s/90s because we were poor and I had to hack my computers to work with the games I wanted to play. So I'm running Doom on a POS 386 and have to hack/tweak everything from DOS to the modem init string when playing over TCP/IP. I had started to learn batch scripting and some QBASIC around that time as well. I learned QBASIC because I wanted to create my own "snake" game and eventually my own RPG.
When I was around 10, I went to "bring your kid to work" day for a friend of my dad. He was a programmer who wrote C/C++. He gave me a copy of Borland Visual C++ and a book. I started learning what I could but it was silly console stuff. Eventually the web came out with HTML and Javascript v1 and I started creating my own web pages for myself and for random businesses like my local church and some friends. By the time I was 16 I got a kick-ass job programming and doing IT stuff for the American Military University, coding in Visual Basic, Visual C++, Java, and other random stuff. Skipped college because I got an offer from a major defense contractor making great money for a 18 year old. Now I'm on track to be CTO within a division at a major company (I'm 40 years old).
How did I learn to program? I learned how to write code starting in second grade, learned how to write production code as a member of team in my first couple of real world jobs.
How did I learn how to build 'meaningful' things? Beyond coding skills, I had to learn how to communicate effectively with people. I had to learn how to present my ideas in group settings, I had to learn how to listen to folks when they talked about their needs and wants, and how to dig in and really understand what was needed, coding-wise, to meet their actual real use cases.
My mum was a punch card and fortran programmer, my brother's a software engineer too so it's in the family I suppose, i got into it making games and I got an apprenticeship making websites out of highschool, that set me up to go through computer science faster and easier than normal in 2.5 years
https://github.com/spieglt/flyingcarpet
https://github.com/spieglt/cloaker
https://github.com/spieglt/whatfiles
https://github.com/spieglt/winage
I learned to program because I was frustrated that after working in IT consulting for several years, I still had no idea how computers worked. I started with "Learn Python the Hard Way" and "Automate the Boring Stuff with Python". Then got a job doing some Windows consulting stuff, and they said they'd hire me as a software engineer if I learned Go, which was a pretty easy step from Python. I'd tried to learn programming as a kid several times and always found it too frustrating. I started working on side projects as a way to learn new languages, improve my resume, and scratch my own itches. The hardest part was coming up with ideas for useful/worthwhile projects. I was super frustrated one day that the easiest way to get a file between two machines that were right beside each other was sending them out to the internet via Google Drive or Dropbox, which made me want to write "cross-platform AirDrop", which became Flying Carpet. If you find yourself wanting a simple piece of software that seems like it should already exist, that's a great project idea.
After graduating, my first software that had much meaning to me was "KhedNes", an NES emulator that I worked on, on and off, from about 2008-2014. Professionally, I worked on a piece of backup software that had 10s of thousands of companies as customers at its peak. That was definitely a neat thing to think about.
After that I had many things to feel bad about from previous works and was motivated to do the next thing better, finding my own ways to improve it, not always hitting on the best way.
Then FOSS started up in earnest and I could work on and learn from sources like Linux, suddenly the areas I was lacking in could jump forward and my code was more than good enough for my own foss projects.
I have a liberally-licensed project used by a lot of people for a long time. But I can't find a way to make any money from it.
Started out with posting some initial charts on twitter in 2021 which got good feedback and it grew from there. Hanging out in art circles helps a lot btw for questioning what is 'meaningful'.
The above was the start/spark, but actually learning to write commercially useful code came from, well, working writing commercially useful code at a series of startups and small companies.
The specific area that I work/worked in isn’t that important to the question IMO. It’s had a wide range spanning from gaming to hedge fund to computer languages to business services. (Gaming paid the worst but taught me the most per year.)
Eventually I started hosting a spinoff of Livejournal (LJ was/is? open source), and my users were asking for private messaging, so I added it by learning Perl. It was a great experience.
I mostly made sure that I was having fun and scratched my own itch.
Then I got a job writing BASIC around the time I was in high school, and by the time I went to college, I was lucky, knew what I wanted to do, and got accepted into the Computer Science program as a freshman.
What drew me to programming was first that it could save a lot of time, second that people would pay me to do it. It was quite a while ago now.
Two year ago, a family member, who have a very small charity institution, and all the income/outcome was written up in a notebook, ask me if I can digitalize the accounting. The simple solution was a Excel sheet and done, but this person is very bad with technology, so I was afraid that he would move something in the excel and everything would be messed up. So I build with Google sheets, google sites and Google forms a very simple web application to record incomes and outcomes. Once I did that I start working with Google App Script in order to automatically send emails with invoices and reminders.
At the beginning I didn't had a clue of what I was doing, just copy and paste code from the internet into Google App Script, and following YouTube videos step by step. (Google app Script is a cloud environment where you can run JavaScript code and connect to Google products via API) With a few experiments I start understanding what's going on.
I was very satisfied with the result and start looking for other things to do and automate.
With the time I start involving html and JavaScript client side code.
I became pretty good in those things, and all my learning was basically looking in W3 school and stack overflow every time that I needed to do something new.
I did a few web applications like this.
When one of my friends ask me if I can help him with some automation and was willing to pay 500usd for something that took me an hour, that rang my bells and I realized that I have something with great potential in hands.
To make long story short, eventually I quit my job and start making custom software for small companies.
Today I have about 10 softwares that my customers use an daily basis and overall they are pretty happy with my work.
The big lesson that I learned: it's very hard to learn something new if you don't have a clear purpose for it's application, and for that reason it was always very difficult for me to learn how to code, until I needed to solve specific problems. (Or the other way to learn is to be in the right environment (collage) where the specific goal is to not leg behind)
Later, I moved on to Amos on the Amiga and then C (Turbo C on DOS at first) on the PC during middle school/high school. The web came along at some point during this and I started in on Perl and HTML.
Got a proper CS education at college :) and after graduating went into the Army for 4 years (this was back in 2002).
After that, got into the aerospace/defense industry doing C++ and Ada. Later, moved over to more IC-flavored work mostly in Java, with some Scala and Clojure mixed in.
These days, I'm out of government work doing Clojure all day in fintech.
Still learning to program. The meaningfulness of my work has varied over the years :)
I've tried to spin up various side projects (both open source and not) but have not been very successful at creating anything with staying power.
Then in 9th grade I bought a TI graphing calculator and learned BASIC on it, and then in 10th grade Mr. Stanley let me use the serial cable on it which made programming assembly feasible.
When I went to college I didn’t even know computer science was a thing, so my starting major was electrical engineering. Someone told me I was stupid for not being in computer science, I said “wait, what’s that?” and the rest is history (for me).
I’m not sure if much of what I’ve built is that meaningful, but it has made for a comfortable life for me and my family.
Edit: the TI cable was a serial cable, not a USB cable.
I highly recommended it: https://craftsmanshipacademy.com/
I've now been doing it for a couple more decades... and I'm still learning. Learning to code is not something to learn and then do. It is something you learn continually for your entire career.
But my earlier forays - writing macro bots on AOL and messing with the eggdrop source code on IRC - were just as meaningful; they hold the same place in my heart, even if they didn't have the same commercial success.
For me, my love of programming has never been about the value delivered. I've never really cared, in my heart, about how meaningful the product was (which is not to say I didn't make career decisions to optimize for that).
There are three things that have always driven me.
The first is an appreciation for the aesthetic elegance of a finely written program. A good source file is like a poem to me; even the paragraphing is part of the code, and I take great pride in crafting it. I never learned to draw or sculpt, but I poured a lot of what I think is a similar energy into my code.
The second is a sort of visceral awe for the speed with which a computer can do something, once I've given it sufficiently elegant instructions. I remember downloading the complete works of Shakespeare off Project Gutenberg in university, and feeding it into a word count program I had written for an intro programming class, and it spat out an answer in less than half a second. Every single word written by the greatest artist of the English language, boiled down to an integer in less than the time it takes a clock to tick. If I hadn't already been sold, that moment would've done it. What power!
And then lastly, I've always appreciated that outside of academia, programming is just a tool to accomplish some other task. I've worked in multiple industries that I wouldn't have known anything about otherwise, because I am skilled operator of a very versatile tool. I have my craft, and I get to apply to a myriad of problems, and that has helped me to build my "ocean" of knowledge an inch deep, which is a source of joy for me.
visit to know more- https://springtek.in/
I wrote CGI scripts in Perl for paying customers in the late 1990s, then was lucky enough to move into a small company with some top-notch programmers who taught me to write more reliable, maintainable code.
The best lessons I learned early in my career came from having to maintain my own code in production for years on end. You learn not to cut corners and to avoid convenient hacks when you have to maintain the code. You take the long view in your design, aiming to prevent problems you now know how to anticipate. You seek and implement best practices, because dealing with problems in live systems is no fun at all.
There's an old saying: Always code as if the person who will maintain your code is a violent psychopath who knows where you live. When that person is you, you learn your lessons.
The systems I wrote early on helped researches run studies on human subjects. Later systems helped digital archivists preserve materials at multi-terabyte scale.
So I took up to download darkbasic (and after that darkBasic Pro).
That's how I've learnt programming. Just as a way to create things. That's definitely a driver for me, the ability to create and put my taste and imagination into things.
(I've also learnt to produce music along with sound engineering a few years later, for instance)
I started making meaningful software because there was a bug I wanted to fix.
I continued making meaningful software because someone sent me a hamper of chocolates a couple of years back.
I continue making meaningful software for many reasons, but primarily: I'm altruistic by nature. I talk and I listen to problems.
Today I would recommend getting Copilot and just start typing :)
I started out in my mid-30s when I went back to school for Applied Math, originally intending to try for the Army's ORSA program, as Applied Math for most of the past 50 years has inevitably involved a lot of computer programming, then simultaneously discovered I liked programming even more than I liked math, and I wasn't going to be able to stay in the Army thanks to spinal degeneration, so switched to Computer Science.
That said, I'm still largely self-taught anyway. School only goes so far, and most courses expect you to come in already knowing how to do the basics. That involved the same steps to learn anything else, lots and lots of practice. Some books, mostly the C/C++ classics by K&R and Stroustrup, some supplemental courses on specific applications and technology stacks I found in Coursera, and ultimately making my own toy Linux distro with its own package manager and configuration management system after going through Linux From Scratch a bunch of times and getting tired of all the manual steps.
Really, though, how to make anything "meaningful" was mostly learned on the job. Other than I guess tiny utilities that are part of a standard GNU or BSD system, there isn't a whole lot of meaningful software written by one person. Most of it exists for decades and is worked on by hundreds of people who may not even be alive at the same time. Unless you're contributing to some really big OSS project like Linux or Kubernetes, it's hard to get that kind of experience outside of being employed.
That's probably largely due to language choice, though. C and C++ are very mature languages that have been around a long time. No matter what you might want to do with them, chances are a library that provides the bulk of the building blocks you need already exists, thanks to the GNU project, libc specification, OpenSSL, curl, Boost, QuantLib, Armadillo, so many decades of prior work and the fact they've been the major working languages used in universities and research labs. Developers coming up in the JavaScript and Rust ecosystems these days face a more greenfield world where the opportunity to make smaller reusable components still exists, plus the web is inherently a less stable platform than OS APIs, and both of those are less stable than implementing math algorithms that have been known for centuries, so the situation is different there.
Kpow is a toolkit for Apache Kafka, so basically we build an expert system for experts - it's a lot of fun. We are very, very delivery focused. The idea came from my own experience through the past 10 years building things with Kafka.
I like to think I'm a fairly effective programmer. The biggest shift in my productivity came 15 years into my career when I moved from Java to Clojure for delivery. It's not for everyone, but it certainly changed my world.
If I am a good programmer it's because I started to copy my older brother who was interested in programming back in the 80's when we had a Spectrum 48k and I just didn't stop.
Since the age of 6 I have written or read programs almost continuously except for the period between about 10-18 where I played games and hung out with friends instead.
At times I have been a terrible programmer, particularly when encountering a new languages and exploring ideas. That doesn't bother me because I know in time I absorb details, accumulate, and polish my own ability to delivery.
Behind it all though I enjoy programming and have stuck with it. I think that's the main thing. It takes time. I don't believe there are any shortcuts.
Keep challenging yourself, don't sit on the thought that 'My Language Is The Best', that's the respite for programmers who have stopped. You're only as good as your last three years so basically ignore any boomers on the net with opinions.
The best programmers I've worked with don't have blogs, don't write books, don't speak at conferences. They're too busy creating things, often quietly, often in not particularly glamorous settings.
It may be apocryphal but supposedly Steven King says the best way to be a good author is to read and write a lot of books, I think that applies to programming.
I learned a lot by trial en error, and I tried to get my hands in whatever document would help me to code better. I remember getting from a BBS a copy of the coding style of Linux. I found extremely insightful.
The good thing of learning to program in the 80s, is that some things that later became (stupidly) prohibited, were all in trend: RAII, normal naming of variables, dynamic typing... later the people when to stupidity and insisted in declaring all variables at the beginning of the function, naming conventions like hungarian notation, and strong typing... not everything is reverting to the normality.
Then in the university I learned C++ (C++98) and "OOP". I thought I knew what I was doing, even worked 1 year producing real software for automation of radio broadcasting automation (mp3 was still not a thing, we had all the music in big discs --4GB! :) and played form there). Also developed a presence server for Nextel Sprint, and a geolocation application, based on signal strength (when cell phones did not have GPS). Among many other applications, for billing, alarm handling, protocol analysis...
UNTIL: in 2010 I came across SICP. It was like "all you ever wanted to understand about SW engineering and nobody told you." That lead me to read the Lisp books like "Practical common lisp" and I understood I had no idea what OOP was really... Because how I learned to code, I always used already the "wishful thinking method". I tend to write the programs so that it is almost the algorithm I want to implement in psedo-code, and the go ahead programming the functions that I assumed exist, again with the same method. Each iteration in a new set of files, which represents a deeper (less) abstraction, until I get to system or library calls. Sometimes I made a wrapper for a library, so I start parts bottom-up.
FF another 10 years, working in a different country and industry, I see how important is to not be smart while writing code. Use KISS principle. More and more the idea of "write psedo-code" takes importance...
And I see how some industries, countries, or even continents, for some estrange reason, are 30 years behind in computer science. I see constantly people where I work defining all variables at the beginning of the function, using kind of hungarian notation, (no kidding, loop variable named nmp_CntIdx_si32), using inheritance for absolutely everything, the concept of "has a" does not exist, they insist in "is a" abstraction. I've seen inheritance chain of 14 classes, one after another, to make a Kalman Filter, which inherits from std::vector. Last but not least, they make every single function a template, because "you do not know if later you want to add the ability for other type". Mind you, is a BIG company, making "safety critical" software...
All that to say: yeah, what does "meaningful" means after all. I find more meaningful my beginning writing automation SW for radios, as the stupidity I do today...
TLDR: Find a problem you want to fix, or people with a problem you'd like to help, and then learn how you can help them, and then learn the tech that needs to be implemented to solve that problem.
I will say, I had some early success, and I think that actually hurt me rather than helped me, as I had this huge ego about the things I was able to do with code. I wish I was more open to learning earlier, but I didn't have the university background of knowing how to learn, and basically escaped high school as soon as I could, so learning didn't become a thing for me until much later in life.
Here's my story...
I was very fortunate to have gotten into programming because a start-up I had worked at as a PM told me the way I wanted to tackle a project was "impossible". We were doing acoustic matching of music, and needed a large library to train on (back in 2005 or 2006).
I indexed MySpace "hidden" urls to get access to the music library and built a pandora type service from that. It didn't work great, but there was a huge music festival coming to town, and so I used the indexing code I had built to was able to build a concert search engine because I had access to the data (https://techcrunch.com/2008/10/27/hearwhere-lets-you-discove...)
From there, I was talking to a friend and his wife about the boring horrible data entry job his wife was doing, and they both worked for the same company. I explained that a computer could do the job better and faster, and they introduced me to the CTO to explain my thoughts. I explained it to him, and he said "I'm not sure how you think this will work, but we'll pay you to make it", so I built an ML system for them, and they went from having (if I remember correctly) 12 data entry people full-time to the job being 2 people about 5 hours a month. The people were much happier not having to do the painstaking job they did before. A few of the other data people got new jobs in the company and were much happier, I hope those that left also found better work.
Then I tried to teach computers how to cook and failed miserably, I worked at a few startups that went no where.
Then I took over an existing "metaverse" project (pre-metaverse - 2015), and made it function better so it could be usable to a wider audience. Ayvri (https://ayvri.com) is loved by the paragliding community, and a few of our API customers, but we're shutting down the consumer facing portion as the cost of operating for consumers is more than we are taking in as we've grown. We have a few companies vying to taking on the tech.
Now, the team that built Ayvri are working on improving sleep for millions with a headband that monitors sleep state and uses auditory stimulation to improve the neurological function of the brain during sleep. https://soundmind.co - this is the project which I believe has the most impact, and is REALLY fun to work on. Though, I don't work on the tech stack anymore, the engineers I work with were always better than I am.