Ask HN: How many of you are employed, self-taught SWEs?
I'm super interested in knowing things like:
- Why did you get into the field? What did you focus on at first?
- What are you doing at your job? Is it everything you dreamed of and more?
- How did you break that first-job barrier?
- What were you doing before this?
- Any tips for the rest of us?
Appreciate your response in advance! Keep hacking!
72 comments
[ 5.1 ms ] story [ 146 ms ] threadAlways was interested in programming, wrote first lines of code (in BASIC) at the age of 6 (in 1989). Wasn't interested in getting a CS diploma until 2010. Got it in 2014 after already working for 12 years in the industry.
- What are you doing at your job? Is it everything you dreamed of and more?
Currently I am ironically back in the academia working on epidemic modeling (as many people these days), but for the most of my career I worked with financial/trading software engineering.
- How did you break that first-job barrier?
Offered to work for (nearly) free in a small company owned by an acquaintance.
- What were you doing before this?
Not much, as you could infer. :)
- Any tips for the rest of us?
Loving programming is a necessary and sufficient condition to have a good career in it. Enthusiasm here can still overcome many barriers (as opposed to many other industries).
Thank you for an excellent topic!
Started in QA, did that for over 3 years. Transitioned to a SEIT, did that for a year. Then finally got the software engineering title. Took much longer than I wanted but got it eventually.
Since then I’ve been through the whole stack. Now doing more DevOps, SRE type stuff. It’s honestly been great. Worked for startups, mid sized and Fortune 500s.
My only tip is if you love to code just keep doing it. Everybody wants to say “I don’t want to code outside of work, I want a life, ect ect.” The only way I’ve truly been able to learn is by having side projects and working on them constantly. I’ve had a side project going consistently for the past 7 or 8 years. Hacking on your own stuff, at least for me, brings me actual joy rather then a lot of stuff I do for my day job.
> Why did you get into the field? What did you focus on at first?
I always liked computers and building things. It felt like a natural progression of my favorite hobbies, so one day I looked up how to write a Discord bot and the rest is history. I had made some websites when I was 12 (specifically for Sims 2) as well.
> How did you break that first-job barrier?
I found an internship when I was in university, and looked for a full time job while I was there. Once I found one, I left my internship and dropped out of university.
> What were you doing before this?
Taking a sabatic year after high school I guess. I played a lot of Phantasy Star Online 2 that year, and it's indirectly the reason my career started.
> Any tips for the rest of us?
It's hard to say because everyone's situation is so different. But one thing I wish I knew is that it's OK to not listen to family sometimes. Personally I heard a lot of backlash from them because from their perspective I wasn't doing anything really. It affected my mental health and was pretty tough at times, but probably to a lesser extent than pushing through university in my opinion.
Loved programming, did it as a hobby for a few years, was able to get a job. I focused on understanding what I was doing, always dropping a level of abstraction down from the task I was trying to complete so that I could understand and debug it.
- What are you doing at your job? Is it everything you dreamed of and more?
I'm a team lead on a low level systems team. I'm actually quitting soon, but more for a move to another company rather than I don't like the field.
- How did you break that first-job barrier?
A lot of resumes, and ended up at a company who's hiring strategy was to find diamonds in the rough.
- What were you doing before this?
A little bit of everything, retail management, general contractor, project manager for marijuana dispensary upgrades, etc.
- Any tips for the rest of us?
The assumption is that without a degree you don't know the underpinnings of what you're doing. Prove them wrong early by putting in the work to cut through the abstractions and truly understand the why of what you're doing. The difference between being an engineer and being a technician is that that the technician follows a a checklist, and an engineer understands the checklist and knows how to recognize and account for the 1% of the time it doesn't apply.
I got started by working in tech support (no real job requirements besides being vaguely "good with computers") and then coding some tools that made my team more efficient. Then I told my managers that I could be a full-time force multiplier instead of a single-unit contributor (in other words, generating more value for the company) and they liked that idea and what I'd done so far so they helped me transition pretty quick. I continued working in support tools development for a couple of years and really enjoyed it.
There's a footnote here that I moved from the US to Europe because labor laws are more relaxed here so I was able to code for work for free on my own time without there being an issue, which I needed in order to show what I could do for the company to get that initial foot in the door for the support tools dev position. In the US, they told me they couldn't let me work for free (I suspect because of the Fair Labor Standards Act, but I never asked) so I requested and got a transfer.
Now I work on anti-cheat software for games. I angled for this because I wanted to get closer to security-related work without being exactly infosec, and there was a clear need for this at the company. It's a little more vanilla than I was expecting, but I have a ton of autonomy and voice in guiding my team's work, so I'm happy.
My advice for anyone interested in making software full-time is to start by doing whatever you can quickly get hired for. Then make software to make you better at doing that. Don't wait for someone to give you permission, because they won't (and this continues to be a rule even after you "make it" - continue jockeying for what you want and don't wait for permission unless there's no other way). If you show (with actual live code) that you're a force multiplier at your company's thing using code and they're in a position to hire someone for that work, then make your case for why you're that someone to whoever has the power to make it happen for you. It doesn't even have to matter if they don't hire SWEs. You can negotiate contract work if you have to. Everyone needs software even if they're not a software shop themselves.
For the first job, mine was at a startup. Founders may be more willing to take a bet on someone who demonstrates passion and an ability to hack on stuff and get it to work, whereas big company hiring seems to be more conservative.
Performing superbly on technical interviews will always get you hired, regardless of your background. If you have a buddy also interviewing, pair up and give each other as many whiteboard interviews as you can (I did 2-3 weeks of 5-6 problems per day). You'll feel much more confident.
Lastly, work on projects you are actually excited about, and interview at places doing stuff you're excited about. That sort of excitement really shines through in an interview. Additionally, it will pay off in quality of life.
Good luck!
Fall in love with an uber-ambitious technical side project that you'll never turn into a business but that will make you learn every tech you'd ever be interested in. Then you can tinker on it for life and it'll keep you employable.
- Taking care the system, developing new features. Yes, It is.
- I built a course system for my school, worked free about 6 months. Learnt a lot of things and this experience gave my first job.
- Make real your every absract notion by coding and drink coffee madly.
so much this.
I broke that first-job barrier by getting myself a job close to the technology, and then solving problems that had a visible impact. (I want to add that, though I constantly pushed at the edge of my authority, I avoided ruffling feathers and was always a team player. I never went over my boss' head, for example, and generally asked permission.)
I'm now in my third executive role, running engineering for a Series-A funded startup. Being able to bridge the divide between business and engineering really hits the sweet spot for me. I very much enjoy what I do.
I never planned on being a coder, I was a derivatives trader at first. It turns out being able to code helps a lot in finance. I co-developed my skills between building quant strategies with coding. And coding quickly swallowed up everything, it turns out it would have been easier to be a systems coder first, then develop quantitative skills. I've done an enormous amount of coding in different areas now from that journey as well as a variety of web side projects. A small amount of GUI/FE coding, a lot of micro performance and networking type stuff.
- What are you doing at your job? Is it everything you dreamed of and more?
I have a lot of freedom to decide what I want to do. So I code a lot, but it's what I want to do.
- How did you break that first-job barrier?
Responded to an ad out of uni, went to interviews.
- What were you doing before this?
Uni, where I learned a little bit of coding, but not enough to appreciate the depth. Zoomed over algos and data structures, which it turns out I ended up relearning.
- Any tips for the rest of us?
You can't really do this if you don't like it, but you also won't like it if you haven't learned a bunch of code-related skills. For instance if you don't know how version control works, you'll forever be reluctant to modify your code, which will stunt your growth. Same with sysadmin type skills like how to set up a network, how to move files around, how to set up the OS. You'll think everything is a chore if you can't write some scripts to simplify your coding flow. Something like Docker takes learning before you can use it, but once you have it it helps a lot.
> Why did you get into the field? What did you focus on at first?
A friend back in high school pointed me at the problem of brown numbers (Brocard's problem), which are pairs (n,m) where n!+1 = m^2. Known pairs are (4,5), (5,11), (7, 71). I became obsessed with this and attempting to find a new pair, and spent most of high school learning programming to improve my searching programs. Things went from there, since I knew that's what I wanted to do.
> What are you doing at your job? Is it everything you dreamed of and more?
I'm a systems engineer working with Rust on AI infrastructure. It's what I expected to be, it's a good job in that it pays well and I enjoy it. It's not perfect, and I wouldn't describe it as a 'dream'.
> How did you break that first-job barrier?
Got an internship by emailing around, that transitioned into a full time position.
> What were you doing before this?
Uni, mostly.
> Any tips for the rest of us?
Find a cool problem and use it as a 'north star' when learning, I think that helped me a lot. Also, it's a big field, you may find that you don't like a corner of it, but don't take that to mean you won't/wouldn't like any other parts of it.
Fell into it - the first computer I owned happened to have a basic interpreter in ROM, and at the time a lot of software was published in magazines (you had to type it in by hand), so that started me on my way.
- What are you doing at your job? Is it everything you dreamed of and more?
Being able to code brought me to a lot of places I would have never expected. Things change very rapidly, what you are doing today is completely different then what you will be doing tomorrow, you have to constantly challenge yourself and expand your horizons. I’ve met plenty of people who were really great at version X of framework Y in language Z and five years later they are unemployable because the world moved on while they did not. You need to get beyond versions and frameworks, entire languages came and go out of vogue, the more generalist you are the better you’ll fare.
- How did you break that first-job barrier?
I worked cheap at my first job, a year later I used my experience to trade up to a position making more the prevailing wage, things took off from there.
- I like my job a lot, but it's very much building CRUD apps (or guiding others to do that). I'd like to work on technical problems of higher complexity, possibly scientific applications, so I'm trying to figure out how to get into that as someone without a formal education in it.
- I reached out to somebody on reddit /r/programming who had posted an ad. I told them what I had taught myself so far and why I thought I could be a useful junior dev, and they gave me a shot.
- My tip would be to let your curiosity drive you but stay realistic, responsible, and honest. The reason I've stayed satisfied in my career so far is that I haven't been too impetuous (e.g. leaving good jobs just to jump at something new), but I also haven't let myself get stale or bored for too long. So far it has served me really well.
I did programming all through high school, then went to uni for Mechanical Engineering since I thought programming would be too frustrating.
Realized I hated it, switched to 2nd yr CS for a semester.
Then realized I'd learned a lot of the content in high school and it was quite boring, so I dropped out.
Spent the next year bumming around a bit, doing some coding and getting up to speed modern web dev then this year, I landed my first job just before the pandemic hit.
My job is quite depressing. Working with old tech, no feature work and the company is extremely disorganized. I do 10x more in my own time than I do at work. I think I'll be looking for a new job soon.
The only tip I have for learning is to code every day and build things, don't watch tutorials.
I liked playing with data in R and saw there was potential to do cool things if I learned more code during my PhD in Cognitive Psychology.
- What are you doing at your job? Is it everything you dreamed of and more?
Mostly front-end work at Amazon. I love it. I get to feel productive in ways I never experienced in academia.
- How did you break that first-job barrier?
I knew some people at a science focused non-profit. Interned while in grad school and signed on full time for 2 years before moving to my current role.
- What were you doing before this? Grad school in psych.
- Any tips for the rest of us? Keep grinding on projects you find interesting. It takes time to get good at writing code quickly. Review your own code as though it were someone else's.
I did a short stint in the Army, ended up in a minor touring punk band till about my mid-20's. Decided that I wanted to pursue something different after realizing the band was a one way ticket to a dead end. I got the brilliant idea to pursue photojournalism. My timing was impeccable. As I was finishing the "great newspaper crash" had started and after working freelance for a few years I started a small photographic advertising firm. But... during all this I was still coding. This was in the early days of what was being called "New Media." A lot of the places I was working with, the older journalists were not interested in how to use the web for better story telling. I didn't hesitate to get my hands dirty creating web sites for stories, working with flash to create interactive pieces, etc.
When I started the advertising firm, a client asked me if I could create a website for their business. Never being one to pass on the chance to make a few bucks, I confidently said "Yes" and proceeded to learn PHP and WordPress as fast as possible.
Around this time I also took the plunge and got married, which ended rather quickly in divorce. I decided to give up my rights to anything we accumulated during our marriage and was living on my friend's couch just trying to get a fresh start. A friend told me about a company his partner worked for that was looking for a developer. With her reference and the pressure of being homeless and hungry, I was able to land a gig as the companies "Web Master" (yeah, they were still using that title lol). The company was sold and the purchaser had their own team and cut the local team to the bones so I started freelancing.
My tips? - Most developers and SWEs are just as clueless as you even if they have a degree, don't be intimidated. - Realize that as a self-learner, you have an advantage of knowing how to learn quickly and efficiently. - Don't make money a priority, salaries for the most part are a side effect if you love what you do. - Realize you need a break sometimes, burn out is real and will kick your behind if left unchecked (as my own failure of my first tip, I always am dealing with imposter syndrome which leads me to constantly spending even my off time trying to learn more so that my co-workers don't ever say anything negative about me being self-taught) - Ignore trends and just follow what you enjoy doing or this will quickly become "work". In my own recent experience, I've been feeling the pressure about moving into ML/AI. After a nice long think these last few months as I end my first decade in this field I realized I have no interest in it, I just like building software. Coming to terms with that has done wonders in my mental state and brought a lot of inner peace.
Eventually a friend told me about a gig as a developer with an F500 energy company and helped me get my foot in the door. Worked my way up from a junior SWE to a lead position. I've now moved a few times and am now working in a financial company that is a major player in the world economy. Not because I think it will change much other than making me a better engineer, I've recently returned to school to get my CS degree and am preparing for another pivot into other areas of development once I'm done.
All in all, it wasn't the life track I expected. What I have learned in all this is I love doing what I do. As others have said I think my enthusiasm and passion have taken me a lot farther than the typical "coder bro" that comes out of college with a CS...
By the time I got my first IT job I had a Law degree and I was running Linux exclusively on my workstation (part of the deal with the uni friend who “turned” me and provided tech support for about 18 months until I no longer needed it).
Did some certs to get some pieces of paper - A+/Linux+/MCP/CCNA aiming to get a Support job. Discovered that I was the only person in a class of 30 who actually had an interest in IT beyond a job - later I would realise this is a very valuable commodity. Hired before I did all the certs for this very reason.
Got a fairly low paid job for a small company that exposed me to lots of different experience like running cables, screwing in wall sockets, dealing with customers on the phone, Windows desktop admin, Linux firewall admin, Linux server admin, data centre work, NAS etc.
Then I moved into a Linux network admin contract role role for a bit. Then got an enterprise level 2 support role (providing support to network admins). In the company for 12 years and counting - changed roles 4 times. Learned to code writing support tools (PHP and HTML) eventually learned JS also, turned out I was really really good at it and now I’m writing infrastructure code for one of the product groups.
My advice would be to learn the lower levels of the stack - networking at the protocol level, Linux, SQL without ORMs, vanilla programming with no frameworks until you start writing your own at which point pick the best on the market. Learn to run your code in a Docker container.
Passion, integrity, obsession with delivering results are very valuable - cultivate these and market them to the best of your ability. Be the person that steps up to do boring jobs that help other people - I volunteered to run our server lab that was used by other engineers and wrote some tooling to do things faster. Eventually people notice and you will learn a lot.
Avoid shift work like the plague it is and do your best to limit on-call exposure.
I like my job - it pays well enough and at my senior level offers plenty of flexibility for managing my time and what I work on.
Before I had the tech support job I was working on train radiators and it was awful. Came home covered in oil. The radiators weighed thousands of pounds and could easily crush a man.
Couple months later got my first SWE job after making a side project website and making a little YouTube video about the challenges of making a modern web application, like async programming all that stuff. Just kept applying to places until someone liked me, I guess.
Then I gained the weight back and got lazy, got fired from some other jobs. For me at least being fat makes me a bad programmer. Solving health problems for me was key to being able to learn and grow, as the constant headaches and inflammation made it nearly impossible to concentrate.
My job is pretty good, not super stressful. COVID messed me up mentally and I got bad marks for the past six months but I’ve finally gotten the hang of being isolated and not being so panicked. Anxiety and depression make working almost impossible for me without Adderall or some other such stimulant. Trying to wean off of those as I don’t like how they change my personality into a more nervous less interesting person.
If you don't mind me asking, what kind of work are you doing now? Any tips for your past self?
I’d remind myself that things like alcohol that act strongly on dopamine can cause SERIOUS problems with adderall, like not feeling any happiness for a week and fun things like that. Adderall is a serious tool to be taken seriously. I joke that Adderall is like a chainsaw. If you’re using it at 3am, there’s a problem. I’d also tell myself that the Adderall isn’t what made me lose weight, and wasn’t the main thrust of me being able to learn. Losing 75 pounds and moving from obese to a healthy weight HUGELY boosted my brain power and concentration power. I was also constantly reacting to food. Had to sort that out.
Adderall let me sort of ignore it for a long time but the underlying condition just got worse. Was put on Nexium for horrible GERD at night at 34, was trembling and all sorts of scary side effects. A ketogenic diet with moderate exercise of walking once or twice a day makes a huge difference. Also magnesium is a like a miracle for my anxiety.
I’d tell me from before I was even in tech at all to just stop wasting my time failing at school and just get a tech job. Although I don’t know if I could have done it without my wife, honestly. I was really good at lying to myself and she put a stop to that shit, excuse my language. I should have tried.
I’d also maybe be less arrogant after getting a good job. I lost a lot of friends who were in a similar slacker boat as me a few years ago. It’s like they stopped wanting to hang out once I became successful which was very isolating.
I was a bartender for over a decade; there's no better crash course on how awful a molecule alcohol is. It's the worst drug.
Sorry to hear about your friends. It sucks to lose your roots, I went through something similar myself. I've come to reckon with the fact that people sometimes grow apart, and you can't always hold yourself responsible for what might just be an incompatibility in process.
Having a spouse around to correct my course when I start getting a little too enthusiastic about amphetamines and work was important for me too.
I use Magnesium Glycinate at the recommendation of people on the nootropics subreddit. [0] Has worked wonders.
[0] https://www.amazon.com/gp/product/B07ZD7R4RF/ref=ppx_yo_dt_b...
I was in finance and a lot of the job was getting repetitive. Update excel sheet X times every X days, etc. You soon want to automate the boring repetitive stuff but formulas in excel only get you so far. So you reach to VBA that exposes you more to coding. Then you reach limits there and you look at scripting languages like Python. Ultimately, I decided I enjoyed that part way more and wanted to do it full time.
- What are you doing at your job? Is it everything you dreamed of and more?
I work on backend services. I think the job is better than probably a lot of others. However, it's not all that rosy all the time. On-call is something you probably don't hear about before going into the field, and I think it negatively affects quality of life significantly. The beauty around software is that it runs all the time without you having to do anything, but that also means stuff can break all the time at all hours and you might be tasked to fix it.
The agile work framework is pretty common and I don't like. It's very common to have daily meetings (they call them standups) where you have to tell everyone, what you did yesterday, and what you're doing today. Feels super micro.
More recently, D&I activism has taken engineering by storm. It's hard these days to focus on your job and role without getting dragged into this topic. Hiring based on physical traits (i.e. discrimination) is live and well (and encouraged/required) at tech companies, especially in engineering departments.
Lastly, the hiring practices in this field are complicated. Hiring is predominantly based on obscure algorithm and data structure problems, things that 99% of people don't care about in their day-to-day job. This makes finding new jobs a bit more difficult, because you actually have to allocate a good amount of time to learn these things again.
- How did you break that first-job barrier? I went to a bootcamp and did a lot of algorithm practice problems. The job I ended up getting was through a referral.
- What were you doing before this? excel heavy work
- Any tips for the rest of us? You should generally enjoy problem solving or you wont enjoy it that much.
I wrote about those exact questions in my personal blog, and as I am on the phone now, I will just link to it: https://rodrigohgpontes.github.io/
It all started with playing games. When I was 11, I wanted to host my own CS 1.6 server to make some money by selling VIP. To advertise the offer, I wanted to customize the welcome message you get after connecting to a server. It's coded in HTML/CSS which I had known nothing about so I asked my ICT teacher, who happened to build websites as a side job at the time, if he could help me with that. He taught me the basics, pushed me in the right direction whenever I had a problem and showed me programming is a ton of fun. So from the welcome message, we moved onto building dynamic websites in PHP... Then games in C# using MonoGame. Then came my first professional jobs - CMSs, CRMs, first Java backends and so. And well, here I am. But to answer your question, I focused mainly on web first. I got into it because I was curious, I loved building things and I immensely enjoyed solving problems I had no idea how to approach.
- What are you doing at your job? Is it everything you dreamed of and more?
I'm working on a backend of a service that's used to send RCS marketing campaigns. It's very different than working on your own projects because the business side of things is more important than having a pretty codebase and using a shiny new technology plus most of the people I had a chance to work with were pretty mediocre, so it's definitely not ideal. I've always dreamed about having my own company so I hope that's going to happen one day (I'm making active steps towards this goal of mine).
- How did you break that first-job barrier?
Being 16, I was already ahead of lots of people who have even finished their degrees. So that plus the fact I didn't care about money, I was excited to work on some real projects :)
- What were you doing before this?
I was a kid haha.
- Any tips for the rest of us?
Plenty of my friends tried to learn SE by putting in lots of effort first but they never persisted. It takes months to start connecting the dots. It might be hard to not understand the whole picture, it might be hard to always have problems, it might be hard to always come across a new technology you had never heard of. But trust me, if you persist, it'll get better. Be consistent.
I still can't write code without bugs.
I've always been fascinated with technology and trying to figure out how things work. I got my first computer at age 8, it had QBasic. I programmed a small number of games on it. I spent a lot of time dis- and reassembling this computer, reinstalling DOS, Windows. We didn't have internet or manuals, nor did I speak English. Later on played with Linux which really helped me understand how all of this works under the hood. Actually programming came much later.
- What are you doing at your job? Is it everything you dreamed of and more?
I've been in the field for 11 years now, currently in an SRE role. SRE seems to be a different thing wherever you go. Not really my dream role in its current form right now.
- How did you break that first-job barrier?
QA internship in the gaming industry. Turned into full-time position, later on QA Engineering and then Software Engineering. I jumped on opportunities when they cropped up. I made myself useful in QA rather quickly as I have a low tolerance for doing repetitive tasks manually, which got me into automation and tools programming.
- What were you doing before this?
I tried my luck studying computer science for about 2 years but that didn't really work for me. That opportunity for an internship came at the right moment and I took it.
- Any tips for the rest of us?
Find yourself a mentor. In my first role in QA there was one person in particular who was very open to all my question and taught me how to approach complex problems in legacy code bases. It really helped me gain a lot of knowledge and also confidence in my craft. I should reach out to my first mentor and thank him, I am not sure he's aware of the impact he's had.