Hacker News new | ask | show | jobs
by amagumori 3234 days ago
for anyone who has grown up poor or working class, how do i claw my way out of this? i come from a single parent household, my mom is an elementary school teacher with 4 kids in an expensive city. she barely makes ends meet and cannot support me. i was homeless and addicted to drugs for most of my teenage years, before getting sober and going to college, but dropping out after 2 years - my mom's child support put me just outside of qualifying for financial aid, despite the fact that she could still barely afford food and rent, so my only option was living at home and taking out 5-6 figures of loans. i didn't want to be a financial burden on my mom by living at home, so i dropped out and kept working as a bike messenger. as an aside, my mom is in astronomical debt from a lengthy divorce process with my father, who physically abused me, my siblings, and my mom, tried to kill both me and my mom at different points in time, then successfully put my mom in 6 figures of legal debt by drawing out the divorce process as long as possible.

flash forward to now - i'm still a full-time bike messenger. i barely pay the rent for my tiny SRO i share with my girlfriend. my biggest goal in life is to get a job as a programmer to support my mom and siblings. i've been teaching myself computer science for years now, and i know i would succeed if i could get a job programming. i just don't know how i get there from here. being a bike messenger (a real one, not a postmate / uber eats person) is extremely physically demanding. i'm mentally and physically exhausted after work. i don't have enough time or energy outside of work to complete any of the projects i start, with the hope of having something to show to a company. i feel like a simple CRUD app is too easy of a project to show my skill to an employer, so i try to work on things like a compiler and a real-time rendering engine, but these are huge projects, and i don't have enough free time to finish them in any reasonable time frame. i'm confident in my programming skill, but my resume is a list of working-class jobs in machine shops and courier companies. any advice would be seriously appreciated.

