Advice for a dropout

- 24 min read - Text Only

My cousin reached out to me after deciding he wanted to change where he was in life. After sharing my response to my and his father, as well as a close friend, I think it is worth making more visible.

Hey real name here,

This is your cousin real name here and I find myself in an interesting place in life. I couldn't stand doing homework anymore, so I dropped out of college with a year left until my bachelor's degree. This happened around April 2021 and for most of the time since then, I've been working as a shelf stocker for a grocery store. I'm wanting to get a software engineering job right now and I would like some tips on how to do that.

How important is a college degree for getting a software engineering job and what can I do that would have an equivalent value to a college degree? What sort of companies should I apply to and what positions should I apply for? Where are good places to look for job opportunities? Anything else you could offer in term of information would be greatly appreciated.

Thanks for taking the time to read my email!

Before responding, I reached out to another friend, one with far more managerial and hiring experience. He mentioned that he himself was a dropout so with that experience in mind he offered some high level tips, which I expounded upon in my response.

Hey Real name here,

I’ve asked around for some advice and got a few tips from someone who did leave school and got into the market successfully. This response is a combination of mine and their points.

Here’s what matters the most to a manager who’s hiring someone without prior relevant job experience.

They’re going to look for what you’ve done outside of school. "School Projects" really are not an effective or useful measure to talk about, except for team ones. Don’t disparage your team members. Saying "I was the only one who did something in my team" will knock you out. Even if it is true in your eyes. Instead focus on things like how you contributed to the design with your peers, agreed together, delegated work and so on. If you didn’t have any team projects, then consider if you ever did a hackathon with a team. (These happened at university here occasionally for some charity). If you don’t have any experience there, then say you’re eager to be a part of a team and bring your ideas to the table.

As a junior in high school my team presented some content management software for the high school at a state competition. It was my third time making a CMS actually. I was told not to mention that I was the only one who did the code and everyone else added some content in our "web development" class. I accidentally let it slip that I was the sole developer of this software during the competition interview.
The interviewer's expression hardened, he wrote down something down, and his questions seemed to be cut short afterwards. The interviewer moved on and we did not have any mention in the rankings. The senior on our team shook his head afterwards and mentioned something about the team aspect being weighted the most, as it represented the strength of our educational setting. Or something like that. It was over ten years ago.

So if you’ve got a hobby web application, mobile app, API or something like that, start polishing it a bit to share. If you don’t have one, then get started. Find a relatable problem like… "I don’t know when my dryer finishes, so I put a motion sensor on it, and when the sensor runs for more than 10 minutes and then goes still, it sends me a text using AWS Event Bridge and AWS SNS" is a great one for a hardware / internet of things company.

My dryer has notification functionality, but it's one of those internet-of-sh*t kind of features that I don't want to connect to my network.

Figure out what you’re passionate about. Do you want to do frontend? Do you want to work with databases? Do you want to do backend APIs? What about mobile apps, and so on? What do you find most engaging? You need to figure this out. Being an all rounder isn’t convincing as a first-time-hire, though you’ll have to try something all rounding to know what you like.

This is really important. Even for the experienced. I am capable at doing frontend, backend, databases, infrastructure, and so on. Throughout my life I have had to do all the things to get the job done. Now I know that infrastructure and backend are where I thrive the most.
The next competency I wish to refine is in the cryptography space. Specifically around the application of cryptographic tools in forming and implementing protocols.

In an interview, you’ll need to be able to speak intelligently about problems. The only way you’ll get better at this is by practicing. Practically doing hackathons without the code. Find a problem, think of what it looks like solved, design a solution, then try to break it down and find holes in your solution to see if it is a good fit. When you find something particularly engaging to you like the dryer example above, actually make it happen. That’ll be useful in your initial cover letter and interview.

Try a voice call with your friends, see if they can break down your precious ideas. When your manager does design review with you, your ideas are going to get holes poked in them too. Use this opportunity with friends to get over being hurt by your ideas being faulty. This is normal.

You’ll have to come up with a story for the interviewer when they ask "So why did you go to school and not finish?" Saying "I didn’t want to do homework" is a terrible answer. If you instead say something like "The academic focus wasn’t engaging, I want to solve real problems" that’s far more convincing. Let me tell you, CS degrees are nearly useless. All they say is someone knows how to type things that look like code and they probably know how to learn. Yet still as I interview people 2+ years out of college, so many still do not know how to make anything useful. Oh here I’ll program a tree-map in front of you. No I don’t care about that. The language comes with one, use it effectively.

Something like this really has happened. Someone in an interview tried to write some sort of array list implementation for a problem that a dictionary is appropriate for. They couldn't figure it out because they were using the wrong tool for the job. Knowing which tool to use and how to use it correctly is the most important thing you can develop a skill in when you start. That only comes with experience.
Because of how poorly interviews have gone, and in one case a hire that did not work out, I have little faith in degrees now. Degrees don't give experience. I've heard CS professors outright say that their program is not to prepare people to do software in the field. Their program is to perpetuate those like them that research some specific thing with unknown applicability. Work gives experience, take it into your own hands and get that for yourself.

As a continuation of the paragraph above, know how to use your tools, especially data structures. This is the bread and butter of solving problems. For example.. "Count how many unique items are in a list", how would you solve an input of.. [a,a,b,a,c] with an output of {a:3, b:1, c:1}? Can you think of how to unit test this and propose alternate inputs and outputs? This is just a building block for greater problems. For example, a pharmacy wants to have at most 5 vaccine administration slots every 10 minutes. Create a reservation system that does not overcommit (6+ within a 10 minute slot), and where people can choose which slot 2-10 days ahead, with slots available from 8 AM to 1 PM, but none between 11:30-12:30 (lunch break). How would you solve this? Can you make an API for it? Could you make a frontend using that API? What does the database schema look like? How will the pharmacist know who’s scheduled for which slot? What’s the API and frontend look like to them? These are real problems, that get paid to be solved.

