Was it a project?
A book?
What?
I had a PCjr, which was an 8088. Very slow, EGA graphics. 256k RAM. I did have a 20Mb hard drive, though.
I wanted to verify that algorithm, though. So I bought some books on how to program in C from Waldenbooks. After not too long I managed write a program to draw a Mandelbrot set on my PCjr. It was incredibly slow: I watched it paint each pixel, and let it run for many hours before I would get a complete set. But after much trial and error, it worked.
I was 16 years old. It was the first thing I had ever done that I was really proud of.
I start doing ops-y stuff around age 12, installing every flavor of Linux under the sun, breaking it, fixing it, and repeating. I figured out (and documented) how to get bizarrely specific pieces of hardware working in Gentoo, like an HP Photosmart PSC 2610 printer, or a Chaintech AV-710 sound card. I liked the challenge of tediously working through problems, reading system logs, overcoming the issues, and documenting a HOWTO.
I taught myself Python to automate annoying tasks at a job much later in life, and then discovered that automating things was a career field. Fast-forward a few years, I got an M.S. in SWE to kick-start my career shift, taught myself Docker, built a homelab, landed an SRE role, and was off to the races.
Computer science? Never.
I did web development freelancing in high school but didn't want to be a "desk jockey" the rest of my life. So I studied Physics in college but gave up because I wasn't good enough at it and programming continued to pay well.
(In retrospect it appears that most hard science fields pay much worse than programming. Which feels unfair but is what it is. So I lucked out being not good enough at math/physics.)
I've programmed for work for the last decade. But I wouldn't call what I do computer science.
Then I got into compilers, the weed out course for seniors, and enjoyed it as well. All of the different optimizations, algorithms, clever things that can be deployed to make things fast and efficient. I ended up taking a graduate numerical analysis course as well which was math with a "computer science" flavor to it. It meshed very well with my brain and I loved learning about all the different speed up procedures and ways we can make computers do math by cleverly manipulating functions.
I was always interested in computer science adjacent things because growing up I was always using second hand computers, and so I had to come up with ways to make things fast on slow hardware. Once I got into school it solidified my love for the field itself. My only regret is I wasn't able to finish graduate school because I was paying out of pocket and working a 40 hour a week job.
I would have helped debug some else’s code..
In the morning..
On a Saturday..
For fun..
That is when I realized I love CS
You can imagine how hyped I was starting there as someone knowing shit about shit
Reality hit fast since people spent like 80% of their time fixing other peoples code and spending all free time complaining about the same. Well, no wonder since the code was a pile of randomly attached PhD/master/whaterver-theses of people building software for one purpose and one purpose only to make their stuff run. All mixed with the attitude "I'm a scientist how hard can some programming be...".
This was the time I realized the difference between programming and software engineering with project management and architecture (plus I'm not good at physics). In fear to go down a similar road I started listening to CS architecture/engineering courses at my university to make sure what I'm doing not just feels right but actually is.
>10y fast forward I would say, maybe it was not the smoothest transition into CS (in a broader way) and I would challenge the one ore the other argument from back then but I never regret by career decision :)
In high school, I got really into JS (for portability reasons). I started learning C in my senior year after my dad gave me a copy of The C Programming Language, which is still on the shelf behind me right now.
College is obviously a time for exploration for a lot of people. For me, it was a time of exploration in technology (less exciting then some :p). Learning new things that I loved every single day was such an incredible time for me. It also led to the Dunning-Krueger effect, as I'm sure we've all faced. The beneficial side of that is that I learned the idea of what I didn't know, so I had the ability to go off and explore myself.
If I had to pin point a specific moment, I'd probably choose my introductory CS class's final project, which was to implement the client and server for an /r/place clone in JavaFX. Writing server code became fascinating, on top of working with rendering the (very simple) GUI. I just felt like I actually made something that was interesting, both technically and on the surface.
SuperGraphics was a drawing tool, and it had one really neat feature: it could export a BASIC program that would recreate the image you drew.
So I loaded up MBASIC, something I wasn't really familiar with, and took a look at the code. It was a whole bunch of POKE statements with hard coded addresses and values. I tried changing some of them and I found that I could get the position and types of characters on the screen to change.
Then I started digging into BASIC more, and learned about variables and loops, and then I was able to draw all kinds of stuff!
Some short time later, Dad was driving us to church and I remember realizing and saying that I had a lot more fun writing a program to generate an image than I did just using SuperGraphics to draw it. We were driving down Franklin Road, just about to cross highway 99.
So thank you, Mr. Ruff, wherever you are, for getting me started down this path.
One day, another teacher asked me what I was doing. I explained I was making a game using the random number generator. He asked what happened if the game produced the same number twice. I said that's OK because the RNG is more like dice than picking a card from a shuffled deck -- it has no memory of past numbers. His follow-up questions were strange, and I gradually realized that he must think dice actually do have memory; otherwise, how could you have "streaks" and "dry spells" and all the other superstition around casino gambling and betting?
This was around the time I figured out that there are some folks who get certain concepts, and others who don't. I happened to get the ones that made programming easier.
I realized I was built for computer science during my first industry internship. The job was in probably one of the most interesting corners of the industry, but I still found the day-to-day slog of software development was boring and tedious. The only part of the job I enjoyed was interacting with the researchers, who were working on really interesting and difficult problems that I had no idea how to solve.
I figured I would die of boredom within 5 years if I became a software developer, or have to switch domains every few years and get my stimulation from the domain details. But I really enjoyed the computing part, not the applications. So I became a computer scientist instead of a software engineer.
I always got harassed for not showing my work. I had a better way I didn't need to. The calculator did it for me.
This was one of my first experiences being punished for my gift. The teacher hated me for this creativity and instead of working with me to figure out how to get the program to show the work so I could get full credit, she just dismissed me as "doing it wrong". Awful teacher.
I love programming but I am having a tragically awful time trying to find work in my career after a few years of underemployment and unemployment.
I've been programming since, I can't stop.
Then it was Minecraft mods. Back in the day you had to "unzip" the Minecraft jar file and manually drag and drop new classes into the jar. You also had to delete META-INF, good times.
After observing his attempts to get "the thing" to do whatever he had in mind I started asking questions. He soon lost his patience and handed me the BASIC manual. It took me a couple of hours to get the formatting & meaning and then it happened. Like what some people describe as love at first sight, I lost all interest in everything and everybody I had cared about, JUST wanting to spend time and dedicate my adolescent brain to coding.
40 Years later, while spending my whole working live at a desk, I've seen many colleagues with back, neck, shoulder & arm problems. I never had any issues. That was the moment I knew I was build for this work.
Regarding myself, I've realized it immediately when I was a child, and I saw a home computer for the first time. After getting one, I quickly got into (small) programming, by reading the manual.
I still have the same feeling of curiosity, decades after :)
I take the chance to express that in my opinion, the absolutely most important thing as a passionate SWE, is to put oneself in the conditions to maintain and feed that curiousity (within the limits of a realistic job and commitment). I can imagine that it's easy to get bored and/or burned out.
Middle school, there was a summer program that taught how to make a website using Geocities, basic HTML and CSS. It was magical to SEE something I'd created, even if it was just a designer's nightmare of a Metallica fansite. We only had something like 10MB(?) of storage, so I had learn quickly about the differences between the image formats that Paint.exe would export to. Problem -> Solution (use jpg). Comparing the size to the quality I learned there were always trade-offs.
20 years later, it's nearly all the same stuff. History's just gone round and round but in the end we're all just trying to share what we like with others.
So here I am, 19 years old, never even touched a computer before, looking at a very bulky 286, with it's CRT monitor heavier that Sisyphus' stone, not even know how to turn it on (button was on the side, not visible from front) and yet I knew right there and then this is what I'm going to do for the rest of my life. Love at first sight, still loving programming more than a quarter of a century later.
BTW, my dentist of 20 years is the same. At twelve, she knew that she will have her own dental clinic -- and she did open her own clinic about 10 years ago (she previously worked for hire). She's the best dentist I've ever had, and even though she doesn't do much work herself nowadays, her hires are excellent.
Well I took Programming I and ended up enjoying it enough that I really didn't mind the extra time it demanded from me to do well on the assignments, in comparison to other classes anyway. I decided to pick up a minor in CS which ended up growing into a second major with the help of a little extra time in undergrad.
12 years working now and still enjoying it for the most part.
True story.
My handwriting was so bad I couldn't even read it myself sometimes. I was the bane of teachers.
What got me hooked was some random book about HTML. I read it and learned all the basic tags in half a day and put together a page. That did it for me.
While I have never worked as a professional software developer, computers have been a hobby all my life. I don't think the fact that the language I have mostly written code in in recent years is Emacs Lisp is unrelated to the above moment.
In my country, that means I have to learn maths (plural) and physics in high-school.
In my high school they offered either maths+phy+chemistry+computerscience or maths+phy+chemistry+biology.
Took the former because I'm bad at biology.
Discovered I enjoyed computer science and programming.
Ditched my pilot plans.
Though it does keep me stimulated, I’m not hopeless at it, offers great flexibility, and pays well. There is lots I could do well without, but that’s a tradeoff I’m willing to make.
And when someone claims they "think differently" and they are therefore more suited for computer science, I cringe.
10 PRINT “Hello”
20 GOTO 10
I realised then that’s what I wanted to do.
And I hope I never forget how lucky I am that I get paid to do my hobby.
How could I ever stop?
Shortly after getting a job as a developer!
I kind of always knew I could probably program, but had resisted software development and didn't really "get" computer science or development.
I resisted going into software development for a very long time. Post uni I got a job as a (very underpaid) "data analyst" at a consultancy firm.
While doing that job I despaired at the state of tools and while there was a separate "development team" that got to play with C# and develop the "New project" that was going to replace all the cobbled together analyst tools, we analysts had to make do with the Access VBA solution (that itself was a migration of an earlier cobbled-together excel solution).
I learned to develop by playing around with that solution, fixing bugs and improving speed. My best speed-up was just by having the data copied locally; when I arrived everyone ran the access file from the network share. All the data processing was round-tripping every call it made via the network. Processing went from an over-night job to being run in minutes.
One of the advantages of having the developer team tied up in the (forever delayed) "new solution" was that the analysts were left to themselves to mess about with their own tools in peace.
I drifted away from that job and when I was ready to work again I just decided could probably do software development after all and so got a job doing VB6 development. I fluffed the interview, forgetting the syntax for a simple loop in VB6 but I got the job anyway. Perhaps because there weren't many people wanting to do VB6 in 2012!
In that job I mostly just learned on the job. It helped to have great colleagues from whom I could learn how to approach things and learned the ins and outs of development and how it differed from programming.
Computer science?
My interest in computer science came much later, mostly thanks to TIS100 as well as Petzold's CODE. Those really helped me understand some of the computer science behind the programming.
That said, I'm still not that sure of my compsci skills, I tried to watch a Data Structures course someone posted here recently and it took me straight back to uni maths where watching it I had a feeling of, "This all seems true and I get that it's true but I don't understand".
Like, it's great being able to prove all sorts of things about the nature of those data structures but the actual computer science stuff seems so disconnected to the real world. You can halfway through the lecture and realise that while all the structures have those nice provable properties, actual implementation is left to the reader, or worse, an "open problem".