3 ms·
I think everyone's situation and "optimal life" is different, so I'll tell you what I did around your age (I ended up as a software engineer at a game studio).
by indigochill 9y ago
I think everyone's situation and "optimal life" is different, so I'll tell you what I did around your age (I ended up as a software engineer at a game studio). In high school I got a job doing some data entry stuff at a small engineering firm run by a friend's dad. Turned out I was bad at data entry, but for some reason he handed me a book about VBA and asked if I was interested in writing Excel spreadsheet macros for payroll (well, he had a design that I just needed to implement). So I did that (I'd dabbled in programming before, but nothing to the level you're at). I eventually put together what he wanted, but then he bought some proper payroll software and my services were no longer required.
Then I went to college for journalism because I found writing easier than math. Realized pretty quickly I should be in a computer science program instead, but didn't want to switch schools and the comp sci program at our school sucked hard (their intro to CS program used VB, which was great for me but bad for life). So I stuck with journalism and dabbled in Python on the side.
Fast forward four years. I was behind by a couple classes due to slacking off and failing a couple classes. On academic probation. But I've been playing a certain video game and keeping an eye on the studio's jobs page. They need customer support people. I apply. I get the job. I leave to work, my capstone and one elective left to complete my degree. I finish my capstone while working, but ignore the elective.
While working in customer support, I get fed up with some of our manual processes, so I write Python scripts to automate them. Our one tools programmer encourages me to implement the scripts in a web interface for everyone to use, so I do. People like it, so I make more. I make the case to management that it's their choice whether they want me doing the work of one CS rep or multiplying the effectiveness of all our CS staff (We have a couple years' worth of automation opportunities at this point). They see my point and put me on automation full-time.
So all that said, I'd highlight these two points (which are really two ways of saying the same thing):
1. Find opportunities where you are. Someone you know almost certainly has some problem that you could solve with software. If they have many of these problems, you might negotiate some money out of it. But more important than that, there's a lot of value in the practice of identifying and solving real-world problems rather than just doing contract programming work.
2. Think like a software engineer. By which I mean look at the world around you, identify problems, and think about how you can solve them with software. Think about the trade-offs between your various options in how to solve them as well. This, in my opinion, is the key distinction between software engineers and programmers.