I was in a band and we created our own website. There were a few problems around a PHP contact form and we all took turns trying to fix it. I realised that I was enjoying something that drove everyone else mad.
I was going to be an architecture major, right up until I realized my projects look terrible. The bunk beds next to the lecture rooms and how proud the prof was about them sold me on not doing that major. So I picked something that I liked doing. Noodling scripts and code. Lucky choice.
Same happened to me except one difference. I wanted to get out for around 15 years then I quit my job and lived in another country and travelled to try to leave it but I couldn’t find something else I enjoyed. then I came back to the industry and still hated the stress around it. Due to the pandemic I was forced to, in a way, face my fears around work. I stopped avoiding the parts of the work I found stressful and instead challenged myself. I stopped trying to do things in a half ass way when I knew what the right way was. In hindsight I think I was a pretty mediocre software engineer. And just recently got a new job that is the most challenging I’ve ever had but I chose into the job and sought something that felt very mission driven. So it took me roughly 20 years to get acceptance around the work and my relationship to it.
Doesn’t mean work isn’t stressful but everything else around it has changed. I care a lot more about what I’m working on and participating in a deeper way.
So… the way out can mean being exactly where you are now
I want to buy a backhoe and install septic tanks and dig house footers 2-3 weeks / month (around the weather) and use my software skills 1-2 weeks a month on projects / teams that have the same values I do around simplicity, clean code, automation, etc.
Corporate software engineering killed my love for the field for a while. I did math for a bit, but always ended up coming back. I realized that the soul sucking (but well paying) job is a means to an end. I'd take half my salary to develop algorithms and play in compilers all day...but unfortunately there's all of 10 positions a year in compiler fields.
A lot of people tend to do stuff like gardening or woodworking and for many this stuff works. I tried it, but I always said "damn I could design something to do this for me" and I never "got" it. I couldn't finish graduate school because I have bills to pay and you don't get classes paid for unless you sell your soul to the university. They offered me an insulting $14,000/year to be a graduate student. I might've considered it for $35,000/year. So here I am, in purgatory, because I love computer science but my day job just wants me to throw together another CRUD app.
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.
I was kind of avoiding it for a while since I was concerned about rampant outsourcing for some reason. College me thought accounting or math might be a safer bet.
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.
> I was concerned about rampant outsourcing for some reason.
Because this concern was pervasive in pop culture / career advice columns during post dot-com. Fear-mongering about outsourcing is probably one of the primary causes for the huge run-up in software development salaries in the 2010s.
Hah! An Accounting prof told me that I should double in Accounting because CS would be outsourced. I said something like "well, maybe, but CS is going to automate a ton of Accounting jobs either way, and the accessible Accounting jobs that continue to exist will require some programming. So I will choose my job maybe being outsourced over my job definitely being automated."
I'm now on a few committees at the college and mentioned this conversation to him. He remembered it, even though it was may years ago. He laughed and told me that's basically what happened -- for a few years they had very low in-field placement rates because there are not enough personal tax prep jobs to go around and the larger accounting firms demanded programming skills for entry positions. The Accounting major now requires multiple CS courses and he encourages his students to double-major in CS.
On that note, I'm bearish on SWE compensation and bullish on CS research compensation over the next 10 years. For basically the same reason. We've been massively under-producing (good) CS PhDs because industry pays so well and the standard advice is "only idiots get PhDs when industry starting pay for folks who can get into good phd programs is 150K+".
Basically, "zig when everyone else is zagging" is pretty good early career advice.
well, how many years does that take though? That's a lot of time to not be earning. Then there's kind of a question of making sure the focus is something people are going to really need in the future. Feels risky.
(I think the question is better phrased using "computers" more than "computer science", since the latter is quite specific (assuming you refer to the former))
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.
I always enjoyed programming (like, from 3rd grade onwards). Basically, from my first line of BASIC, I was hooked.
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.
For me it was creating a minecraft server for my friends. I looked up Youtube tutorials, got help from my dad to port forward, and started installing plugins.
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.
Same here. I started by hosting Minecraft servers on a spare PC I had. Then I taught myself web dev/design since I figured my server needed a website. Later I got into mod & plugin development. I also spent a ton of time using the ComputerCraft[0] mod to program in-game robots (turtles). It's been over a decade and my love for Lua is still stronger than any other language I've used since.
In college I went to the CS lab late on a Saturday and bumped into an underclass acquaintance who had been fighting with a program all day. I exclaimed that they should have pinged me as I would have gladly helping get the code working..
My dad is a software engineer, so it was always around me. He installed Visual Studio 2008 on my childhood laptop. I didn't pay too much attention to programming at this point since I was more distracted by video games.
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.
To a computer scientist "programming" is simply a means to an end. Computer science is a rich field. Equating programming to computer science has been the greatest fraud ever perpetrated on the field, and in my opinion why so many people flunk out of the program. When I was in school the first and second semester were filled with people who wanted to be programmers (for the money) and got blown out by the operating systems course. I can probably count the times on one hand where I did any programming in my undergrad. Most of it was in graduate school to verify algorithms.
Here’s a delightfully pessimistic answer: The moment I reached 10 years in the field, unhappy with every development job I’ve had. I realised I’m built for it because I don’t have the capacity to escape from it.
I went into college expecting to major in physics. My first non-general physics class was Modern Physics. The first half was a review of all of classical physics and I got an A on that half. The second half was quantum mechanics and I got an F on that half. It was just too abstract for me and the math was too intense. I switched my major to Computer Science.
Not CS per se, but computers as a system. I couldn't care less about implementing a red-black tree, nor proving an algorithm's correctness by induction.
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.
In Kindergarten there was an Apple //e in the classroom. When I saw it I thought to myself "I am going to touch that every second they let me touch that."
In 1987 there was a pop-science book called “Chaos” by James Gleick that was, naturally, about chaos theory. At one point it described things like Mandelbrot/Julia sets and their ilk. There was one page that had a footnote at the bottom that described the algorithm used to generate a Mandelbrot set.
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.
Almost the same experience here; I have great nostalgia for that feeling, and the waiting for hours to finish. Nice to hear similar stories from someone else! I still have my copy of "Chaos", and it was (and still is) awesome, but another book I got around the same time was "Chaos, Fractals, and Dynamics", which included pseudocode, that I had to rewrite into Commodore-64 compatible BASIC.
I'd coded prior to this; I got my Commodore when I was like 11 (the family machine, but I used it by far the most). Mostly typing in games from magazines, but fractals were the first thing that felt like it was "computer science" - something that really explores a new space that just wouldn't be possible without a computer.
The moment I realized how much I hated and sucked at writing with pen and paper as a child. Little did I know the whole world would use computers for work and move away from papers to the most part in a few years.
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.
I was screwing up in high school algebra and I discovered I could program my TI-86 to do my math homework for me. I distinctly remember struggling with FOIL (first, inner, outer, last) and I would mess up one of the calculations doing it manually so my end answer would be wrong.
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 am in no way built for it. I know people who are and there is a marked difference.
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.
Before I even had a computer. Working my way past the bugs in that ET: The Extraterrestrial Atari game and others, I wanted to make things like that, and heard I needed a computer to do it.
I was 12 years old during the Soviet era. I randomly saw a short vignette about computers in a pop-sci film on TV, and it clicked right away. I knew instantly that this is what I'm going to do for life. I had no idea if I'm built for this, or whether I'm smart or not -- and I didn't care. The books and projects came years 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.
When my dad brought home a Commodore Pet 2001 in 1977, I was six years old. I figured out pretty quickly how to load and play some of the games from cassette. One game in particular, called "Dungeon" which was a pretty simple roguelike (although it actually pre-dates Rogue), I liked a lot. But the instant I figured out I could change the game by simply deleting lines of code, I was completely fascinated. Only deleting certain lines of code would work, others would make it not run. Why? How does all this work? Suddenly the game itself wasn't particularly interesting. I was hooked on figuring out the game behind the game. It didn't take long for me to start digging deeper and deeper into Computer Science.
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".
64 comments
[ 3.2 ms ] story [ 18.6 ms ] threadSo… the way out can mean being exactly where you are now
I want to buy a backhoe and install septic tanks and dig house footers 2-3 weeks / month (around the weather) and use my software skills 1-2 weeks a month on projects / teams that have the same values I do around simplicity, clean code, automation, etc.
A lot of people tend to do stuff like gardening or woodworking and for many this stuff works. I tried it, but I always said "damn I could design something to do this for me" and I never "got" it. I couldn't finish graduate school because I have bills to pay and you don't get classes paid for unless you sell your soul to the university. They offered me an insulting $14,000/year to be a graduate student. I might've considered it for $35,000/year. So here I am, in purgatory, because I love computer science but my day job just wants me to throw together another CRUD app.
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.
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.
Because this concern was pervasive in pop culture / career advice columns during post dot-com. Fear-mongering about outsourcing is probably one of the primary causes for the huge run-up in software development salaries in the 2010s.
I'm now on a few committees at the college and mentioned this conversation to him. He remembered it, even though it was may years ago. He laughed and told me that's basically what happened -- for a few years they had very low in-field placement rates because there are not enough personal tax prep jobs to go around and the larger accounting firms demanded programming skills for entry positions. The Accounting major now requires multiple CS courses and he encourages his students to double-major in CS.
On that note, I'm bearish on SWE compensation and bullish on CS research compensation over the next 10 years. For basically the same reason. We've been massively under-producing (good) CS PhDs because industry pays so well and the standard advice is "only idiots get PhDs when industry starting pay for folks who can get into good phd programs is 150K+".
Basically, "zig when everyone else is zagging" is pretty good early career advice.
Yes. Get a PhD then leave for industry. The university system will be permanent decline for the rest of our lives.
Another instance of "zig when the crowd zags".
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.
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.
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.
[0]: https://www.computercraft.info/
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
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.
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.
And when someone claims they "think differently" and they are therefore more suited for computer science, I cringe.
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.
True story.
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'd coded prior to this; I got my Commodore when I was like 11 (the family machine, but I used it by far the most). Mostly typing in games from magazines, but fractals were the first thing that felt like it was "computer science" - something that really explores a new space that just wouldn't be possible without a computer.
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.
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.
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.
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.
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".