The local pharmacy has the lamest vaccine reservation system ever. If someone views slots available at a location, it is withheld from all other viewers for 10 minutes. Instead of something with a live experience, or showing errors, it outright will not show available slots when someone else is viewing. So my father would look sometimes (back when getting the first shot) to see if something was available. I'm like cool, I'll go get scheduled. And I see nothing! Only after he gave up on trying to help, and I got a slot and then told a housemate to get a slot did we really figure out this behavior for certain.

You need to be a life long learner. Not getting through school harms that image. I started programming when I was 12, added features to custom PSP firmware mods at 15, made money to buy my own desktop at 16 with PHP and javascript, and got a job doing software development before starting my first class at university here for university student job here. I was a student programmer with a limit of 20 hours per week, being paid 9.50 or so an hour. It wasn’t much but I could pay rent and buy food on that. Still, I did that while going through school. I only achieved that because this is where my free time goes. It voluntarily goes to learning. Where is your time going? Do you think you could change how you spend your time to be a life long learner? The way you prove this is by passionately sharing what you learned to solve a problem and show your actual solution and explain how it works. Specifically highlighting where you made mistakes, adjustments, and so on. You have so many more resources to do nearly anything today than I had. See lifelong learning for more about the definition.

This isn't about staying up to date on the latest javascript framework of the hour. This is about honing your craft on your own terms. A job will not provide consistent experiences that grow your skills and craft in a technical space like this.
In fact, a lot of the job will be building a shed. Big projects never that end and always need maintenence. It is very unlikely that you will be satisfied with your work. You will be faced with the contsraints of the job. Don't let your job constrain you from developing your skill.

So you’ve taken time off from school, I did too. I had to figure some things out in my head and adjust. While I spent 5 months away from university, I practiced some things, found a lot of my motivation was missing. Upon reflection, that was burnout. Take a look at burnout prevention and recovery.

Experiencing burnout for the first time is so weird. It has a lot of self disappointment that builds up. Why can't I do this thing? I've been able to do it for years in my personal time. I must be broken. Well that's wrong and it is a lie. If you are experiencing burnout, accept yourself and do things to recover from it.

You need to be a self starter. No manager is going to hand hold you. You need to be capable of being told "Learn enough Spring Boot to make a server that sends a random dog picture and get back to me." You totally can and should ask things like "Would you share links to where I can learn this?" to your manager. That’s part of their job is enabling you and guiding you. But they aren’t your teacher. This goes back to life long learning. You are responsible for equipping yourself on the job to succeed at the job. You can ask for hints too. But it is up to you to vet what you find online and figure out how to apply it. Do not resort to throwing code at the wall by copying stuff out of stack overflow without understanding it. Read and understand before you introduce something that you share. You can run stuff and then beak it down by experimenting with it too, but by the time you come back to your manager you should have a firm grasp of what they requested. See more at what is a self starter.

I have a few boot-camp like learning activities for new hires that do not know spring boot. is a simple free API to find dog pictures. If you are into cats there's one for that too.

A really cute papillon dog

The first warning sign for me that the new hire did not work out was the boot camp took them two and a half weeks. Others took four days at most, three days on average.

Finally, you need to figure out how to communicate clearly, cut through to understanding problems that others are talking about, confirm your understanding with them, develop the skills to listen and speak what you do and do not know and think. Your first industry job is going to be about presenting your potential. Your goal is to convince whoever interviews you that you can be trained and developed to have the skillset needed to do their job, and that you in turn get set up for a good career. Wherever you land, try to make it to 2 years. If you can stretch it to 3 or 4, you’re good for the rest of your career because now you have the "or equivalent experience" that job postings list.

The whole experience thing on paper matters more to the talent hr person that filters incoming applications than to a software engineer-become-manager. You may have better luck if you get a referral to the person who actually makes the hiring decision (that is: the manager). These referrals can be found by participating in highly technical things in your own spare time.
Consider joining discord communities that overlap your culture and interests together. Is someone doing something neat with machine learning (ML) for furries and you're interested in ML and furries? Maybe connect with the author. Practicing among peers and that you feel competition with will develop you and your reputation the most.

Software engineering isn’t a field where someone stays around for 10-20 years at the same company. Things are moving too fast, companies (even facebook) are too slow to adapt, new ones are appearing and old ones are crumpling (search "Novell Layoffs" for example) and some go entirely out of business. This is the nature of the field. Maybe your first place is everything you hoped for, but for the majority of people out there, it is not. I moved on from my first place after 2 years and 9 months. I’m at my current place for 4 years and 7 months. This might change but that’s for me to figure out.

My first supervisor came from Novell. He came with patents and all those prestigious peak of the carreer credentials. According to him Novell had this system where they'd downsize in some organizational units, but because they were hiring in other orgs, their layoffs would regularly get re-hired interview and all across teams and organizations. After four or so times being rehired (what the heck kind of management is going on here!?), he gave up on Novell.

Here’s what I want you to get back to me on:
What are you passionate about, what engages you, what skillset have you developed on your own so far, and what are you doing to show and tell to get your foot in the door?

Best wishes,
Real name here

I haven't gotten a response back yet from my cousin.

Though my father BCC:'d gave this remark:

I think it's perfect, because it's a positive energetic email, so he could read it and say.. "I could do this!" or he could read it and say.. "not for me.. it's too much", but there's enough there that he should realize in saying so, that he needs to look at other career choices.

Are you facing a similar decision?