Ask HN: Any other self taught devs terrified of interviewing these days?
When I got into this industry 10 years ago, the world was a completely different place. Bootcamps weren't a thing. Computer Science programs were still something just for the nerds. And the industry was almost entirely autodidacts like myself who grew up immersed in technology and did it for the joy of it. Fast forward a decade, and now literally everyone and their uncle wants to be a software dev, and CS programs are churning out hundreds of thousands of graduates. The thought of competing against someone credentialed with 5 years experience vs. myself with 10 years and no degree, feels hopeless. It almost seems like the path I took back then would be completely impossible today.
220 comments
[ 2.9 ms ] story [ 249 ms ] threadAnyway, in my experience degrees are more about simply getting past the first-level HR filter than anything, and don't get you hire per-se. And with 10+ years of experience, you'll get past the first-level HR filter just as easily, so really it comes down to demonstrated competence. Can you show/convince (an) interviewer(s) that you are competent? If you can, you'll be fine.
If you know what you are doing even in the slightest, you won't fail.
No one will put you next to the whiteboard and say "do FizzBuzz", expecting you to know exactly what it is and what to do. They will say "write a function that takes in a positive integer as an argument, and then counts from 0 up to that integer. Every time a count is divisible by 3, print out 'Fizz'. Every time a count is divisible by 5, print 'Buzz'. If a count is divisible by both 3 and 5, print 'FizzBuzz'".
I cannot imagine someone who wrote all the complex things you did, but is not able to write a toy counter function like that.
But in general, I find LeetCode style interviewing very boring and dry. Like all of those "Given a string, find a substring that satisfies bla bla condition", or "given a matrix as csv input, read it then calculate some BS and find the best estimation for some other BS, etc".
When I was very young and naive, that might be fine, but at this point in my life, I just get super super bored and annoyed by such questions.
Instead, I prefer contextual questions. Like if you're hiring for a low-level network programmer, let me do some socket stuff in C or Go, implement a backoff mechanism in a given code template, discuss some TCP/IP congestion stuff, discuss some code, add a small feature, put a bunch of system calls and watch how I care about performance (blocking vs non-blocking, epoll vs select, shared-memory vs message-passing, context switching, etc) and how I handle errors, and also observe my workflow, how I check the documentation, the man pages, debugging, etc.
I think this is a much more reliable and less frustrating way of interviewing and I believe it attracts very highly skilled and motivated people.
I've seen candidates fumble when given the problem of adding a node to the end of a linked list. Everybody is pampered now with swiss army knife languages that do everything for you that they don't know how anything basic works. Many of the HN crowd will sneer at the idea of this sort of low level coding but it is still important in many domains.
Wow. Who's sneering again?
> Many of the HN crowd will sneer at the idea of this sort of low level coding but it is still important in many domains
Yeah, we do. Because developer-cum-interviewers for companies writing marketing-optimized CRUD apps use these as filters (or to make them feel superior, take your pick), and sneer at people who can't bark out the proper magic incantation for reversing a linked list on demand.
And let's be honest. Unless you're in an exceptionally specific field with exceptionally restricted resources, using the "swiss army libraries" will create more performant code than a human can. Because those "pampered languages" have been optimized to ridiculous degrees.
Haha, and then there are stories about python finally getting rid of the GIL - soon, probably, hopefully!
And that's only my favorite language.
If you were being hired into a specialist role such as for low-level networking, there would absolutely be a more detailed “Systems” interview where you would discuss in depth the topics you mentioned, usually in the context of a more open-ended “architectural” problem.
Interviewee performance on these “Systems” interviews hold a lot more weight at senior levels, not just for hire/no hire decisions, but in fact the level of your offer.
The field of interviewees is so mediocre that if you start with a reasonably difficult interview question a lot of them will flounder and will never get it. When I interview I like asking tiered questions. They build on each other conceptually and get harder.
The first one I ask takes good candidates 10-15 minutes at most. I've had some solve it in 2 minutes. You can write a not-too-ugly 1-liner in Python to solve it. Some candidates spend a full interview on that question and never get it. The question isn't a trick question, it requires a basic knowledge of data structures and directly translates to the (mostly simple) code people write every day. If someone solves this question it basically tells me that they're good enough for the second question, not much else.
But man, is it painful to interview someone who can't answer that first question with a harder problem to start with. I don't know if you've ever interviewed someone who just didn't get it, no matter how many hints you drop, but it is an uncomfortable experience.
That is why we have FizzBuzz. Asking a harder question first to a shockingly large number of candidates is a waste of effort. So we all have to FizzBuzz and then (hopefully) answer some real questions.
I'd suggest actually looking up what fizz buzz is before making that claim.
https://en.wikipedia.org/wiki/Fizz_buzz
I like it as an interview question because it gives insight into the candidate's thought process. I'm not as concerned that the resulting code works. My approach is to explain fizz buzz, hand the candidate a computer, ensure they have the tools they're comfortable with, and tell them to use whatever resources they need. Copy and pasting code from the Wiki page wouldn't be the worst that I've seen (and would be 100% acceptable to me if the candidate can explain what the code does). Write it in BF for all I care, as long as you can explain what it does and (ideally) run it.
At one job a few candidates stood out. I was running late as usual, so I popped in, realized I'd forgotten my notebook in my car, and went back to grab it. By the time I returned the candidate had literally run out of the office. One candidate wanted to impress us with his bash skills and got completely flummoxed trying to figure out how to implement the modulo operation in bash. What really stood out about the candidate we hired was that they reviewed the code and then ran it to verify the correct behavior before handing the computer back to me. They were the only candidate to do that.
I like fizz buzz because it's both a good low pass filter and a good jumping off point for further discussion. If you can't read the Wiki entry and wrap your head around fizz buzz, you're probably not a good fit. If you can then there's the opportunity to ask all sorts of questions (e.g. why did you choose this language, how would you test this, what would you do differently) and maybe even move on to a more complex program.
For the one candidate who struggled with bash, we started offering input around the ten minute mark. Stuff like "is there something else you could use instead of the modulo operator", leading questions to encourage them to check the man page (or google it), inquiring maybe a different language would be a better fit. That this person could wrap their head around fizz buzz was only a minor detail. That they were fixated on making a specific implementation work was a big miss. At this job specifically the tech stack was fairly diverse so there was a lot of value in being able to suss out the right tools for the job and less value in being able to bang out a more complex algorithm in clojurescript or whatever.
Here's an implementation of mine for reference:
A fellow commenter here has already addressed this point, but let me reiterate: you wouldn't be told "do FizzBuzz" with the expectation that you already know what FizzBuzz is. The problem definition would be explained, and it is a very trivial problem. That's why it's often used as a low level filter for programming interviews.
At a former employer we used to do just about everything we could to make the process as easy for the candidates as we could. We'd give them a laptop with an IDE running, the skeleton of the test app already in place (eg, main method, and any "plumbing" dictated by the language. We supported using Java and Python) and comments basically saying "flesh in the required logic here." We would give them, IIRC, 5 such "skeletons" and ask them to pick any one (or more) they wanted to implement and gave them approximately 30 minutes. Besides FizzBuzz the other ones were "reverse a string" and other problems of similar difficulty. And yes, you could use any standard library API that you wanted. And frankly, if somebody had said "I know how to do this, but I'd need to download library $FOO" we probably would have arranged to get them library $FOO ('net access on the test machine was disabled, as we really didn't want to test their ability to go find the answer somewhere else and copy & paste).
And despite all that, it was sad to find that very many candidates, even those with documented years of experience and/or advanced degrees, could not manage to complete a very simple programming assignment. Well... I say "sad" but there is another way of looking at this: it could be that FizzBuzz, "reverse a string", etc., just don't have any particular relevance and that this whole exercise is useless. I mean, if you have a person who's been gainfully employed as a developer for 10 years, and they can't do this, what does that tell you? Maybe it's the test that's wrong. Even though intuitively, I think most developers would believe that anybody who can't do this sort of thing doesn't really know how to program.
Anyway, back to the original point directed at the OP: being self-taught isn't really that big a deal, IF you can demonstrate some fundamental level of competency.
I don't think you need to be a feminist to say "WE ARE NOT THINGS".
I am not a resource.
I am not "human capital".
I'm a man who happens to need to work for a living. Deal with me as such or not at all.
It’s even worse compared with modern dating apps. Like dating apps, I can’t even trust that job applications are real and actually interested in finding someone.
And just as with dating no one I seem to like likes me and vice versa.
I got burned by this recently. A recruiter reached out to me on LinkedIn about a job opening at a company I had previously been interested in joining. One phone screening and one Teams call with two different external recruiters later I was informed that the company wasn't even hiring for that role.
Of course this was partially on me. If I had looked at the careers section of their website I would have seen that the role I was applying for wasn't listed.
Wish I could do something with that info. A deadpool where the posting that's been up the longest wins the daily pool?
We'd all like to be judged by our objective value, but the problem is, it's really hard to measure it, so we have to use some kind of heuristics. One of the heuristics is self-confidence which is supposed to come naturally with skill.
So if you hide yourself from the world, don't be surprised that the world doesn't see you. If you want the world to see you, it is your responsibility to sell yourself, in order to inform and assure others of your value. The valueable ought to be louder than the conmen, in order for world to work properly.
This is a very poetic and hopeful thing to say, but at the end of the day, it is simply not true. We don't get to just exist for the sake of existing. There has to be give and take with our external environments. There are a few relationships that bypass this (to SOME extent; see: mother/child) but by and large for the vast majority of human relationships, if you don't provide value—they aren't going to altruistically just give you money, love, time, etc.
So while you are correct that we are not things, we are humans, there is a level of needing to convey what wonderful human qualities you plan on bringing to the relationship. This is true in dating, interviewing, and making friends. There's no relationship you can voluntarily enter where the other party will be fine with you taking and not giving—and interviewing is simply outlining those terms—"selling" what you plan to bring to the table.
But it’s funny you say 10 years ago. I started 20 years ago and don’t feel like 10 years ago is that much different from today(though would say it seemed easier to start out 20 years ago)
Needless to say I didn’t get the job.
I know two things for sure : - Hiring is stupidly hard. There is basically nobody applying. - For any non junior position, we dont even care about the degree. Personally, I don’t even read this part of the CV. Experience matters way more.
For me, as long as you are doing decent work, nobody will avan care about what degree you have. Furthermore, I’d say that companies filtering you on this is a good thing : you really don’t want to work for a company that recruit people based on a piece of paper they got decades ago.
Interviewing sucks, but it's mainly because the people doing it are poorly trained, at least in my experience.
I wish my degree and experience would speak for itself. But in reality it seems like exactly that... the degree doesn't matter.
Edit: Last time I mentioned it I got hammered by people in HN essentially telling me I must not be good enough. But having done a lot of interviews on the interviewer side, I can say pretty certainly that Leetcode skill is not directly correlated with Software Engineering skills.
I've personally never really applied those competitive programming skills in my 10+ years career (outside of interviewing...) Those who have done so are probably in the minority (and I suspect, probably over-engineered the solution a bit).
Maybe they could improve if they were aware of the problems, right? No... and even if it was possible to change them, that is not my job. I'd rather hire someone else.
(Not giving away what I look for because I don't want people devising deceitful techniques to get through the screening. If you know, you know.)
I also discovered competitive coding via the International Olympiad in Informatics (also a school thing, pre-college), and the kinds of problems in those turn out to be almost identical in form to today's style of coding interview. I only had to learn recursion and I could start hacking away at problems.
Fancy techniques like "dynamic programming" are normally amenable to memoized (i.e. cached) recursion implementations, but in practice most interview problems aren't even that hard.
Now, I went to college, but it was a mixed degree with business and it didn't teach things like hash table implementation, let alone pointers. Algo analysis material was weak. I was the best student only because I knew it already. The degree is mostly useful for visa qualification. I also got very good at pool.
Given my non-traditional background and keen awareness of my blind-spots, I really struggle with impostor syndrome. I also fear the interview process because I don’t want to look stupid and come to realize my past success was driven by chance rather than smarts. I also know how much of a grind the entire process can be and how it seems like many interviewers are more interested in making themselves look smart rather than honestly assess a candidate.
All of these things are probably more of a function of projection and insecurity rather than reality, but they all feel real to me.
Was the industry really "almost entirely" autodidacts 10 years ago? Were CS graduates "nerds" in a way that autodidacts weren't?
It's still very possible to get into tech without a traditional CS education, and it's not clear why it seems hopeless to you to compete against someone with a degree -- ACAICT most interviewers don't even look at candidates' resumes.
I can also tell you that for someone with 10 years of experience, I don't look for a degree at all when I hire. Sure, I will read your whole CV and will see whether or not you have a formal degree, but I won't throw out your CV just because I don't see a computer science degree. Whether you have a degree or not, I will check whether you know how to code, talk about software, design a system etc.
Reading the responses to this thread, it seems clear most of this is a lack of social skills rather than any change in the industry.
If anything, I'd actually argue that there are more non-traditional routes to working as a software dev today.
I assume your worries come from the leetcode trend in interviews.
Personally, I let recruiters that are knocking down my door via LinkedIn or email my expectations up front. Salary & no leetcode (algorithmic problems), I have found a lot of success. There are many companies willing to give sane interviews with real world SWE problems.
Experience is highly valued in this field. Someone with 10 YOE isn't really competing with someone with 5 YOE. If you talk to anyone involved in hiring nowadays it's extremely difficult to find experienced devs. Experience will always trump education.
Sadly though I did meet a lot of students in my CS program who were in it for money and openly admitted they hate programming, logic, etc and cannot wait until they get a job and then move into management.
Most students didn't like programming, but knew that there was money to be made in computer technology (we started in 1999, the internet was booming before the 2000 bubble burst).
He took it the right way. :-)
Second, interview is a number game, though it's against you (..r time). Send as many applications (even though you barely or almost meet the requirements) and have as many interview as you can.
After getting rejected for years, I have decided to stop from even trying.
It has cost me a lot of pain, physical and psychological, not to mention the emotional damage.
You know, panic attacks, stomach ulcer, colitis...the whole package!
I have been telling this for years, but people think I lost my mind :/
I'm fortunate enough that more and more friends that are around my age (40+) or even younger have noticed the same thing and don't know what to do.
I have no idea how to interview anymore; whatever I say it's either wrong or not enough.
...I could go on and on and on and on, but this is your "Ask HN", not mine LOL!Feel free to check my submissions and my comments on related topics and you will find you are not alone in this.
Virtual hugs my friend, we are together in this.
Update: I forgot to mention that I have a CS diploma which is basically worthless...trust me, the toilet paper you use has higher value than my degree, HA!
That's what lands me jobs.
no tech degree. just a couple classes in statistcs & databases under my belt. other than that, self-taught via online resources (videos, ebooks, forums, chatrooms)
I was so frustrated by the ridiculousness that I just immediately signed off and left the meetup group and discord.
An HR called me after a 1 and a half years I originally applied for a C++ position at a FinTech company to ask me whether I'm still interested in it.
I replied "of course I am!" and she asked me to send her my resume, updated.
As soon as she received it, she immediately replied back "but here says you are an Assistant Systems Administrator; how about to arrange you another position that is closer to what you are currently doing?".
I was like "WOMAN! Read the darn line after what you read that says 'Teaching assistant (C++) during office hours', I have the necessary experience! Are you playing with me now, why did you even call me in the first place?!".
I nearly exploded from my nerves and she didn't like it.
She started shouting at me and closed the phone.
I checked her name online; lo and behold, the very first result Google returned was her (age 23) thanking an Anger Management Center for talking courses how to handle her wrath(!) with annoying customers.
I was speechless! You let a young, fresh graduate without previous experience to handle the most difficult department of your work...at a freaking FinTech company that deals with billions of dollars at a global scale?
Things have gone very wrong at so many levels...GLOBALLY!
Why? Why not just calmly explain the situation? Why let your emotion get the best of you?
I saw you disregard someone else's advice as well earlier, I think you're forgetting that you have to mould yourself around what the market wants not the other way around.
Even though the person is asking for them to apply they are probably asking a lot of people so are going to scan your resume looking for keywords and alignment to a role
I know I did not handle it properly, but since you were not in my shoes at the time of the incident, you should not condemn me nor judge me for my reaction.
There's a whole theme behind the scenes with this particular HR that led to this unfortunate reaction; still though, I appreciate your sincerity and I am thankful for that.
Let me remind you: > An HR called me after a 1 and a half years I originally applied for a C++ position at a FinTech company to ask me whether I'm still interested in it.
She literally ghosted me for 1.5 years while I was sending emails for months without response; even my calls were ignored, so I decided to stop trying...and then she decided to check her Discard email folder to look for possible candidates and when she read my updated resume, she went "oh, you are not a good fit"!
Then why did you even call?! Could not you just send me an email and ask me for an updated resume so you can check whether I'm suited or not for your company's needs?
I honestly don't understand you people, seriously.
I'm not sure why you'd say "you people"; I'm not in HR, I'm purely technical, and I find many HR folks to be incredibly frustrating and even infuriating at times. But I do not express that to them. Rather, I have, but only through a mediator, after I've cooled off, to help ensure that I wouldn't say something regrettable. As frustrating as they can be, if you yell at the HR person helping my team find a new member, bzzzt, next.
Who cares if LinkedIn wants to spam you? The only purpose of it is to help me look attractive to potential employees, so I keep it up to date but don't pay any attention to it. I turned off all email notifications and they don't email me, but if they did I'd just set up a filter. I get hundreds of recruiters spamming me, but that's just what recruiters do. I ignore them and get on with my life.
Interviewing is a skill, and it's something you can learn, so focus on that. Apply for jobs that you don't even care about just for the interview experience, maybe you'll get an offer and decide to take it :-) Skip FAANG or whatever requires you do 7 technical interviews where you reverse red black trees of doubly linked lists, go for smaller companies where the interview is typically just a few informal chats.
I am a very difficult person; I am diagnosed as HSP and have characteristics of autism.
> If you gave me that impression in an interview I'd probably pass on you too, no matter how great your technical skills are. The most important skill for me is how you can work in a team (what education you have isn't at all important).
That's good to know; that helps me clarify a few things in my mind and I should try to find jobs that I could work solo, if possible.
> I'm not Google or Facebook, but there's a million people like me When I ask you to tell me about your experience, I understand that you can't tell me all the details, but even with an NDA you can tell me roughly what you did.
I give them enough information to get a rough idea of what I have done, but cannot show them the whole project nor the names of the companies; but I do let them know what type of architecture I have designed and implemented for each project.
> Maybe if you worked on a secret project for Apple that hasn't yet launched it would be different - but if you gave that as an answer I'd understand and move onto other questions. If you just said "it's under NDA" I'd assume you are trying to hide something.
I have explained above how I handle it.
> Who cares if LinkedIn wants to spam you? The only purpose of it is to help me look attractive to potential employees, so I keep it up to date but don't pay any attention to it. I turned off all email notifications and they don't email me, but if they did I'd just set up a filter. I get hundreds of recruiters spamming me, but that's just what recruiters do. I ignore them and get on with my life.
Not all people like such thing nor can I handle social media; it affects me emotionally and causes me symptoms of severe sadness to the initial state of depression.
I had to look for my mental health to stay safe. It's not a comfortable feeling seeing countless people being "successful" with how many certifications, masters, and PhDs; it made me feel the last person on earth, like a complete worthless human being.
That's why I had to close it down.
> Interviewing is a skill, and it's something you can learn, so focus on that.
I have tried for 2 decades now. I fail miserably with interviews.
The way I function is first knowing the person I'm about to talk to so I can be stress-free. I know, such thing cannot work with an interview process, but what can I do? It's not something I can change forever...that's how I have been my whole life!
> Apply for jobs that you don't even care about just for the interview experience, maybe you'll get an offer and decide to take it :-) Skip FAANG or whatever requires you do 7 technical interviews where you reverse red black trees of doubly linked lists, go for smaller companies where the interview is typically just a few informal chats.
Currently the market is limited where I live and they have high demands and expectations.
I wish I had more professional experience, but I don't I'm afraid.
Spam back. Recruiters contact me-- that's 95% of the reason I am on LinkedIn: So potential employers can find me.
Now I've had Amazon, Meta, and Google contact me. Amazon I worked with as a consultant so I was in their system. a Meta recruiter found me on LinkedIn. and I applied to Google and a few months later they reached out.
In call cases, they've viewed my Web portfolio, Github profile, and LinkedIn page.
This is "Marketing".
It's one thing to have "Skills". But if no one knows you have skills, then you must market yourself in order to use the skills in the course of working for others.
Skills + Marketing => Get job => Be productive => Build career & Make money
But you can't do it efficiently without both Building Your Skills and Marketing Yourself.
** Regarding Recruiters on LinkedIn: I simply use a text expansion tool like Espanso ( https://espanso.org/ ) to paste a message to them, usually something like this (Note: this is a "strategy" just like marketing. For any problem/challenge, develop a strategy to tackle it.):
Thanks for contacting me! Unfortunately since I am contacted by <insert some number here> recruiters per week it is not feasible to meet with them all.
Before we meet, could you please tell me:
-> Who is the company? (optional)
-> Is the role 100% remote & am I permitted to live outside the USA?
-> What is the salary range?
-> Is the role for a Full Stack Javascript (NodeJS, ReactJS, AWS --> my areas of expertise (Learning React-Native currently))?
-> What steps does the interview process involve-- How many steps, What is involved in each step?
-> Do you have a full job description you could send?
Here's my resume.
Thanks, MyName -- https://www.MyWebsite.com/ https://www.github.com/MyProfile/ https://www.gitlab.com/MyProfile/ https://www.linkedin.com/in/MyProfile/
Consider it like dating. It doesn't matter what you say as much as it matters whether or not you're compatible.
I’m pretty tired of getting laughed at and the rampant dishonesty.
They passed. They were kind enough to offer feedback. They said they liked my responses and felt I had the right skill set, but I didn't sound confident enough. Which is just... how am I supposed to feel, in an interview deliberately designed to be challenging, going up against the top minds in their field? Am I supposed to wear a douchey, smarmy grin throughout this process and act like this whole deal ain't no thing? Maybe I really wasn't smart enough for the job because they're looking for someone with the smarts and background to solve their problems without breaking a sweat.
Again, if you are not the exact perfect cinnamon roll of a candidate the company is looking for, do not expect to be hired.
I advise my direct reports and people new to work that you should seriously interview every six months.
As a manager, the one-to-ones we have when my people are interviewing are much more goal oriented and concrete, and give me actionable information to help them get more out of their career.
That typically helps them, our team and our shared mission. Sometimes it leads to departures, but they and I are conscious about why - we can’t always give them the work or the opportunities that they are seeking. Sometimes it’s remuneration; it’s either a useful datapoint which can be matched and used for salary adjustments through our org, or a unicorn offer which we can’t match in cash, but which offers a discussion about growth and maybe their own priorities.
In nearly all cases it’s just a huge win.
People do leave for pure pay concerns, but it’s not that simple for many.
Also: this strategy might not work so well in places where future financial security isn’t so assured, as where I am. Thinking about the USA or some developing countries where I grew up - piling up capital is so critical to survive surprises ranging from illness to state failure, so ymmv.
I changed my nutrition, plus some other bad habits which reduced its intense; now I am way better than past times.
Same. Anytime someone says the market is hot, I get irrationally angry.
It's probably hot for kids in their 20s with ex FAANG experience. Not so much for the rest of us.
I can't imagine if my peers that's less fortunate or less passionate with programming to be able to pass.
What industry / YoE / skillset combination do you have? Seems like full stack engineers are writing their checks these days.
I have applied to hundreds of places, grinded leetcode, studied advanced system design, and am near giving up. Becoming a famous actor is probably easier than this.
There’s a lot more humourless bureaucracy than there is else it seems. It just gets packaged up in the popular mode.
It’s kind of like the Vogon with slightly savvier marketing teams and a Patagonia jacket.
I did struggle initially with the "coding challenge" nonsense used as a candidate filter these days, then realized I'd never paid attention to data structures and algorithms (which is covered heavily in computer science degree), so I spent time learning this and I was fine. I still wish these would go away.
TLDR: Don't worry about competition. Worry about yourself.
I have only seen one instance of a software engineer not being hired because they lacked a degree, and the three or four of us in the org who also did not have degrees were pretty upset at a certain idiot manager. I wish I'd kept track of that candidate, because they were on fire and going places.
Often the first few layers of interview are the most difficult, then it eases up as you get to just talk to real human beings.
Having someone help you play the game to get to the next step could be helpful.
(None of this is to say I condone the asinine hiring paths so many companies have adopted.)
Sure, you can't prove that finding subcycles in a directed-graph is an NP-Hard problem on a whiteboard, or implement a linked-list or invert a binary tree by hand: But what you have is hard-earned common sense and a meaningful understanding of how software evolves over time. This is valuable to any company and many have identified that they are in desperate need of it.
I'm sure you realised after the fact this was absolutely trivial and you could have finished that in a few minutes. Also, what changed that you passed the next interview? What didn't you also (I assume) freeze in that one?
Speaking as a programmer, knowledge and trivia of "hard-earned common sense and a meaningful understanding of how software evolves over time" is not useful to the actual building of software at all.
"Show up on time" is not just for Hollywood.
Accidentally quadratic is such a thing there's a blog[1], and it's regularly the source of problems of a certain blogger who debugs problems in Windows that are usually causing his "stupidly fast" hardware to run bog slow[2].
Just this week, I hit what seems to be an accidentally-quadratic bug in macOS's tail — tail! I'm not even sure how you write an accidental O(n²) in implementing tail, but yet macOS tail takes 7 minutes to process a log file on my system that GNU tail can process in 80 milliseconds.
Regex regularly lead to oops-O(n²) due to devs not grokking the greedy nature of the star character, and for a while last year it felt like every week some NPM package was getting a security vuln. for a DoS vuln. due to quadratic regexes.
Understanding how B-Trees work — and more importantly, when they don't — in database queries is a perennial source of bugs in every company I've worked at where queries get written that won't hit an index, and don't get noticed until they're hitting production levels of rows. Dev confusion entails — "but the index has the columns I'm querying!" … yes, but that's not how a B-Tree works.
And it's not just the order-notation. I've seen, numerous times, people re-discover topological sort, or worse, hack a solution onto a problem where the problem is a DAG, and the solution is topo-sort, but instead you get something that isn't topo-sort, and just performs worse. Gitlab's CI failed to model CI jobs as a DAG[3], and as a result, will not launch jobs in some cases that can be run when they can be run.
> Sprints
Yeah, these destroy dev's souls.
[1]: https://accidentallyquadratic.tumblr.com/
[2]: https://randomascii.wordpress.com/
[3]: I hear it has been fixed, but I've since left it so I've not had an opportunity. Regardless, the point is that the solution was obvious … if you know the theory. Or even contemporaries, like Make.
If you're curious you might be able to find out why for yourself: https://github.com/apple-oss-distributions/text_cmds/tree/te...
It's presumably based on an old freebsd (circa v3 or v4) version of tail.
(it's possibly you may already know this is out there, but it used to be a lot harder to find macos-related source code and they only recently put it all up on github so just in case)
This is just not true. Growth rates matter a ton and there is no way around that. A better conclusion to draw from your point about hardware would be that algorithmic performance is the only performance worth optimizing for, which is more accurate, but still not the case.
Also it's not as if software is just getting faster, it's getting slower, so something else has gone wrong.
Javascript, electron, developers don't know how CPU works, developers don't know how to manage memory so that it's optimized for CPU prefetching, abstractions and libraries out the ass that make it impossible to reason about performance. Modern software is an absolute mad house, and developers think they can get away with it because computers will always get faster. Computers are very very fast, the problem is that software is written such that it doesn't take advantage of it...and I'm not even talking about multithreading.
Plenty of basic computer science problems are not well understood by a lot of devs out there. One of my current projects has a daily data import process from each customer. Some of the states were taking well over 2 hours to import with a good CPU, lots of memory & fast SSD. A bad data import or a mistake could cost the company a decent chunk of money & upset their state customers. Plus we would have to re-import which meant another 2 hour wait.
The prior code was modifying the string every field instead of using pointers when importing the data. That took a 2 hour plus import down to under 1 minute. There was also encryption being done on certain fields. Re-using some keys instead of generating them for no valid reason every line ended up bringing the import down to 10 seconds.
I wish I had software issues, at least they would be interesting.
I'm exaggerating a bit, but this is the life at an enterprise company for many devs.
10 years is a lifetime in the tech industry.
>> The thought of competing against someone credentialed with 5 years experience vs. myself with 10 years and no degree, feels hopeless.
This is a vague comparison. Someone with 5 years of stack-specific experience vs. someone with 10 years of general experience?
Personally, I am very bad at interviewing. I need lots of practice before any interview. Don't be afraid to ask others for help for interviewing prep.
if you learned it for the joy and have 10 years work experience on top of that you've got some massive advantages that many new graduates will lack.
I think there is a piece missing now days, I could just be an old fart that does not know what I am talking about (probably), but it's the idea of finding someone with passion, even if they are not the slickest programmer in town.
For some reason they confuse passion with puppy-love or enthusiasm and they become either sarcastic with you or lose interest immediately, they interrupt the interview, and let you go without any warning.
Nowadays you need to go through SWAT and military training to be considered a candidate to get an email reply.
To me this is a clear indication that the market is extremely saturated and something big is about to happen...there's no other logical explanation behind this madness at all levels and categories of jobs.
There is a long history of devs choosing a tech because they want to learn a new tech or expand their skills instead of the right tool for the business needs. I'm guilty of this.
At the same time, a passionate employee put on the right task & managed well is a great asset. Like everything in software, "it depends", "trade-offs"...
This was for a customer service position.
Nice
Just something to consider. I hope your job search worked out or is going well.
Its a fullstack portfolio project built for the sole purpose of me learning crud. Its not going live, theres no people side. The manager was raising concern anout my experience as a developer
The first is that there are just a lot of people out there nowadays who can convincingly talk about programming for an hour and still somehow not be able to code their way out of a paper bag. Frankly, though, this is really rarely obviously self-taught people. It's usually people who have degrees but managed to kind of skirt around doing actual work during their degree, or who have advanced degrees and it's just been too long since they did much practical coding.
At the first job I had where I was involved in hiring we started with a talking interview and then did a small coding test (which was: write a program that outputs some text of a particular format, take as long as you like, come get us when you're done or if you have questions). Eventually, we had to flip the order around because we had so many people come in who seemed really promising and then literally couldn't write a loop in a language they chose.
The second is that just selecting for passion also selects for a bunch of unrelated traits like free time, wealth, etc. There are plenty of really brilliant coders out there for whom it's just a job. As with literally any job. Many of those people don't really have the luxury of having a history that's littered with working on things they were actually excited about.
In the end, the social forces that created bell labs and the general sense that coding is a thing people do because they're passionate about were/are probably temporary, and programming is likely to become more and more "just a job" for most practitioners. And there shouldn't really be anything wrong with that.
All that said, I do think people pass up programmers with potential a lot. Everyone wants someone who can hit the ground running, but in my experience a lot more mileage is gained in the long run by hiring people who grow into their role. I think to really find these people you often have to go deeper than just looking at their passion projects. A good coding session can tell you a lot about how they think and communicate. And that's where you find people with potential to reach beyond their history.
The next day he sent me and email, in it he had every single question I had asked him verbatim (I did not see him taking notes and I do not think he recorded it) and he had every single answer perfect and then some. He said in his email he got nervous in interviews but said he is good at researching things and said he could solve any problem if I gave him a chance.
I took a risk and hired him, he was fantastic and pull my irons out of the fire. He was one of my best hires ever. So, you never know.
Also, I sort of shortened the story above, but the other intangible thing I saw others maybe would not have picked up on is when I gave all the candidates a tour around our set up, we had these Symbolics computers to do some back end AI stuff (early days stuff) and we needed a Symbolics slayer. I just saw the look in his face when he saw those things, you could tell he was truly excited about working on them. They all said they wanted to work on them of course but just how he looked at them.... I just felt like that was going to make a difference.
In today's world it would not fly if I told HR that I was choosing this guy because he looked at the computer equipment they way a dude looks at a sexy lady.
I'm pretty sure that you can imagine the sort of problem you might be setting up for the organization. If not, I'll spell it out: if you select candidates based on whether they are eye-fucking the hardware, you may just end up with a bunch of technosexuals on the payroll who aren't necessarily as good at their jobs as you hoped they would be.
On the other hand, I was once involved in hiring someone who we thought was nervous but it turned out the signs of nerves we were seeing were probably DTs. They didn't last very long for mostly unrelated reasons, though it's possible we could have done better by them as well. Still, it's sometimes hard to parse out what even looks like nerves in an interview because it's usually treated as such an adversarial process.
Mostly these days I try to focus on making it feel less adversarial when I interview, to try to get people over that nervousness and treat it more as a conversation. It's amazing how far you have to go to convince people you're not trying to trick them though, because of how many standard interview questions are (intentionally or not) trick questions.
No matter how awesome your particular hammer is, it should be set aside when you're working with screws.
IntelliJ has a good plugin for vim key bindings.
Vs code has one, but it's sufferable at best.
It's my experience that these IDE plugins are more insufferable the more power user you are. Vim is far more than asdf and :wq.
But I digress.
Even the most basic of commands, like '' or u, never do what you expect (i.e, what they should do to be consistent with vi/vim).
And the more compelling features, like q:, are simply not implemented.
That is before even addressing the more minor quibbles, like the fact that when your search wraps around the end of the file, you don't get anything in the "status bar" indicating that fact.
Really, these people should be ashamed of themselves for putting "vim" in the name of this plugin.
On the other hand, in a previous life I had tried a paid ($100) non-free plugin for Visual Studio, and it was much much better.
If the interviewer is 50 or so, or older: "Emacs... people still use that?!"
If the interviewer is under 50: "Emacs... what is that?"
Either way I'm going to get dinged for clinging to a clunky, obscure editor that's not even from this century.
So next time an interviewer asks me what my favorite editor is, I'm going to tell them VSCode, because it has the best tooling and most developers use it.
but also, emacs is pretty cool but I figure i'd mess around with elisp way more than actual programming
Bringing emacs into the 21st century with this technology is life changing. Still run it in full screen terminal mode.
My team can’t comprehend how I can ssh into a box that’s running tmux which had all my shells a full-screen eMacs instance, tons of context, history etc all waiting.
I can reboot my laptop and not loose any of that. I can ssh in with tmux and I can instantly pick up where I left off. And from any host. My laptop, work desktop, etc.
Would you ask them their favorite programming language, and if they say Perl very passionately?
Also, it often depends on the ecosystem.
This is exactly the type of person I still hire to this day. Your specific skills are less relevant than your ability to communicate, your drive and passion, and your shared interests with the team. I've rarely got a bad hire out of this method.
I finished my BSCS recently because it was paid for (GI Bill), and I kind of feel the opposite about it than you do. The amount of "shotgun" messages from recruiters from LinkedIn, etc have certainly increased, but I don't feel any closer to breaking into a dev role high enough up the food-chain to make it worth the risk of leaving my cush fringe-industry position. I have been asked internally if I'd like to help out more with dev-related things, so I guess that's a start.
I'd look first at the contacts you've amassed throughout your decade in the field. I'd be willing to bet that's where your best opportunities will come from. Good luck and stay confident!