(hopefully this doesn't read as too melodramatic or anything, it wasn't meant to be. i know i'm still a lot luckier than most.)

10 comments

* In Boston at least, there are programming-related interest groups meeting most weekday evenings. Most with free pizza. (http://www.bugc.org/ - but it's been buggy this week, and is currently missing groups).

So one is paid dinner, to network with programmers at local companies, at a place where hiring managers congregate to look for people. ^.^

* Skill levels in industry are diverse. The lower bound is low. SV is atypical.

"so i try to work on things like a compiler and a real-time rendering engine". That is very not lower bound. That's professional development. Get a job first. Learn, and then move on - industry turnover rates are high.

One thing notably absent from your narrative, is a report of repeated job rejections. Instead of adding features to yourself, put yourself on the market - you may already have achieved Minimum Viable Product<ctrl-delete>Programmerness. And even if not, you'll get a better feel for market fit, and for what might need to be improved. Time to release.

* Put something on github. Even if it's small. Even if it's unfinished - software almost never is. Include a test. There are people looking for programming jobs who can't write a coherent paragraph of code. Or English. Clarify that you are not them.

But perhaps set out to obtain at least one rejection first. It'd seem a pity to self-fund fiddling on github, if you could already be being paid for it.

Do a CRUD app. Try to make few features, but finish it. If you want to do more later or other projects thats fine, but finish something because it's good for you and for potential employers. Be able to talk about at least one 'thoughful' interaction in the app. If you have interest in the other areas you mentioned, keep learning about those too - they're worth it, but likely small investments over a longer time period of pay off (they will likely pay off if you keep at it).

I'll mention this as a long shot too, the machine shops and courier companies give you an interesting exposure to something that many direct-to-college software engineers may rarely see. Talk about programming to people there too, you may find out there is software you could write to solve problems for those types of shops.

The important thing is not the odds of any one thing, it's that you keep rolling the dice on things that can improve your lot. So good luck and keep your chin up!

My main advice would be to caution that most of the advice you're going to get is pretty hit-and-miss; even if some of us have done smart things to improve our life, we usually also got lucky along the way, which can be hard to replicate.

A critical turning point in my life was joining a web comic's forum in '01, which led to an IRC chat room which was eventually distilled down to a dozen-ish people around my age who were all interested in programming, among other things. I got an interview for my first real job through a friend made in that chat room.

Which is why my other advice is to "network", by which I mean, "make friends on the internet". The sad truth is that knowing the right people matters. Some people inherit a great network, the people their parents know, some people get a network by going to college or joining a fraternity. Not having a good network is something that really holds you back, way more than not having a perfect resume. But the internet gives you at least a chance to find some people you would otherwise never meet, make friends, and if you're lucky, they're good programmers at companies that are hiring, and they'll feel comfortable saying, "Hey, I know this person, they're not an asshole and they seem to know their stuff", and you'll have a shot. Not having a degree or an impressive resume will hurt you, but a lot of start ups have trouble finding good programmers and won't care as long as you can do the work.

My personal estimate (after 11 years of professional fullstack web development) is that about 80% of web development is doing some variations of CRUD screens. Create that CRUD app, publish it on github and let the possible employers know that you can do at least the 80% of the daily tasks. With a github repo and a project on your cv, you'll be in the top 5% candidates that don't have any work experience. There's a much bigger need in the market for devs who can do CRUD apps than for devs who can architect and implement rendering engines.

Change jobs. There are jobs that pay similarly to a bike messenger, or maybe even more, but are less demanding, like a night shift security agent at auto dealerships. You could even take your laptop with you and work on your projects.

> so i try to work on things like a compiler and a real-time rendering engine

Even unfinished this sounds like a cut above the average entry level dev. Make sure these projects are on github or whatever so people can see the code, even unfinished, it's good to see the progression.

Apply for a dozen junior dev jobs and see what happens. You'll probably get a bunch of rejections, but if you can write coherently and talk clearly you've got a chance.

And even if you don't get one you will probably discover something about what it is you are missing that businesses want and you can work on that specifically.

I missed the edit window, but the post got me thinking, so I came back to add this.

My first dev job was straight out of uni. No prior work experience, and no open source work to share. I had a 2000 line final year project written in c++ and that was it.

I think may 1% of the graduates had any open source contributions. Most were like me.

If you consider that these will be the people you are competing against for a entry level role. Your projects are a huge thing if you open source them, even unfinished. Just demonstrate an understanding of some CS concepts, algorithms, code design, etc and you'll be competitive at the very least.

Don't be afraid to submit crud apps, far more businesses need them than need real time rendering engines. Happy to talk more, email is in my profile
drop me a line. email in profile. I don't know if I can help at all, but will try.

Don't give up. Don't give in, to despair or otherwise. There's a better world out there for you, it exists, and nobody can make it disappear (or take it away from you because of your family, your past, or whatever). I don't want to overpromise as I'm short on time as well, but ping me and I will try to help.

This is what you need to do. Find someone to guide you and follow through the advice. I already did something similar for my friend who used to work in a music shop.
Avoid debt like the plague. It already reared its ugly head twice in the first paragraph.

When you look at the crap out there that ruins people, most of it is finance (rent-a-center, subprime mtg, payday loans, easy-credit car loans, student loans, etc), and it's a death-spiral.

Hey, I come from a similar background.

> i'm mentally and physically exhausted after work.

Most people would say "then get a different job", and I think they're not wrong, but I also think you can cheat. I don't know shit about being a bike messenger, but maybe you can grab an hour or two a day to build a sample website or a mobile app. Pretty much everything I learned I learned while I was supposed to be doing something else.

Also practice interviewing and coding interview tests. If you're good at those you'll get a job in a couple months, if you're bad it might take years.

> i feel like a simple CRUD app is too easy of a project to show my skill to an employer, so i try to work on things like a compiler and a real-time rendering engine, but these are huge projects, and i don't have enough free time to finish them in any reasonable time frame.

Don't make the mistake of thinking that you're on one side of the wall and you need to prove yourself, and that on the other side of the wall are a lot of people doing serious software engineering. The majority of people I've worked with are self taught -- as in they don't have a CS degree and figured it out on their own in one way or another. Exactly zero of them have written compilers or rendering engines, and I'd be surprised if they would even know where to start.

This is not to say they're shitty software engineers at all; I've worked with some terrifyingly smart people. But we're all just making it up.

That's the most important advice I can give to you, and it took me a long time to learn it. You're already good enough; put in the time, cheat and lie or whatever if you have to, and get what's yours.

You can perhaps bridge the gap between courier and salaried software developer by freelancing. I'd be happy to help you get started. My email is in my profile.