It’s getting harder and harder in practice because of the huge mountain of accidental complexity programming needs dealing with.<p>I remember writing a very small single user OS for a course in uni over maybe 6 months. When it booted for the first time it felt amazing. That was like an “I have made fire!” moment.<p>Now I’m supposed to feel like I’ve achieved something because I can center a div on a webpage.<p>What is cool is helping non-programmers with automating some of their tasks, like rearranging a spreadsheet or scraping some data. I mean they think it’s some amazing feat but it’s actually very simple. Lots of low hanging fruit still, esp for every day users. Again mostly due to the horrible accidental complexities and buggy mess software has become, so I feel mostly apologetic about it. “Yeah sorry copy-pasting this data should really just work but I’ve written this script which applies a few workarounds”.
Basic web scraping!<p>I have basic knowledge of browser automation via Selenium and Python. Often I can crank out a quick script to automate some tedious or repetitive task and wow my coworkers who either don't have that knowledge or just haven't taken the time. My other use case is using some basic webscraping to collect data from various disparate sources and then combine it together with some basic Pandas code to create a very useful data set.
It was the turn of the century. Internet streaming radio was the new thing. You needed an expensive server to host it ($100+/month). I was a teenager with no money that wanted to run an internet radio station.<p>So I figured out how to hack together a perl CGI script that statelessly ran a stream, so I could put it on a cheap webhost ($5/month). One script to receive data and write it to temporary files, and the other to stream it to listeners, stitching together the temporary files, and deleting old ones as needed, etc. I had to learn to think about concurrency, locking, etc. I abused the fact that renaming a file is atomic :-)<p>So yeah, being a kid and being able to get something that normally costs $100 for only $5 was an amazing motivator
When I saw its impact on a business.<p>I rewrote a system that runs a midsize company. I added many improvements but one thing that stood out was a view that combines data from many different databases and systems and presents in a easy to understand way. Before users had to switch many times between two interfaces/systems. That page was relatively simple to make but it changed their lives at work.<p>Edit: I will be honest here, the code in that system ain't pretty as I was still learning ins and outs of the web, databases, and programming in general. Whenever I fix bugs I try to refactor and add more tests.<p>This resulted in me getting very good compensation in a LCOL area, with extremely chill work environment and complete autonomy.
There was a book I read as a kid, "Poor Malays Speak Out"<p>It's about subsistence farmers in the 70s being pushed to poverty with the agricultural revolution in Malaysia. The Malays grew progressively poorer, where a dream job was working as a laborer on some of the new plantations.<p>Most people saw it as a political work - rich ethnic Chinese buying out poor Malays. But I saw it as a story of technology. It's a slice of time where tech actually put people out of jobs.<p>Some saw it as an example where the rich become richer. But the money went from the rich, to the people who built and maintained the machinery, regardless of ethnicity.<p>Even looking back several centuries, colonists were those with superior technology. A ship filled with soldiers with guns could take control of an entire country.
When I bought data from the govt, but it was only a subset of what they had on their site. Told them I wanted what they had on the site and said no. Spent some time learning how to webscrape and then got the data I wanted.<p>Been wildly profitable ever since.
For me it was writing some simple Choose Your Own Adventure type games in QBasic. Probably the simplest thing in the world, but it felt like the horizon was infinite and unlimited, especially when I started reading GORILLA.BAS.
Language: Sinclair Basic + ToBoS compiler. Running on ZX Spectrum clone.
I wrote some computational program to help with my dad's research. It was successfully published so this was the first "useful" thing I ever did using my coding skills.<p>Added some references:<p>[1] The computer: <a href="https://en.wikipedia.org/wiki/Timex_Computer_2048" rel="nofollow">https://en.wikipedia.org/wiki/Timex_Computer_2048</a><p>[2] Compiler: <a href="https://en.wikipedia.org/wiki/ToBoS-FP" rel="nofollow">https://en.wikipedia.org/wiki/ToBoS-FP</a>
I'm not sure any language, book, class etc. creates the empowerment. I work in several languages and frameworks, and I don't feel any more powerful than when I was working with Unix and K&R. I think it's deeper than that -- software is its own universe -- you run that universe within the limits set by logic. Hardware is similar but you have to buy things and they can die and they're not easily repaired. Software is "zero-cost" if you don't count your time and effort (!!) compared to other realms.
I've won 1st place (with a team), 2nd place (with a partner), 5th place (alone), and 23rd place (alone, out of 60+ entries, having only a few cumulative days to actually work on it compared to most people's full week) in various game dev jams. Getting that confirmation that I can not only <i>code</i> games people like, but <i>design</i> fun experiences as well, is a massive confidence boost.
Back in 2001/2002 (I was 11 or so) I wrote an AppleScript to play a specific iTunes playlist. I then set up my iMac to run this script every morning at ~5am to be my alarm clock. That feeling of bending the computer to my will was pretty cool, and started me down the path to becoming a software engineer. It's amazing what ~10 lines of code turned into.
Understanding how a computer operates, what an operating system is and does, went the furthest to making me a better programmer. To make an analogy, the more you know about how to maneuver a car at different speeds and conditions the more you "merge" with the car to the point that it's abilities become an extension of your will.
Going from a silly idea about integers and their relationships in large numbers to a hacky proof of concept exploring that in a few hours. The skill of asking detailed enough questions that others have already solved them and being able to cobble them together. That filled me with achievement. Silly goal, but still skill.
Getting a scrolling 2D tilemap to draw was a big milestone: to get there meant I understood arrays and indirection, and those are the things you build on for most other algorithms.<p>The other revelation, years later, was the generality of constraint optimization as an architecture technique. Framing problems with many dependencies(time, inputs, etc) as constraint solving exercises allows them to be addressed with rank, sort and search logic.<p>Combine those two ideas and you have most of what's needed to make systems of great complexity...<p>...the downside is that there isn't too much that's essential beyond that. There are specialties with innumerable depth, but they also tend to be variations on a theme and bring in concepts that are more mathematical than nuts-and-bolts computer-logic, e.g. provability.
For code: 1999, Shawn Fanning shipping Napster.<p>For thinking about code: 2000, Ian Clarke explaining what was really going on (The Gnutella Story - <a href="https://everything2.com/title/The+Gnutella+Story" rel="nofollow">https://everything2.com/title/The+Gnutella+Story</a>).
Writing apps and actually getting paid to do so, and then getting investors was a pretty nice motivator. Otherwise, just the ability to play with math using computers was motivating enough (e.g. visualize the behavior of the wave equation or calculate permutation groups)
While I was still in uni, the company I interned at needed a way to get leads from eCommerce into CRM. I knew both platforms had APIs so I wrote a short script and presented it to the marketing and IT directors. Long story short, I got promoted real fast.
learning to code with a raspberry pi — hacking little circuits by following the rpi foundation's educational resources and random tutorials online
Coding is bending a computer to your will. If the will is there, I will try everything and anything to get results. If that includes learning a whole new programming language then so be it.