I up screwed in undergrad. I got cocky, spent way too much time at hackathons trying to get internships and winning prizes instead of focusing on learning the fundamentals of CS. Got kicked out of computer science undergrad program, ended up finishing my degree in [something else] and have been working at [redacted] as an swe. Doesn't sound too bad does it? Everyone has been telling me I'm doing fine but I'm not. I feel like an imposter in the environment, I don't know what I'm doing half the time. All I do is build graphql APIs and write frontend code. Do I know what's going on though when it comes to scalability? I try to but it's so overwhelming to grasp all the concepts at once I get frustrated and confused on what to learn. I am surrounded by people who have a solid understanding of infrastructure knowledge at my age. The job market is absolutely trash right now at least in [redacted]. A lot of companies want a bachelor's in CS as a minimum requirement and I feel like I'm stuck at my current company. Tried taking some courses to get into uiuc or Georgia Tech's online masters in computer science programs. I got rejected from UIUC and I'm probably gonna get rejected by Georgia Tech as well because my GPA is really trash. To all you self taught coders out there, how did you learn the advanced CS concepts? Did you build your curriculums to learn some of the more niche and advanced concepts like threading, concurrency, or distributed systems concepts?<p>Honestly I don't know what I am doing. I am mediocre at best and I truly want to learn the concepts I missed out on in my undergrad. I don't want to be limited to the [redacted] tech market either and I feel just bad right now they I didn't put in enough work in my undergrad.<p>Guys I can barely get through the day nowadays without just crying, getting frustrated, or feeling absolutely tired from overthinking. I need some guidance moving forward and I wish to receive some suggestions on what I can do to become a better self taught developer that can compete with the CS grads who have the prerequisite knowledge.
Keep in mind that most CS graduates feel like they don't know what they are doing. CS is meant to give you a background that you can build on. The computer field is too broad for anyone to know it all. There are countless of SWEs that are very good at their jobs but don't have a CS degree. There is also the down side of a CS degree. You will be required to learn subjects that are nice to know but they will never be useful in your career. You have a job and you can do it. Now you just have to focus on the subjects that will enhance your abilities in your job and in your future career. My advice is to read the requirements of the types of jobs you are interested in and focus on those. Stay away from the trendy new computer languages. Also, contact people that are doing the type of jobs that you want and ask for their advice.<p>The job market is tight right now but that won't always be the case. SWE jobs are well paid so the competition to get them is high. You just have to continue trying until you can get the job you want.
| The job market is absolutely trash right now at least in canada.<p>So you're probably sitting tight for awhile (which is fine). That means you've got time - frame the problem from that perspective.<p>| A lot of companies want a bachelor's in CS as a minimum requirement and I feel like I'm stuck at my current company.<p>Don't sweat it.<p>| To all you self taught coders out there, how did you learn the advanced CS concepts?<p>It depends a bit on what you want to learn; if it's a specific technology or practice, try and find ways to make that the solution to whatever tasks you've got at work.<p>Concepts are harder, but I've had some luck with online courses. In particular, I found nand2tetris to be a really rewarding course.
Sounds like you’re being pretty hard on yourself. I’ve been coding for 40 years and there’s still so much I don’t know and there always will be. CS degrees are overrated too as are degrees in general. Learn as much as you can on the job. Ask to get involved in things. The resources you have available to you know are immense but you just can’t learn it all. There isn’t time. The market might be crap now but it will return, it always does. There will always be people better are more gifted than you - just try and learn from them
| All I do is build graphql APIs and write frontend code.<p>These are valuable technical skills? I guess I don't know if your colleagues have been belittling this type of work.
I was in your situation 15 years ago. I graduated with low grades. I was hired as a designer for a small company that no longer exists, but really I was writing code. A year later I was picked up by Travelocity the travel company. They hired me as a designer as well, but after 3 months of doing no work I was involuntarily reassigned to a developer position. I just figured it out, because I enjoy not starving.<p>So here are the problems I frequently encounter as a self taught developer:<p>1) Compatibility. As a self-taught and frequent open source developer I value the no bullshit approach because I would rather do something else with my time. That generally means not revisiting the same problems over and over, which typically describes durability over convenience and reuse over patterns. Most CS developers don't want any of that as they primarily look for patterns familiar to those taught to them at school, which is generally some form of OOP. For many developers when familiar patterns are absent the first priority is to introduce familiar patterns at the expense of everything else. Sometimes people invest so much effort into these sorts of imaginary problems that they are incapable of imagining actual real problems. Joel Spolsky calls these people "architect astronauts", but I just call them expert beginners.<p>2) Confidence. As a long time military guy you always act with confidence. Always. When you have no idea what you are doing you then make the least wrong decision to continue moving forward because as you move forward you will learn more and your decisions will get better. Most self-taught developers just tend to do this naturally because its what they are used to. Most developers I have worked with do not do this at all ever. Initiative only applies if there is some level of comfort. Generally across the board software as an employment displays extremely high insecurity. If you are insecure in your abilities as developer then you are right there with more than half your peers. This is another indicator of friction, because people gripped with internal fear who don't have somebody putting intense pressure upon them to drive forward will primarily act in their own self interest. This one thing scares the shit out of me more than anything else in software employment.<p>3) Automation. The only purpose of software is automation. Software solves no other problem, but it does do a lot of other things exceptionally poorly. Self taught developers tend to at least be vaguely aware of this, because they are learning on their own time. Many CS graduates somehow believe the goal is something else. Typically that something else is what they wished software was, as though they are a small child describing how they want to be the president or an astronaut when they grow up. When you are confused about the purpose of the thing you touch for hours every day you will be likewise confused about what the output is, how to go about it, how to perceive risk, what the rewards should be, and what to do with changes.