Why is this a problem, though? Imagine hiring doctors or architects with that expectation. "The problem is that no one is truly passionate about dissecting cadavers anymore".
I think our industry got hooked on being able to hire self-taught geniuses in the early days of tech. But the profession has gotten a lot more commoditized, and we just can't continue like that. Gotta hire "normal" people and teach them what they need to know. And yeah, "normal" means people who decided to learn programming because it pays well, not because they want to design compilers in their spare time.
Which brings me to the following point: Earlier in my career, I was a medical student. All superiors were doctors, and though there were managers, no manager intervened in an operation. Also doctors selected their hardware and methods. No manager will ever come to a doctor and suggest that they do their work differently.
Now when it comes to software, everyone wants to chime in.
Software talk is free. So everyone can chime in. Your experience holds no weight. Heck an LLM can do it too.
However, I do feel that our team needs both types of people to be effective. People that have passion will try new things and explore possibilities more frequently. The "just a paycheck" folks tend to be a good moderating force to the "passion" people. They will generally bring focus and keep the end goal in perspective.
My goal is to avoid having too many of either. Too many "passion" people and you end up slowing progress because they're getting bogged down with everything they want to do. Too many "paycheck" people and the team/system starts to calcify (and usually accrues a ton of tech debt).
On the flip side, immediate green flags for me were: using linux, using keyboard shortcuts to manipulate windows / within the IDE, using an IDE other than vscode (vim/nvim or emacs are huge green flags), having custom scripts, having custom themes, or, the biggest one, self-hosting some applications. And Lo, these candidates also seem to perform the best in my experience.
Depending on the kind of work you do and your customers, this may not matter to you, but in a lot of industries, you need the diversity to be able to properly represent and empathise with your customer base, who might be from a very different social cohort than your developers. And Linux desktops, which your customers almost certainly won't be using, may also make that difficult.
People who spend a ton of time ricing their Linux desktops may be bad at setting priorities. If you expect them to continue their ricing, but not do it "on the clock", you're implicitly age-discriminating and discriminating against people with families and/or hobbies and/or "a life".
Also keep in mind that your company is likely only one of a dozen or so workplaces that these people apply to in a given month, sometimes for many months before they land a job, and they probably haven't set up their computer specifically to impress you, but rather to fit the lowest common denominator among the requirements they face from all their application processes and educational activities, and some of that will require Windows.
There is no particular reason that an expert C++ programmer also needs to know every keyboard shortcut or be an expert at the Linux command line, if those things are not actually relevant to the job you're trying to hire them for. Just because it's been common among millennial and older programmers (like most of us) to combine the two doesn't mean we should discriminate against programmers who don't fit that mold, as long as they're actually good programmers.
In fact, most likely dozens of them will be perfectly good hires for the position.
The idea that you must hire only the single best possible candidate can lead to some pretty dehumanizing treatment of applicants, when the truth is that a) there almost certainly is no "single best possible candidate", there are many people who would do a roughly equally good job there, and b) your processes are almost certainly not optimized to actually find the true single best candidate for the job, but rather the person who is best at applying and interviewing for jobs among the candidates.
All that said, for "how do you actually design a better process"...I sure as hell don't know. I'm a programmer, not an HR person or hiring manager; that's outside my skillset. But that doesn't mean I can't accurately identify glaring flaws in the current system based on my understanding of human nature.
No, it pretty much does mean that.
Until you can come up with concrete improvements and understand the potential flaws in those proposals as well, you can't usefully critique the existing system.
Can only a trained programmer tell you that it's a bug when you press the "OK" button, but your program does the "cancel" action?
Can only someone who knows exactly how to build and fix a system tell you that a specific aspect of the system is flawed?
You tell your lead, they say "I know." You ask why they haven't fixed it, and they lead you down a deep rabbit hole of fundamental, unsolved issues with event bubbling, and show you the 20 different workarounds they've tried over the years. "In the end," they say, "nobody's figured out how to not get it to sometimes fire twice."
Thus hiring. Sure it looks not right to you, but, come join us in hiring and you'll see, a better way has yet to be found. At least when I run interviews it's an actual real problem rather than a leetcode thing - I always just grab something reasonably difficult I recently did for the company and convert it to an interview problem.
Your guess that ~24/200 will be "good enough" is unfortunately wrong in my experience. In my last go, only 10/200 were able to demonstrate sufficient knowledge of the required skills to be hireable, and by that I mean fulfill the needs of the role in a way that justifies their salary, rather than be so inexperienced as to be a drain on resources rather than net gain. Of that 10, 2 were the best. Criticizing not wanting to work with the best doesn't make sense to me. Lemme put my capitalism hat on, there: we have competitors, we need to code faster than them to get clients before them. If we don't, we lose revenue and don't get another funding round, and the company dies. Also all hiring is reported back to the investors who have an expectation we get good people. Also we give equity - why wouldn't I want the best possible people on my team so that I have the highest chance of my equity paying out big?
Capitalism hat off, yup, this system is dehumanizing and not configured to deliver the greatest societal good. Alienated labor detached from the true value of the goods produced, absolutely. What can I do about that at my job? On the side I run a co-op that operates under literally the opposite principles: anyone can join, we will train you to get the skills you need to get better jobs, and no margin of the rate is siphoned away for a capitalist class.
I mean, this is fundamentally dependent on the specific position being hired for.
If the job is a mid-level C++ programmer job at an insurance company, many more of them are likely to be good fits than if it's a senior embedded systems architect job at an aerospace firm.
Everything is down to particular patterns of interaction among particular people, all acting on their own a priori motivations, with none of the reified abstractions you're referencing actually existing as causal agents.
I applaud your efforts with the co-op you're describing, and if you're able to make it work, scale up, and sustain itself in the long run, more power to you. But it's a bit strange to imply that in the more common scenario, it's somehow untoward for the people paying the upfront costs of your endeavors -- and indemnifying your risk exposure -- to expect a share of the proceeds in return.
If they come in with a Linux laptop but aren't comfortable with the command line, that's weird. If they come in with a Mac or Windows laptop and do solid work only with GUI tools, that's fine. If the job requires being able to use specific tools (command-line or GUI or whatever), then the interview should evaluate that as well.
So to me it seems most of the test was just "have you done these trivial things before" rather than test if they can program web apps.
It would be like the carpenter being forced to buy nails and docking them points for now knowing where the closest shop to buy nails in are and taking time to look that up. Of course it is better if some look it up quicker, but its not a core part of the job. Then when they drove there, you gave them a manual stick car, so the ones who were used to automatic fumbled around in the car, also bad look! So now you see carpenters who drove manual were much better, as your biases told you! That is not really the skill you should care about, it is very quick to tell him where it is.
These aren't tests if a user can si their job or knows their tools. This is a cultural purity test to see if they have the same quirks as OP. And is a terrible way to judge if someone will perform.
These days it's not difficult to buy hardware with Linux in mind, even on a budget. (And if you have two computers, I feel like budget is probably not really a problem for you.)
I wouldn't expect them to. I would expect them to have their computer set up to program. If it's not set up for programming, then, that's ok, they just won't fit in in an environment of people who really, really enjoy programming, and most likely aren't able to program at the level we expect. This theory worked out - about 10% of candidates were the kind that program regularly, for fun, or at least to build their portfolio, and of that 10% the one we ended up hiring turned out to be phenomenal.
Like I said, the people who got furthest in the interview (solved the most problems) were the ones who had computers set up to program and were comfortable in their environment. Everyone got the same email, everyone knew they'd need to clone a repo and run node, and everyone who got the email had already passed the initial screening so I'd expect them to actually start reading our emails and taking this stage of the interview process seriously, considering it was the final stage (and the only stage involving actual programming).
> you're also leaving on the table the potential that comes from diversity (a loaded term these days, but substantively still a valid point).
Diversity comes in many forms. Someone not great at programming, or not that interested in it, I'm happy to select against. Do you have a reason I shouldn't filter these folks out? We're paying someone to code at the end of the day so I'm pretty confused at all this pushback to my bias towards "interest in computers."
The other diversity markers I don't think were selected against - I have no idea what "high openness to experience" means but we had people with all sorts of different personalities and interests that we interviewed, all sorts of backgrounds, and sure all sorts of different gender expressions, national backgrounds, refugee status, race, so on.
> People who spend a ton of time ricing their Linux desktops may be bad at setting priorities. If you expect them to continue their ricing, but not do it "on the clock", you're implicitly age-discriminating and discriminating against people with families and/or hobbies and/or "a life".
Sure, and every hiring manager that puts people through a coding interview is implicitly engaging in ableism - someone with severe mental disabilities won't be able to pass the interview. Capitalism is ableist. I agree. They also had to have right to work - something I personally don't give a shit about but the State does. What am I supposed to do about it?
Anyway interest in computing and "having a life" or hobbies or a family aren't mutually exclusive. At all the companies I've worked in, I've been surrounded by super nerds with families and other hobbies, alongside interest in computing. I've known a mom that went sailing every weekend and programmed circles around me, a married individual running a pokemon selling business and a lasercutting etsy store on the side all while having the healthiest marriage I've ever seen and personally aspire to, folks that brew beer or garden or make cheese, a hella greybeard that runs DND (and ran a campaign for the office alongside two others he was running)... all of these people I mentioned far better programmers than me, far more advanced knowledge of computers than me, and I don't do even close to that much outside of computer stuff.
So, I don't know what to say other than I guess the last few companies where I worked and ran interviews at at just had really energetic people and wanted to hire more energetic people? That's something to criticize?
The only workplaces that realistically allow people to use Linux desktops are academia and top-5%-sexiness-factor startups. The other 95% of us have to use what our boss tells us to use (and he got told by the insurance company that scammed him into cybersecurity insurance). Those of us who have families, don't spend our leisure time staring into yet another desktop computer that isn't our work machine, so how, on earth, would we be using Linux desktops?
Conversely: Imagine someone has spent an 8-hour-workday setting up their tiling window manager, so they can “improve their productivity” because now they don't need to spend 2 minutes painting all their windows into the right positions in the morning. That's an investment of time that takes (8*60)/2 = 240 days, so roughly one work-year, to amortize. What does that tell you about the time management skills of that person?
I don't say that to knock tiling window managers: If you're into it, be my guest. It's perfectly fine for reasonable people to reasonably disagree on those kinds of subjective preferences. That's what subjectivity is all about. And that's why it's valuable to hire a diverse range of people who have different viewpoints on these kinds of things.
EDIT: ...and that's what I mean by "diversity": To include both family-people and people without families. Young and old. People with an academic background and people without one. Vi-people and emacs-people. Please don't strawman me by bringing up disabled people and work permits and whatnot.
Well, I don't know what to tell you, you've just described my entire team, same as my previous company that had a bunch of linux/unix dweebs, so the fact that we're all really into computers hasn't hindered us from this diversity.
All my jobs have let me choose my OS, all my jobs were full of people exactly as you describe, they just all happened to be really into computers. How the family folks found time for it is a question I still ask myself to this day when I compare my knowledge to theirs, but regardless, it wasn't a hindrance.
So I maintain my confusion around selecting for this. It's just not my experience that it prevents me working with family folks, or old folks, bootcamp kids and phD ML people.
So, ok, we've come this far: How do you run interviews? What's the alternative to the way I've seen?
This is super ironic and shows your "us" in "the rest of us" is a tiny, marginal group, maybe "Silicon Valley programmers" or something. In most small software companies they couldn't care less what you use, the only thing they look at is perceived "speed". You could install Red Star OS and get a few pats on the back if you're closing the highest number of Jira tickets.
Hell, nowadays more and more are full remote and the devs do their work on their personal device. Or they do BYOD. Work devices are a cost center.
It's the opposite, the only places that force a particular OS are the top companies for whom compliance, fleet management and such are priorities.
All it takes for BYOD to become difficult is having to handle personally identifiable information under the rules of the GDPR, or having some kind of professional indemnity insurance with cybersecurity provisions, perhaps having quality management certification, being in certain highly-regulated professions like law or medicine, being in the public sector, working government contracts, etc. etc. (the list goes on and on) -- I'm just finding it hard to believe that this list doesn't capture most companies.
But then again, maybe, I am a member of an out-of-touch elite.
Are you sure about that? I have a strong suspicion that there may be a measurable correlation between using IDEs and other tools that aren't currently trendy/overhyped and having a stronger-than-average foundation of experience.
Given that VSCode is the big, trendy IDE at the moment, doesn't using a different one indicate that a developer has, at minimum, invested some thought and effort into considering alternatives and making a conscious choice?
You mean the people you're not prejudiced against for their choice of laptop OS tend to perform better in your eyes? Interesting.
The interview was implementing in live coding a prepared frontend stack. The email sent out indicated explicitly the task, that they'd be expected to share their screen and clone a repo off github, run `npm` commands, and then pair program. So those that weren't prepared for this, fussing around with ssh keys not set up or node not installed, or not knowing how to use bash or git, yeah it counted against them.
Remembers me of a fellow student who refused to maximize his editor window. It turned out that he moved the text cursor to the next line with the right indentation by using just a lot of spaces.
Unless it's a very well-known big tech, I'm not sure I'd feel comfortable running any externally provided code during the interview. For all I know, it's RCE with potential to steal cookies and/or crypto.
So for you, how should a company determine from 200 applicants, which one will be able to do the job best? Or at least some approximation to get down to the 5 most likely to do the job best?
I’m less passionate about windows and have met some absolute wizards who use it, but in general it’s a negative indicator.
Nobody was rejected because they used windows. It just so happens that none of the windows folks got past problem 1 of 3 (as in, they ran out of time without solving).
Edit: I'm remembering now, one of the windows folks did get to the end of the interview, and they were the first person I recommended actually, so it's not like it was a deciding factor, just something that I'd see and go "hm" about.
Now I use VSCode because it's there, and it works. (With vim bindings, though. I'm not going back on that.)
I like to live in the terminal, but I still sometimes do that. There are multiple clipboards, so using the mouse might sometimes do something different and sometimes I'm just tired and want to use my hands in a different position. And if I selected with the mouse its not much more effort than stopping the selection. You press down left for the selection, move for selection, at the end roll the finger over to the right mouse button without lifting, continue moving so the pointer goes over the rollover and lift the finger again once the pointer is over the copy action. This is the same amount of finger lift than just stopping the selection. Then pressing one or two keys on the keyboard are two finger movements more.
I am sometimes forced to do this because with markdown, Ctrl+Shift+V will render the markdown instead. I almost never use Ctrl+V because it will append paste instead of replace paste.
I used to ask harder problems, like you, but found two failure modes: either smart people who panic and can't think straight in an interview, or people who can do high level thinking but then can't swap two variables in actual code.
That said, thinking back on my recent hires, I'm not sure this method has yielded any improvements.
I've been involved in hiring panels across several companies with very different interview strategies. Before going into this I leaned heavily toward your style: Easy questions that act as a simple filter for people who can't program.
Looking back, I have to admit the simple question approach wasn't as good as I thought it would be. The companies who gave more difficult questions and pushed candidates toward harder and harder interview problems with the expectation that they would hit a wall at some point really did sort candidates better. I know there's a widespread belief that difficult interview questions are prone to too many false negatives due to anxiety in interviews and people who freeze up. However, when we tried interview do-overs or alternate take-home problems as a fallback for these candidates we didn't really see any improvement. I can think of a few candidates who we talked ourselves into giving a pass because we assumed interview anxiety was obscuring some real skill, but we got it wrong in both cases.
I still don't know the correct answer, but these days I'm leaning more toward the interview formats where the questions get hard enough that the candidate is really challenged as opposed to the simple ones like FizzBuzz where it's just a quick filter. Note that I've worked in domains where algorithmic problem solving is something we actually do, so finding interview problems that match problems we've actually solved in production is possible, not just rote LeetCode stuff.
I stumbled across a thread in r/cscareerquestions or maybe r/cscareers a while ago where several people argued that fizzbuzz was too hard because: "no-one is using the modulus operator in day to day work, so it's not something one should be expected to remember."
I found it very funny and draining at the same time.
It didn’t change anything.
I'd still expect a programmer to know it but that should be tempered by the fact there will be parts of the technology stack you are intimately familiar with that another person might barely use and vice versa.
(I also prefer easy-to-solve challenges. And usually bring up more complex topics during problem solving to assess candidates)
Then as it gets harder the interviewee is familiar with it, and I find that often people with less CS experience are still able to work through it even though they don't know the terminology. And we have a grading based on how much hinting we needed to give, which is very helpful guidance to me as an interviewer.
The problem I usually pose is a slimmed down version of one I actually tackled, so it doesn't feel like an arbitrary test that has no real application. Which again, very helpful for when I need to write a rejection email, as I can say where the candidate didn't meet expectations, which often seems appreciated. We're encouraged to reject during the interview if it's obviously not going well, which I've done but I do find very hard.
I usually tell them upfront that I’m not looking for the correct answer and that I just want to see how they break the problem down. I also try to reiterate that it’s okay to fail (at least at my employer) and that’s the point of having a team.
Usually, that calms them down enough to get the interview going. If they don’t calm down, I’ll try to simplify the problem or give them small ideas.
We’ve also resorted to having a follow up interview with the candidate if we get the sense that they were overly nervous. I have a couple teammates that are very good at getting people to relax and we’ve had a good amount of success with letting them lead the follow up (instead of myself since I know I can come across fairly cold).
I started browsing spaces like /r/cscareerquestions and joined a few Discords to get a sense for what young devs are being exposed to these days. It's all very toxic and cynical.
I've noticed an inverse correlation between how much someone is immersed in Reddit, Twitter, and Discords and how well they function in a business environment. The Reddit toxicity seems to taint young people into thinking that their employer is their enemy and that they have to approach the workplace like they're going into battle with evil managers. I've had some success getting people to chill out and drop the Reddit vibes, but some young people are so hopelessly immersed in the alternate reality that they see in social media that it's hard to shake them free.
Is this not true to a first approximation though? I mean you do have to "hide your power level" in some way, but the fact that the employer isn't your friend or family is a good working model to keep in the back of your mind. It's a prisoner's dilemma type situation, and defect/defect seems to be the equilibrium we've converged at.
Senior leadership sincerely believes that they are a force for good even when they are doing things to harm their workers, their customers, or society at large. It's human nature to feel that way, and to contradict that is to offend them and risk getting labeled as "hopelessly immersed in Reddit toxicity".
And the easiest way to keep up the act is to fool yourself, because most of us aren't good at faking it. Find the best in senior leadership and emphasize it to yourself; find win-win opportunities (or make them!). Maybe it's even true that the company is a force for good! (I genuinely believe this about all my past employers in varying amounts, but I've been choosy and have made sacrifices.)
But be stern about never putting yourself in a position where you can be taken advantage of, because senior leadership, being weak humans like all of us, will succumb to temptation.
This is germane because while labor and capital may perceive each other as the “enemy” and may in fact act counter to each other’s interests, nearly everyone perceives their own actions as justified.
To the extent that there is “social programming” involved which could conceivably change (unlike “human nature”), it has to do with the acts themselves, not the strong impulse to believe that your own acts are justified.
The better way is to work for a company that doesn't suck.
I can understand what you are suggesting, but the balancing act of assuming they are acting for the best and also ensuring you do not let yourself get taken advantage of is very difficult.
"lie through your teeth 8 hours a day to people you see at least 5 days a week"
That guy was absolutely immersed in internet culture, making him less self-aware and very unpleasant to work with.
I sometimes wish companies were more open to accepting these roles, instead of the up or out model.
There is in many teams a lot of busywork that for various reasons can't be automated (or new incoming busywork that takes over when the older one gets automated).
If an employee is content with just handling this kind of lower level busywork and go home at 4:30pm in exchange of not pursuing raises and promotions, there's nothing wrong with that. That work still needs to get done, so rather than getting a never ending stream of junior new hires constantly having to get trained, I'd be fine with having someone who is happy to stay at that level and take it easy.
But companies live or die by talent / passion density. If you try to only hire talented / passionate people, then many of them will still just be fit for grunt work so grunt work still gets done. If you on the other hand hire for grunt work you wont find much talent at all so company fails after a while.
smashing these two together and pretending they are the same has been a huge source of cognitive dissonance in the industry and serves no one.
As bad as big non-tech companies are at things I quite often see they are better at providing fixes and updates for the little hidden pieces in the background because they have people that aren't fighting their way up the ladder.
Some people simply show up at work solely to put food on the table, doing the minimum amount of work so as not to get fired.
In many countries being a developer is a plain office job just like everything else, and everyone that doesn't want to move into management after reaching seniority is seen as a failure.
The flip side is the terror of an entrepreneur seeing their enterprise struggle.
Go into business yourself for a bit and see the world from an entirely different angle. If you don't make it and come back to employment (most likely) you will be a much humbled and more enlightened person.
The number of absolutely toxic business owners is insane.
I’ve worked for multiple small businesses, led by wonderful humans, which ran out of money. When those businesses went under, it tore their leaders apart to let workers go — but those leaders were still constrained in how the could act by economic realities.
There are both leaders and workers who are too cynical about each other. But it makes sense to be guarded with every company, even if I think it’s debatable how best to act — and how we might dream of improving matters at the macroeconomic level.
But there are some real bad employees too that don't understand how the world works.
Maybe the toxic business owners should work in the coal mines for a bit?
The solution is rewarding people when a company is successful and more importantly not punishing hard workers. Right now people are under the impression that slacking and working hard will be equally rewarded, because that is the truth. Hard workers also get laid off so that CEOs can make a few extra bucks.
The problematic juniors show up to their jobs determined to be uncooperative, sow discontent among coworkers, stonewall progress in meetings, and think they’re just going to job-hop to the next company before the performance management catches up to them. They see the jobs or even the concept of working to live in general as a scam and feel like they’re winning some deep cultural war if they collect paychecks while making life difficult for their manager.
Another large cohort is paid pretty well with salaries from 110k-150k by that same point who have effectively no negotiation power and are given “take it or leave it” deals with the only leverage being to find another job
And even for the incredibly well paid ones, as the other commentator noted, there’s documented proof of organized wage suppression by the corporations
A grocery store I worked at tracked finances and they were available to all employees. The grocery store made $270 per worker per hour. New hires were paid less than 1/10 of the value they provided.
I can only imagine how much more exploitative tech is
The results will surprise you.
“I have altered the deal, pray I don’t alter it further” has been the majority of my career and my peers. Very few people(as a percentage of population) actually have had enough leverage at any point to not have to eat shit if their company says so.
At this point it’s in the corporations court. If you have managed to generate a relationship with your labor force where they are no longer lying flat, but actively trying to cause sabotage like you described then I think you(the companies in question, not you in particular) share some of the onus on how we got here
Edit: and to be clear I’ve been working in tech for over a decade, this is not a perspective from a new grad with only the internet as their source of information. The younger generation has seen their older siblings and cousins getting fucked over more and more each year and we’re reaching the point of societal unrest where a large group of people no longer think the “deal” society is offering them is worth it
Yeah capitalism is sad in a lot of ways - particular the modes of possible value. But we are actually talking about working in hierarchical management organizations which have existed forever and have nothing to do exclusively with capitalism.
I didn't get laid off 3 times because I have a bad attitude. I got laid off because:
1) it was cheaper for the company to move the software department over seas
2) The business got sold to Amazon and as part of that process they had to downsize
3) Company collapsed due to leadership failure
I had a good attitude until I saw how disposable I was to these companies. You're an asset until you aren't.
Product finished? downsizing. Financial crisis that doesn't effect our industry? downsizing. Company about to IPO? downsizing.
Companies have no loyalty, you shouldn't either.
If the work runs out, find another job. Nothing wrong with that.
It's not a self-fulfilling prophecy like claimed above.
You can't complain about people becoming cynical when right now you can see all the tech giants investing ridiculous sums in order to eliminate staff from their payroll.
Second, I seriously doubt juniors ability to "sow discontent" among more experienced seniors. They can latch on existing discontent, but juniors are too low on hierarchy and seniors have too much of opinions for juniors to have much power there.
Eventually they were removed from the team. It should have been sooner, but the manager is very empathetic and supportive of his team. Morale immediately shot up and things are much better now, as well as more productive.
Not every workplace is a dog-eat-dog hellscape. In fact, I’d say they’re the minority. But you do reap what you sow: if you’re determined to see it as a zero-sum game and go looking for conflict, you’ll find it.
Software developers are relatively highly paid. When they start acting like they’re minimum wage workers flipping burgers at a dead-end job, they’re missing the big picture. That’s the problem I’m trying to communicate.
The management culture, anti software/nerd mindset among the population and eastern European competition in the offshoring market have a much bigger impact.
E.g. even though Germany is practicing mercantilist beggar thy neighbour export surplus policies, the country has failed to become an exporter of software or be known for quality software. Anyone who wants to work in the software industry is better off leaving the Eurozone and going to Switzerland where they get paid more in addition to the things you claim are the cause.
> Is this not true to a first approximation though?
No, not at all. The company wants the employee to do well so that the team does well and the company overall does well. If the company was "the enemy", they company would be wishing for the employee to fail, which is not why they spent a lot of time and money to hire you in the first place.
Now, of course the company isn't your friend (or family) either. The employer doesn't exist in the friend-enemy axis, they're just an employer which is a different type of relationship.
Also, who is "the company"? People in upper management and HR, i.e. those who see you as a number on a spreadsheet but don't ever interact with you personally.
But most of your interaction is with your first and second level managers who are specific people. One would certainly be well advised to cultivate a professional friendship with them. Not only will you do better, but work will be a lot more pleasant.
> Also, who is "the company"?
The company doesn't "want" anything other than to become a bigger pile of money — it's an amoral abstract construction, lacking human wetware and all its messy idiosyncrasies. I think I'd express similar sentiments in a slightly different way: the company benefits when it gets maximum value for minimum outlay over the lifetime of the employment relationship.
That model allows for companies which act in ways wildly counter to the interests of their workers. For example, the private equity firms asset-stripping Toys 'r' Us and KMart mostly "cared" that the workers at a given retail facility not quit before they could be let go.
In 2009 I worked for a really chill company with small but nice management. The owner/CEO wanted to turn it into a worker-owned co-op.
But one of my coworkers was so stuck in the "management is evil" mindset that he became hard to work with. (Although he also radicalized politically; I think he went from SNP to UKIP.)
The trap is when they see everything as a false dichotomy between friend and enemy. Enemies are something you avoid or even work against. When someone starts seeing their employer as the enemy and they don’t want to do things that help out their enemy, they trick themselves into poor performance out of spite.
Which leads to performance management and eventually firing if they don’t get a handle on it. This makes them even angrier, confirming their belief that their company is out to get them, leading to deeper spiraling into spite and poor performance.
Breaking someone out of that mentality is hard but everyone is so much happier once you’ve cracked them out of the “friend or enemy” dichotomous thinking.
Something like the analogue to the “Reddit-infused worker” archetype, where leadership is inappropriately cynical about their workers and see them as “the enemy”?
Of course. If you don’t see that, you’re missing the point.
In your world, is there such a thing as a bad employee? Or do you assume all employees are inherently good and do appropriate work for their pay and don’t need constant performance management to simply do their job?
In my posts I’m not talking about all juniors. I’m talking about a problematic subset. You seem to be assuming I’m generalizing to all of them. I am not. This is a phenomenon specific to a subset of juniors that is unfortunately a repeated pattern where they all share some very common and obvious characteristics. I’ve spent a lot of time trying to break them out of that mindset and have them join their much happier peers, but to be honest once someone is that deep into the cynical mindset it’s hard to wake them out of it.
Of course — I implied as much via the “inappropriately cynical“ characterization.
The tension between capital and labor is inescapable and ancient.
I didn’t think you were generalizing to all juniors. Rather, what caught my interest was that before this last message I perceived the perspective of capital in your words.
Yes. My employer has gone all in on the AI bandwagon. To achieve this, they lay off around 10% of the workforce every February to free up capital for whichever AI fad they wish to pursue that FY, all the while spouting the usual bullshit about being a "family".
I could make a lot more money elsewhere working 12 month fixed term contracts, with possible extensions, than I do as a "permanent" employee doing effectively the same thing.
Or to hijack Bryan Cantrill, do not make the mistake of anthropomorphizing your employer.
They are not your enemy, you are far too small for them to care.
That's completely different than being your enemy.
What you want to avoid are work environments where most workers are focused on gaming internal politics to get ahead. Those environments are soul destroying.
But that's not all work environments. And most work environments are some mix of internal politics and wanting to actually create good and useful products.
Employees (middle management and down) are explicitly structured to use salaries (to reduce costs/earnings from going to them).
Salary is generally a flat monetary incentive, and bonuses aren't big enough typically. You make more money by promotion up a rigid hierarchy: so that is the true motivation.
And that is politics.
If you have salaries, you have politics, and a downward trend towards more of them.
Engineering workers are often idealistic, which is a different set of motivations to exploit by management for monetary advantage. But idealism/creation leads to turf wars and emotional investment in "your code", which is another entire axis of politics.
This is not true at all. Far more important in upper management is ego - they will lose money to improve their legacy or beat a competitor.
> If you have salaries, you have politics, and a downward trend towards more of them
Nobody said politics do not exist.
So let’s take what you said at face value - management is paying for jobs but they are looking to cut costs, etc.
Is that arrangement something you can use to benefit your life for a season? Or an inherent war zone?
It’s just business. You have something they want, they have something you want. Try to take advantage of places where your incentives aligned and watch out when they are not.
What you’re saying is very true unfortunately and is going to be a real problem. It not only affects how you view your employers and companies but also your peers. If you’re exposed to extreme views even before you start your first job, what happens when you eventually start your first job?
You are less likely to be taken advantage of?
This is not an extreme view :/
My previous job gave us every other Friday off.
I get things done, do a good job and get nothing but positive feedback from my bosses.
You’re taking it out of context. I’m not talking about a 996 culture or regular overtime, I’m talking about ocasional extra push to make things work. Any full time salaried employee will tell you that it is completely acceptable to work extra here and there, when you are allowed to take it slow at times.
Getting paid to work is a normal expectation…
The more likely outcome is that you'll (intentionally or unconsciously) perform poorly, have a bad attitude, and always act like your employer is out to get you. Your managers will notice this and not like working with you. Eventually you'll get managed out or fired, and then your cynical opinion will be reinforced by this experience, even though it was avoidable.
I'm not saying you should think your company is your friend or your family (they're not!), and I'm not saying you should work uncompensated overtime, or buy into the whole company "mission" and "values" and stuff. But do go in with a healthy attitude, get your work done to the best of your ability, and act professionally and, sure, be friendly toward your coworkers, and develop relationships with them and your managers (professional ones, not personal ones, if that's not your thing). If your management still treats you poorly, then yes, absolutely, get out of there. But going in with a bad attitude isn't going to set anyone up for success.
I've noticed similar in most things too, but extend it to personality in general. Like the Munger quote "Show me the incentive and I'll show you the outcome,”. Show me their information source and I'll show you their attitude.
Reddit discord have that vibe, HN people have another vibe, Twitter/Instagram people have another. Any social media with feedback (like, share, upvote) have a audience capture feedback loop.
If I could, I would've probably preferred to get this information of candidate in a job interview on top of their technical knowledge. (I assume Google et al already do these screening)
There's definitely an aversion to treating real life and "the internet" separately in a certain cohort of people. But the kinda edge-y meanness gets really weird when it's applied to coworkers and the like.
That is why many countries still have a strong union culture, everyone gets exploited to the bones and they should be happy to have a job if at all.
It is quite depressing sadly, but that is what happens when many managers lack business education and see employees as replacable cogs without rights.
How did these issues manifest? And what approach worked for tackling them?
With that said, there are truths and lessons to be learned on the internet. I think it's possible to take that benefit without developing an overly negative outlook on everything.
Weirdly enough, streamers like Primeagen are actually disabusing juniors of some of these notions.
It’s the grassroots commentary sowing the seeds of discontent.
Workers can definitely forge mutually beneficial relationships with such entities but anthropomorphizing them leads to sorrow.
The company boss won't afford treating his costumers like assets, because then he won't have costumers and bringing his children to the kindergarden will become the gauntlet.
Depends on what you mean. Getting the same pay, the same pay per hour or the same pay per hour averaged over a long time? Bosses often have a higher pay, but they are also more likely to "work" at home during the family meeting or at night, without it being clocked in anywhere. That's kind of the deal with being the company. They also don't see any money in when the company is in a rougth situation. Often they also don't have a salary at all.
Yes it's possible and maybe even common to be taken advantage of in a business arrangement but that doesn't negate the concept of honer. You have agreed to provide work for a set amount of money. If the other party isn't acting honorably you can leave the arrangement but otherwise you should fulfill your part of the deal as best you can.
When most parties act honorably society does well. When the concept of honer breaks down into lying, cheating and scamming as a way of life, society will collectively not do well.
As far as I'm aware, nobody ever improved the situation of society by acting dishonorably. The Reddit complainers should try forming their own Reddit society and see how it works out.
Given how many managers are strongly steeped in the mindset that every IC is an innately lazy bastard out to scam the company out of as much money as possible for doing as little work as possible, and explicitly design their policies that way (not to mention structuring their personal conduct that way), this is probably wise.
Hopefully it can galvanize more of them to form or join unions! Labor power is a vital tool in the current age to take back some of what we have lost over the past few decades to burgeoning corporate power.
As far as the attitude toward employers, I kinda get it. A lot of these kids were sold the idea that college will mean a solid, lasting career and, pre-pandemic, a lot of companies were trying to sell themselves as a “family” and throwing cheap benefits around (ie. free food, beer, etc) only to yank most of that back during/after the pandemic.
It also doesn’t help that, inside US, it sometimes just feels like we’re trying to scam each other constantly. All of this is breeding a ton of cynicism.
Has your company actually done this?
When I was doing mentoring I heard this complaint all the time, but literally no one (juniors on first jobs in this case) could point to an instance of their employer saying it. They had all picked it up from Reddit as something the archetypical company did, and they felt obligated to punish their company for it.
Similar problem happens with take-homes: About 90% of the take-home interview problems people shared in the #interviewing channel were entirely reasonable, short, and clearly not real work. Yet many had picked up this idea that take-home problems were unfair because they were “a week of unpaid labor” or that companies were using them as a tool to extract free work from candidates. So they tried protest the concept of take-homes and stated they would refuse to do them in protest. Of course, when they actually received one for a job they wanted they would abandon that mentality and do the problem, and in many cases they preferred that to doing in-person interviews. Yet the mentality remained that take-homes were evil exploitation and they must rally against it because they read so many Reddit comments about it being “unpaid labor”.
Ive worked for plenty of companies that pretended that they cared about the human resources and not one that has ever been upfront about the fact that they will lay you off for a bump in the stock price without blinking.
>Similar problem happens with take-homes: About 90% of the take-home interview problems people shared in the #interviewing channel were entirely reasonable, short, and clearly not real work. Yet many had picked up this idea that take-home problems were unfair because they were “a week of unpaid labor”
It's largely been my experience that a lot of companies think an 8 hour take home is actually 2.
They tend to be badly constructed and full of ambiguities that require you to read the mind of the test setter.
Of course the people who set them dont know this and they never test their tests. My experience on the other side of the hiring desk is that rank amateur shit is the norm.
The "unpaid labor" thing happened to me once, I think. It was a company that wanted somebody to build an X. Take home was "build an X". Not common, doesnt happen to juniors, but it happens.
Corporate America could clean up its act or Gen Z could force itself to grin and bear it with a smile it like you seem to want. I wont hold my breath for either to happen.
You're commenting on a blog post by a B2B SaaS company that sells AI engineer stack ranking with a cute ball of yarn mascot and you're wondering why they're cynical?
That's probably due to the sample bias.
One of my favorite staff/principal engineers always begins Monday's by asking people what they did on the weekend. He always talks about the things he did - farmers market, local parade, etc.
It's shocking to many of the junior engineers. They generally do "nothing".
Even asking "how was your weekend?" -- its implied that you just say good rather than sharing details of what you actually did -- they don't really care.
Building a cohesive team involves sharing interactions like this. If you truly value your privacy, I suggest you come up with an alternative thing to discuss: sports, weather, funny stories, etc.
I've certainly had weekends where I very much did not want to share what i did, so I deflected in a way that kept the conversation going.
If HR is asking about where you were at 3:15pm on Saturday, and who you were with, and whether you were using work resources at that time, I would start to worry. But a very large and generic, "so what did you do this weekend" - where you are in the driver's seat, that's not the same thing.
When I look back at previous jobs, my strongest regrets are not building stronger interpersonal relationships with my coworkers. I've since rectified that.
Think of it this way, if you must: coworker relationships are owned by the company - personal relationships are owned by the employees. When you become friends with a coworker, you acquire an asset that will go with you when you leave the company. Much like a new skill, this asset will allow you to get higher pay somewhere else.
They aren't that wrong however. Over the last two-three years alone we've seen waves of layoffs. Layoffs from FAANGs hit the headlines, but so many more happened without hitting the news.
And the thing is young people... They adapt.
They usually don't have the cultural baggage we older people have, so they often see things for what they truly are without any rose-tinted-glasses from past better times.
Their grandparents were able to get a fairly stable job at a company, stay there until retirement and grow a family. Their grandparents were able to switch jobs IF they wanted to. On the other hand, kids nowadays know they will likely be fired at some point, irrespective of their performance, and that they need to play the game for what it is.
Can you really blame them?
Yes, the labor market has changed, and in many ways not for the better. But layoffs are not new. I remember my dad being afraid of them back when I was a teenager in the 90s. I remember him getting hit by one of them, even, and scrambling to figure out what to do (fortunately he was re-hired by the same company, in a different group). I survived layoffs in the three following decades; yes, the most recent waves were brutal, but I wouldn't say they were anything special compared to, say, ~20 years ago.
You can recognize a company for what it is (a capitalist organization that cares more about next quarter's numbers than whether or not you still have a job), but also be a positive, professional person, who goes in and does good work every day, gets along with coworkers and managers, and doesn't play games. You can be realistic without being a toxic cynic.
One one hand I agree, but on the other hand I say: it's something that comes with time and experience.
Your examples by the way all come from of way better economic times, and more abundance of jobs.
It's easy to be optimistic (naive?) when times are good. But it's not what the current kids are experiencing, far from it.
Reddit is american and trusting businesses is how we continue to fail.
Like mike tysons iconicquote, everyone has a plan until they get hit in the mouth. You may have good intentions as a managsr until theres a "market correction".
In america, this business toxicity is well deserved and will only get worse.
Sure some may take defensive employee relationships to far but acting like this posture is toxic to appropriate self care is gaslighting.
Eventually you lose all goodwill and get a saturation of ill-will related to that exploitation, debt slavery through student loans or worse. Quite a lot of business people blind themselves to the reality.
Those that drink the kool-aid are always in the next round of layoffs, after they pulled 80 hour weeks to have a project come in on time. Its not reddit fueling this, its bad business behavior at scale unfortunately.
No one can fool everyone all the time. The deceivers are always eventually found out, and then its "we can't find anyone"...
The young listen to the stories of people who have accrued a certain amount of experience who are in their 40s now, and quite a lot of those stories are not success but rather exploitation, use and abuse, oh and now all the jobs went to AI... its a trend, and its going to get real bad because the old needed the young to take over those jobs to fuel their money-printing debt spree over the past 30 years. Demographics are destiny, and you either get slave labor, or you get movements towards letting things rot when the environment reaches a certain threshold, and is disadvantaged in the fullest sense of the term.
Without significant safeguards and in the average case, the employer seeks to extract more from you than it gives back. You on the other hand, must work or you will die. This is a power dynamic that positively stimulates the growth of bad behaviour. Knowing that has nothing to do with Reddit, it is an inherent fact of this system.
Please go back to fighting over finance and consulting jobs, people. Please. I know my salary is inflated thanks to the dynamics that also bring in these people, but I really would like to avoid working for people whose choice matrix is "finance or startups".
"How would you troubleshoot x"
"I havent done that before"
"Ok, but how would you approach the problem"
"I dont know sorry"
Not understanding a hypothetical would go like this:
"How would you troubleshoot X?"
"Why, is X broken?"
"No, but imagine it was broken."
"If it's not broken why are you asking me that"
You don't need to understand the technical detail in the hypothetical, to extract search terms and research it.
The answer of "I dont know that system so I wouldnt know where to start" is failing the hypothetical. You have many starting points for all technical research. It means you cannot even imagine where to begin.
If you are so shocked by the appearance of technical term you don't understand, that you wont even take the first step of putting that term into google, you really shouldn't be applying for technical jobs.
The most common answer I get, if I fight the interviewee, and reposition it as a technical issue they do understand, is that they relay to me an anecdote from a time when they did complete the troubleshooting. IE, they still dont engage with the hypothetical, they just use recall.
It’s a question where you should preface if you don’t know, then make sure you’re game to just try.
People who answer with research/troubleshooting methodology, go on to be excellent employees.
People who dont attempt it, are generally unable to cope without handholding.
Well, if we assume that the share of the population of nerds is roughly constant-ish, then an expansion of the total number of developers would lead to nerds making up a smaller and smaller share.
Back in the olden days, you needed to be a hero who knows all the innards of your 8 bit machine just to produce a decently playable game that was more sophisticated than Tetris. These days even an idiot like me can hack something together in a high level language like Python or Rust. That's progress!
Similar to how everybody carries an awesome digital camera around with them today. The absolute number of photographers has increased dramatically. And even the absolute number of great photographers has increased dramatically, because constant practice helps.
But I'm fairly sure the skill and dedication of the average person engaging in photography has dropped equally as dramatically: that's how lower barriers to entry look like.
No one should be required to acquire a special literacy or hire an expert in a specialized literacy to use a well understood computing technique (Von Neumann and Turing).
IMO software first engineers are not much different than rent seekers. Using lexical tools based on understanding from the 1960s is hardly high tech.
For all their high minded rhetoric, SWEs are just self selecting biology driven by "FU got mine" philosophy like so many others. After 30 years in tech, it's become quite clear the majority are not much different than an ICE agent; willfully ignorant because their personal compensation banging
[1] figuring out how to store/recompute the geometry of an oscilloscope to keep it brief; too much syntax sugar involved as-is
That's one reason why I prefer "fresh out of college" for juniors - if they seem bright enough that way they only have to learn, not also forget whatever nonsense they learned somewhere else.
I’m pretty senior and I memorise a bank of leetcode solutions if I’m going for an interview that is definitely leet code. It has served me well for some interviews, and will remain my top strategy. I can still solve problems on the spot when needed, and much prefer challenging non leetcode programming problems, but that is far and few between.
I've also seen less and less passion for the career as the years go by (ie. less computer nerds).
I have such strong but mixed feelings about this.There were major downsides to the days when programmers were all computer nerds. Specifically, it made the career very off-putting to anybody who didn't fit that stereotype. Any time you do that, you miss out on a lot of potential talent.
Still, though. There were upsides. The passion level seemed higher. The climbing salaries attracted people solely attracted to... the climbing salaries.
I'm tired of being treated like a fucking Martian because I understand basic data structures and why sometimes you might want to use a tree or some other computer science 101 shit.
When I hire juniors, I try to give them problems
that I know they likely won't be able to solve in
the interview because I want to see how they think
about things.
Are you explicit about this when you pose the problems?I can see an upside to not telling them. If they try to bullshit their way through an answer because they think a definitive answer is expected, I guess that could be a useful data point. But it feels mean and unethical.
When I've done this as interviewer I've been pretty explicit. Like, "Hey, this is something we've been working our way through for months and we don't expect you to figure it out in ten minutes. But how might you approach this?"
I have fairly limited experience as an interviewer so I'm curious how others have approached this.
That wasn't it. It's just that the position wasn't so highly paid back in the day and there was way less demand, so hardly anyone was even interested.
The moment it became remotely attractive, the tech bros arrived.
People with good software skills had paths to making a lot of money from the day computers became widely available.
Look at Woz in the 70s or Microsoft or the Macintosh team. From the birth of the PC revolution there was a path to getting rich from computer skills if you were in the right place at the right time.
My aunt's career as an IT engineer started in the 80s. She went into this field because it was a new niche to explore and hardly anyone knew their way around it.
Her role was to take part in digitalisation of the bank she was working in and by "digitalisation" I mean first putting the equipment together.
The reality is there was a sweet spot - when the industry got less toxic and started attracting visible minorities, and you started getting some diversity of thought AND passion.
Then the money got too good and it started attracting the personalities that 10 years earlier would've become finance bros and caused the 2008 crash. And they fucked it all up.
It’s 10x worse with the tech bro chest thumping and the competitive toxic behaviors inside teams.
And autonomy/ownership has is now rock bottom with multidisciplinary teams. Even things made supposedly to empower devs like Agile/Scrum became tools of a managerial class that wants to decide where each pixel goes.
What does it look like in a span of an hour?
So I'd split the interview in two parts. The first bit I'd give them a set of requirements and ask them to come up with a design for it on their own. They had internet access and technical references available. It wasn't a memory test, and I'd leave the room (this probably wouldn't work well now given LLMs).
In the second part, I'd ask them to talk me through their design, and then explain we were going to change the requirements and work together on altering it to accommodate them.
The second bit was the most useful part of the interview; it's what we needed to do in the actual job, and pretty much everyone we hired in that process was good.
Even before AI, there were issues with super-polished leetcode grinders. Their entire skillset was passing FAANG interviews via memorization of correct solutions and scripted answers.
An effective technique for identifying these cases leverages the fact that you can only have a "correct" answer memorized if optimal solutions exist. Fortunately, there are many common and relatively simple problems in computer science and software design that require reasoning from first principles because globally optimal solutions can't exist even in theory. Small changes to the problem constraints lead to wildly divergent design outcomes that are effectively not enumerable. The possible solution space is so large that you can't realistically memorize it even if the problem is relatively concise and well-understood. The pure leetcode grinders never seem to have studied problems without tidy answers.
The answers don't even matter that much, I am always more interested in the demonstrated ability to recognize and reason through the implications of constraint changes when there are no correct answers. People with solid computer science skills can usually muddle their way through it, whereas many people with immaculate leetcode skills fail the most basic versions of this.
The most important skill of juniors was demonstrating that they could effectively reason about and were motivated to dive into problems they had never seen before. These were always the juniors that could be rapidly developed into strong senior engineers, which is more or less the objective when you hire juniors.
> The most important skill of juniors was demonstrating that they could effectively reason about and were motivated to dive into problems they had never seen before. These were always the juniors that could be rapidly developed into strong senior engineers, which is more or less the objective when you hire juniors.
I agree 100%.
Ahh yes, the 'pre-med'ification of CS.
If you want to leech on the crowd that likes tinkering, you shouldn't give them some shitty iOS/Android environment and call it a day. For the industry, tinkering has become a security problem, scary warning boxes about unverified code being run on a piece of metal. How horrible! It is old and stagnant and just not that interesting.
There are some alternative venues instead, but they have a focus elsewhere.
Ah, yes, the passion thing. I'm not being sarcastic, i see this as well.
I saw the shift happening in the 2010s, and I attribute this to essentially two things:
- social media and the glamourification of computer programming (and related things)
- the startup craze of the early 2010s (everybody and their dogs wanted to develop an app or start up a company, and money was flowing left and right from more-or-less clueless investors).
In a way, I'm happy that money is tight right now, deep down I hope the computer programming/science scene goes back to people driven by passion and money rather than just money.
If a junior can code vanilla JS well, they can learn React, Vue, Svelte, etc. if they can't, they will never fully understand any of them. If they can write raw CSS, that can learn Tailwind and understand how and why. If thry can explain what's happening in the browser console, they can find the entry point for most bugs.
This is pretty much how I also test seniors. Focus on the fundamentals; if those are off, nothing else matters.
I know that such places exist from reading HN but it always seems so counterproductive to join such a place as a fresh grad. As a beginner you need to be getting your hands dirty, getting some ownership and respobsibilities, making mistakes and decisions. Figuring stuff out, exploring tradeoffs and experiencing them firsthand.
It's like when a football player joins a big team before they're ready and spends a year or 2 on the bench. It completely stunts their development and they never reach their potential. When you look at those who reach the top, they were all playing nearly every match from a young age as an important member of their team.
Obviously I'm biased due to personal experience, as everyone is. And there naturally must be upsides to joining your company as a first job as well. But I'm very glad that in my first job I was writing production code and doing both brownfield as well as greenfield stuff by week 2.
If you can get up to speed in two weeks then you can be replaced that quickly as well.
Getting to know how the business works can be as valuable as CS knowledge.
Year for a junior is perfectly reasonable.
Definitely making a commit to a GIT repo or opening a PR for textual change they should be able to do in first days. But doing any bigger task on their own that needs architectural understanding of our system a year is definitely good.
These kids are merely meeting what the market demands.
Unless the company is doing something that requires almost no special domain knowledge, it's almost inevitable that it's going to take a good while for them to on-board. For us, it usually takes about year to get them to the point that they can contribute without some form of handholding. However, that also mostly holds true for seniors coming to us from other industries.