So short background. I'm a self taught web developer who lucked into working at a friend's startup with practically no skills and only a couple basic CRUD to do style apps under my belt. I learned a lot, but never touched DSA. Did this for a couple years. Startup failed to get its last round of funding, and yep, I'm outta work.
My cousin works as a data engineer in a city a couple hundred miles north of me and wants me to get a software job so I can move up there and out of my parents place.
Most of the devs I've met from there are supportive of my journey, but emphasize I need to grind Leetcode. Only been doing that a couple weeks now.
My cousin called me and set up a call with a startup founder. I talked with him this morning and was very honest about my skills. He was also honest and said he needed somebody pretty comfortable with DSA as the application they work on is heavy utilizing ML.
He asked if I'd still like to do a Technical Interview and of course I said yes, making sure to emphasize I was probably going to perform poorly but was very thankful for the opportunity, and that I'd be treating this more as a practice mock interview. The founder was like "Well, at least you know your standing. And perhaps I can give you some pointers about how to proceed."
Super good stuff actually. I mean, obviously it'd be better if I actually was prepared, but I'll take what I can get in terms of feedback.
I'm nervous, I've never coded live and I can barely keep twosum in my head. Fuck. I'm about to waste this guy's time and will probably just look at his problem for two minutes, ask a few constraint or details questions and then just say, "Sorry...I don't even know which data structure to implement."
Anyways, I hate to be so defeatist about it, but I just know I haven't prepared enough. Oh well. Thanks for any sympathetic responses in advance.
It's likely that it's some combination of the aforementioned. I dont blame the education system (much), but I do tend to dwell on whether my brain has a severe flaw specific to logical thinking.
Like people say with leetcode or coding problems in general, "if you can't figure it out in around 25 minutes, just look at the answer, understand the pattern that you see in similar problems, give yourself a day or two to forget the actual solution, and then return to try again, eventually you'll get it."
But I've forgotten how to solve twosum multiple times in a single day. I can return to the exact same problem statement an hour later or sometimes even in 15 minutes and even though I can go, "I need a hashmap", I've forgotten the syntax entirely. And with twosum in particular I've returned to this very rudimentary problem multiple times over months. My brain resists memory hard it seems.
With projects its just so different because 99.9% of the time, the problem you're trying to solve has been solved. So you can simply find the answer, or something approximate to it with: "how do I stream data asynchronously from point a in this framework to point b in this other framework?", "how do I write this version of a for loop again?", "why aren't the props from this component passing to this child component?" etc. etc. This results in the search "how to... in framework/programming language" or "error message...means" or some other just verbose enough search query.
And yeah, gpt spoils guys like me cuz I can be as verbose or not as I want and with the code snippet, it just goes, "on yeah, there's your bug here and here's how to fix it" or "oh yeah, the docs don't really cover that use case and there isn't much info on the internet, but here's this insanely obscure implementation that likely works."
I try my best not to use gpt immediately, but if I've been staring at my screen and can't find a stack overflow answer...yeah, I gotta move on...and sadly my brain just goes "oh yeah, obviously that was the answer, cool, here's some dopamine, now let's move on."
Anyways, I love taping together solutions in code, but coming up with your own solutions through logic is just mind breaking. When I first started I wasn't even able to ask the right search queries, so I would just type crap out until it either worked or I gave up.
I...I need to rethink my approach to programming.
I work in a company where we create a large software product. Over 80 devellopers in my department alone, working on the same product.
I have noticed 2 types of devellopers that are equally necesary for our department to run smoothly.
The first type is the one you are trying to be, but feel you can't be: the one that will conjure up complex systems from scratch. I do consider myself one of these.
The latter one I have much more respect for, as they can do things I can't do as well.
The second type looks at existing systems, code, and solutions, and finds problems in them or tapes them together into a bigger solution. They have heard of issues with a system somewhere before, causing them to debug into the right direction much faster. And they are excellent at reading code and documentation, allowing them to use exiting solutions much easier. Despite them not being the best at creating entirely new solutions, In such a large software product, their skills are extremely valuable.
I get the feeling you would fit into the second category. If so, my suggestion is to look for a position as an integrator. Someone who puts all the code of others together, and debugs the resulting system as a whole. You literally spend your time taping existing stuff together, while you can delegate creating new solutions to the people who create the software you stich together. These other devellopers are your chatGPT for the problems that chatGPT can't solve.
Thank you. I'll look into that. It sounds like integration involves a decent amount of testing as well, which I have a sort of love/hate relationship with, but ultimately need far more experience in to really make a judgment on.
When I first started learning, I kept on telling my mentor I had the hardest time figuring out what to make for personal projects and ultimately just wanted to be given problems to solve. He did say something along the lines of what you're telling me, though worded quite differently.
Anyways, I'll stop meandering. Thanks for the advice!
Let me know if you find a better way lol.
I set up a self hosted knowledge base for myself a couple weeks ago and was gonna try that for a while to document what I'm doing and why, I am not consistent with it enough lol.