The greatest resume I've ever seen
cloudirregular.substack.com
cloudirregular.substack.com
I couldn't care less if you can invert a binary tree. One of the greatest developers I've ever worked with, I hired straight out of college. He graduated with an electrical engineering degree but his senior year he took a course in Java and liked it and decided to be a programmer. Couldn't tell me the first thing about programming but I could tell he had the chops to figure things out and that he had a passion for things getting done.
* She would culturally fit while still bringing something new to the tam * She doesn't know Web Analytics, but has done market research, built html prototypes and has basic knowledge in JS, python, html, SPSS and some other things * She is self motivated and shows this because she actually learned all these skills in her last job because she wanted to and it made her job more easy.
I strongly believe she would learn the technical ins and outs of Google Analytics or Adobe Analytics quite fast. The rest is not important.
I don't care that she has not worked with AA oder GA. If it were my decision I would have hired her on the spot.
It's also why resume screening done by HR drones or worse, AI, are so problematic. Unless I need someone to do an exact thing extremely fast, I'd much prefer a generalist with a sharp mind, proven "gets shit done" attitude and experience, and is motivated to do the right thing.
What does this mean? This is a very loaded term, and without qualitative data it results in biased hiring.
Usually, it means "she's young, white, and college educated, just like the rest of us".
People don't need to culturally fit to excel at a role.
But "cultural fit" is still necessary but must be defined carefully. If a company doesn't care about culture fit when hiring people, it will become a very bad place to work.
Questions to address when determining cultural fit:
- How does this person resolve conflict with peers? With managers?
- How does this person advocate for change in the workplace?
- Does this person share credit, and praise others?
- How does this person take responsibility when something bad happens?
- How does this person respond to something they heard but don't quite understand? Do they pretend to understand and go on, or stop and clarify at the risk of sounding unknowledgeable?
Questions that sometimes get confused for cultural fit: - Does this person watch the same television shows as me?
- Will this person understand the same cultural in-jokes as me?
- Did this person go to the same college as me?
- Did this person have a similar life journey as me (religion, or where they grew up, etc)?I think the reason it gets confused is because you're saying "cultural fit" but what you really mean is "is this person an asshole"
This. I would additionally also say, how does this person react when shown they misunderstood/misinterpreted something. How do they deal with being wrong about something.
With cultural fit I meant that she needs to fit into our diverse team. She should probably not have biases against people coming from different and diverse backgrounds.
She needs to be able to work in a collaborative team setup within our core team as well as be able to integrate into project teams with even more diverse people.
Someone who shows that they would not play well in this team sport while also being self sufficient when necessary would not be a cultural fit in our org.
I dann don't care about the color, gender, age or educational background. On the contrary I enjoy the multibackground people around me. It is inspiring.
I wouldn't call that cultural fit.
Or, just imagine that you're interviewing a hypothetically equivalent candidate who also had the same drive and "chops to figure things out", but who happened to be less fluent in conversational English. Are you so sure that you'd be able to pick up on the same underlying "signal" about their chops, if it was obscured by some language fluency noise?
Hiring is a Hard Problem, and there's a big gap between well-intentioned intuition and translating that into robust processes.
IMO, the something to be said about it is that people have a good intuition about people who remind them of their family, friends, and celebrities they admire; and a bad intuition about people who don't, and remind them of people seen as criminals or bad guys.
Obliquely related: http://www.skinema.com/evil/
That’s what intuition and judgment calls are for.
What does your intuition say is a good way to approach hiring? Does it maybe tell you to figure out relevant skills and ask the candidate about those? Yet if you ignore that voice, you end up timing how long it takes them to invert binary trees from memory instead
Everybody on earth who is good at what they do relies utterly on their carefully trained intuition
Yes, it is slightly subjective, but not unquantifiable. You have to have shown me times you've done those things, not just say them.
Of course not, OP basically hired someone he got along with, and that's fine on a small scale, but it's not something to pride oneself over.
A better approach in my opinion is if you find someone who you get along with, you think they have that kind of fire and passion you're looking for, but they don't know the basics and fundamentals of computer science nor are they familiar with data structures and algorithms, you advise them that if they want to make the most of their potential then they should take some minimal amount of time to really devote themselves to understanding those aspects and then they can reapply for the position at a later date. You can keep in touch with them, even potentially mentor them if you really think they are worth it, but you don't just give someone a pass.
Letting someone get by without that knowledge because you like them doesn't really do anyone any favors.
Yep. I've seen this so much in my company for performance review. It's completely subjective and managers dont even realize when they are discriminating or violating company policies (or laws!).
I've come to the sad conclusion that this is a fundamental tension.
Ignoring the pre-interview filtering, our industry has, on one end of the spectrum, a relatively nondiscriminatory process that assumes basically nothing and tests you on as much of the field as they can before hiring. It's nondiscriminatory in that it doesn't matter where you come from as long as you can solve the same structured problems as everyone else. This is the whiteboard interview everyone hates, and it's not all that inclusive.
On the other end of the spectrum, we have the fuzzy 'does this person seem like they could become capable quickly and work well with me' process. It's inclusive in that it doesn't require you to be able to solve those stupid problems yet, just be bright enough and hard working enough to learn. But it's not at all unbiased.
So do you go for unbiased and give people the same standardized questions, or go for inclusive and have a real conversation? I've found the best people come from the latter process, but I would say that, right? I'm biased.
That is what I am criticizing as not being helpful. If someone has the chops and passion for a job, they have the chops and passion to learn a few data structures and algorithms before interviewing for said job. Let them know it, keep in touch with them, and have them come back after they can tackle a proper technical interview.
>I've found the best people come from the latter process, but I would say that, right? I'm biased.
Right and that's a valid observation and there's nothing wrong with that bias per say. On the other hand I've found the opposite, the best software developers I currently have the pleasure of working with know their fundamental data structures and algorithms and have no trouble explaining deeply technical topics with rigor and precision, so that's what I hire for.
This person became one of those legendary developers that could do the work of 3 without breaking a sweat. I interviewed tons of people from the same university with actual CS degrees and knowledge of data structures and algorithms. I actually hired lots of them and only a few were as competent as this person was. Your degrees and knowledge of a few data structures and algorithms mean nothing if you're lazy and don't show passion for what you're doing.
You likely hired the other folks not because they were passionate or had some quality you looked for in the other candidate but because they were clearly apt and able to do the job.
I’d also say that there are many people out there that are incredibly intelligent, hardworking, knowledgeable, and just don’t give a single fuck about any business they work for. Most of my peers put me in that group. Don’t be bitter with us - we don’t find the shit challenging or appealing. A lot of us spent years in college grinding at rigorous academics and came out jaded. There’s relatively little left to learn compared to a starry eyed kid who took a single course, barely knows shit as you said, and is being given a once in a lifetime opportunity.
Kid will leave and likely be jaded like the rest. It happens. Mentally, software is a horrible career.
Leetcode and take-home assignments, to some degree, filter for younger people. I don't think too many people are going to solve two Leetcode hard questions in 45 minutes without some practice. I suspect this is a feature, not a bug, but I will take off my tinfoil hat now.
Whether or not you like it, people want to work with people they think they will get along with. Someone can crush objective screens but maybe they come off as arrogant or potentially difficult to work with.
I think your way of thinking or perhaps pretending that there are objective ways of making choices is a far bigger issue.
Ultimately, hiring is INTRINSICALLY a subjective process. If it were quantifiable and one could reliably screen based on "objective" criteria, it would have been a solved problem by now and employers could hire "robustly". But it is not and it never will be that way.
That said, hiring and assessing talent takes practice and there are some techniques that work better than others. In particular, behavioral techniques are extremely valuable and sadly often take a back seat to persnickety homework quiz questions. It takes some skill and practice to get good at behavioral interviews (for both parties). But when it's used properly, the candidate has a chance to actually demonstrate "chops" even though they may lack some of the job requirements.
Objective doesn't mean "good/optimal/solved" and subjective doesn't mean "bad/suboptimal/unsolved". All subjective/objective refer to is how sensitive a property is to a specific context. An objective measure is not particularly context sensitive whereas a subjective measure is.
My company has both objective and subjective criteria. Competency is mostly measured objectively and represents the bulk of our hiring criteria, the subjective assessment involves things like communication, collaboration and professionalism.
Both aspects are difficult and imperfect to assess regardless of whether they are objective or subjective, but I don't think it's particularly appropriate to assess someone's competency based on a subjective measure.
If someone is a good basketball player, or a good plumber etc... they are likely good regardless of the intricacies of the individual making the assessment that day and hence it's something that is probably best measured objectively. However, whether someone will get along with the rest of the basketball team, or whether a plumber can properly communicate to a customer what the issue is and how to fix it, that may very well depend on what team that player is playing for, or the relationship between that specific plumber and the specific customer. That would be more of a subjective criteria.
There certainly are subjective aspects to competency as well as objective aspects to communication, but it's minor (perhaps a basketball player is good only on a specific team, perhaps a plumber is illiterate).
I do think we sort-of agree that BOTH subjective and objective measures need assessment and they're both difficult to measure.
"If it were quantifiable and one could reliably screen based on "objective" criteria, it would have been a solved problem by now"
Given that was the premise of your entire argument, once that flaw is exposed the rest of your argument falls apart.
I want candidates to succeed -- I always start out rooting for them. The interview is not a place to beat people down but it give them opportunities to show their strengths.
I'm always puzzled by people/companies who find this difficult. I don't believe for a second that my intuition is magical. I have a very simple interview process and it works really well. I just ask you what you did, and then I keep asking you increasingly more complex or detailed questions about what you said you did until one of us hits our boundary of knowledge. Then I ask a couple of social questions, usually in the form of "Have you ever dealt with x kind of situation?"
Funny anecdote, I asked one guy if he'd ever had a coworker he had personal issues with. He told me some guy made a racist comment and his response was to ask the guy to step outside to fight. We did not hire that guy.
As an interviewer, I sometimes wonder if I made the right "No Hire" call on that person who might just have been nervous. As a candidate, I always know that when they say "NO" they're wrong :)
Then one time I hired an excellent candidate, technically very strong. Then it turned out he couldn't figure things out on his own. I had a co-interviewer who also thought he was very strong. In the end we had to fire him after a month since he couldn't pick up the pace (his colleague who started at the same time is actually very good)
I was "very good at hiring", until I hired the wrong person. Even now it's hard for me to tell what actually went wrong there. It was mostly theory and understanding underlying concepts, but now I definitely mix in a lot of practical issues and examples. Sometimes I think we interviewed his twin brother who could actually program ;).
Hiring developers is indeed very difficult. You can only tell when working with them for a few weeks.
So... young and has no family or other important time-consuming commitments. That's what we're looking for!
For example, Bob works 8 hours per day and completes 80 units of work but Steve works 10 hours per day and completes 90 units of work. If you get enough 'Steves' in the organization then the remaining 'Bobs' look like slackers. If you can't work 10 hours per day because you have a family, then it puts you at a disadvantage. I've seen it happen. I was told that if I wanted a 7% raise/promotion that I needed to increase my working hours by 13%. Why would I take a rate cut for a position with more expectations and longer hours? My conclusion is that many managers do not think, or that they like to play dumb.
>As a commercial and residential plumber in metro Atlanta, he pulled 11-hour days working some of the dirtiest, stinkiest problems in the country.
from third paragraph.
later on
>Over the weeks that followed, Daniel forced himself to sit down at his computer after those 11-hour days. He grappled with Python and Javascript in the back of his work truck. One minute he was wrangling sewer pipelines - the next minute, CI/CD pipelines.
So I don't know, are you serious?
Part of being smart and getting things done is properly managing work/life balance.
>Over the weeks that followed, Daniel forced himself to sit down at his computer after those 11-hour days. He grappled with Python and Javascript in the back of his work truck. One minute he was wrangling sewer pipelines - the next minute, CI/CD pipelines.
so the guy was able to work 11 hour days and learn to program, two programming languages, to take part in this contest, and his code was evidently solid as well so - I have to assume he did at least 4 hours a day after the 11 hour work days, and then of course the weekends.
Evidently people thought I meant that only young people can be smart and get things done, which I can only think that misunderstanding arose from not having read the article. Because even if I agreed that smart and gets things done was the answer if someone pointed out young and has no family I would immediately think oh yeah, he was definitely pulling some 15 hour days there without distractions.
I’d have been much more impressed and surprised to read an article profiling a programmer that became an effective plumber in the same amount of time.
Yep, I’m saying it—y’all just ain’t as smart as the plumbers out there…and most of you are kind of…”soft” in the physical department and probably would run screaming from the physical demands of the gig.
(I am including myself in the negative assessment above)
I had this realization over last one year, after 17 years of professional life.
Most of my work these days involves plumbing together right libraries and data pipelines to automate business processes. Sometimes I need to fix an existing plumbing to plug a leak here and there.
Now my Twitter handle says Plumber
FWIW I like both terms. I just wouldn't use them interchangeably. :)
Pretty much everyone else isn't.
People could grow their own food, eat straight nutrients if we had to.
Without plumbing you have no waste drain and no flowing water. I imagine you forgot about the irrigation aspect of farming.
Discovering plumbing, waste disposal and aqueducts[1] allow society to live in close quarters.
But not residential. That's all pretty standardized.
Think industrial, or a nuclear power plant. Or a spacecraft. Something where everything had to be custom designed.
I presume it’s a lot easier to appreciate the working conditions and compensation package, as well as tolerate the political dramas, when you have some perspective on how life is for most other people.
It has downsides, though. One thing you learn in blue-collar businesses is that the direct work is primary, with other stuff secondary. In a restaurant, nobody shuts down during the lunch rush to talk with everybody. In a factory, everybody understands that the machines keep going; any administration is done very much on the margins.
So it's maddening to me that in most office contexts, my schedule fills up with meetings and I'm expected to get my work done around them. And that nobody sees that as a problem, because that's just office culture.
I had the same feeling having had a lot of blue collar jobs while studying. Discussions/management was scheduled around getting work done.
I was working as a cook once and the real chef (I was studying literature and history at that time) and I were doing reviews of the evening after the kitchen was closed, cleaned and we were sitting at the bar drinking our one final drink of the evening. It was a little bit like a sprint review with the sprint being just an evening long. Sprint planning so to speak happened before guests arrived and the restaurant opened.
We prepared the kitchen, chopped stuff for salads, prepared sauces and stuff and were discussing who would do what when the rush started. So even without knowing the actual ordering of dishes and the amount of every specific dish we roughly knew what to expect (how many orders aka tickets we would have in the sprint/evening).
So we had a sprint planning, a sprint and a (internal) review. And our service people would give us feedback on what went well and what went wrong also, because they had the direct guest feedback.
That's part of why I'm a big fan of kanban boards for work. If you make our pretty abstract work visible, you enlist people's natural intuitions. Especially when there's the habit of regular reflection.
Of course, that takes a culture that supports it. It sounds like you had a really good place to work!
Block out portions of your calendar with recurring work time, and let them schedule their meetings around that.
Compare to a recent interview with the world's best employer (tm): the interviewer was young, was upset that my solution wasn't written in Java (???), and when I described my experience I talked about dashboards and he didn't know what that was. I described it as charts and he didn't know what that was. I described it as graphs and he also didn't know what that was. The interviewer had a bit of an accent so maybe it was a language issue but I had never run into someone who hasn't heard of a chart!
It’s at this point that I would end the interview and let them know it doesn’t feel like it would be a good fit.
Inverting a binary tree is not hard. That people keep using this as a joke is more a testament to the stubbornness of people believing they shouldn't have to do no learnin' no more than it is bad interviewing practices.
Expecting engineers to develop skills they don't learn/use in their actual professions to prove they're capable of working a job makes no sense. If these leetcode puzzles were actually relevant, why do so many engineers have to spend time outside of work "grinding" in order to get better at them?
I used to feel this way, but I think I’ve changed my mind. Interviews aren’t really primarily testing for skills you’ll use day to day, they’re testing for breadth of skills and knowledge and more importantly breadth of understanding. When I’m interviewing, knowing if the candidate has the specific skills for the job is the bare minimum needed to get in the door. I’m really more interested in potential, how much they can grow, and indicators of growth potential include how interested they are in the art of programming in it’s many different forms, whether it’s algorithms or math or software architecture, or coordinating people who write software. Puzzles are only the tiniest fraction of all that, but they’re still a signal that you like thinking about algorithms, and have exposure to different ways to write code and lots of algorithmic concepts.
A university CS degree isn’t particularly good at teaching job skills per se either, there isn’t much I use in my job day to day that I practiced in school, at a superficial level. But the school degree is pretty good at covering the broad concepts of computer science, and that has lasting value over the course of a software career.
Put up a job posting on a job board and you'll get hundreds of applications. 90% of those you're going to throw out because the resume doesn't match the job description at all. What does that tell you about the candidate pool? It's an all out assault of candidate spam. You have to employ these sorts of basic filters to even get the number of interviews you do down to a managable number.
This is endemic to the point where applying only for jobs where you fit the job description is a losing strategy.
And even if your own job posting isn't one of those, how is the applicant supposed to know you're one of the few employers who actually means what's in the job description?
Most people who are smart and get things done will be capable of shipping code, if they can stay motivated. And that’s where having some signal about their interest can help. I want to know if people can inspire their teammates, not just get along, I want to know if they can lead by example, whether they’ll rise quickly, and whether they’ll love it for many years. The essential job functions are just plumbing, the important parts are more than that and aren’t demonstrated by evaluating for narrow, specific job skills.
Look, I don’t in a million years think grinding on Leetcode is some singular answer, or even particularly good. But I don’t see anything wrong with people who are interested doing it, and I also don’t see anything wrong with asking interview questions. I never put a huge weight on such algorithm questions, and there are a dozen other major interview categories. So there’s nothing wrong with asking a few algorithm theory questions, to see the bounds of what people know. I like getting into questions that people don’t know the answer to, whether it opens a conversation about what it means, or whether the candidate has no idea or doesn’t care, that is a small amount of useful signal to me.
"Leetcode puzzles"... jeez.
It's like a chef complaining about being asked to make a fried egg. They might not be making that exact food in their job, but it's trivial for anyone proficient with the basic techniques that they need in their job.
It does apply. GUIs are fundamentally tree structures. Relational databases are fundamentally tree structures. JSON documents are fundamentally tree structures. Almost everything you're touching in a CRUD app is some kind of tree and you think knowing how to work with trees has "very, very little to do" with writing them? Again, how would you know?
I'm so serious that not knowing how to invert a binary tree is ludicrously bad. It's just a swap operation. You walk the tree and you swap the left and right branches of every branch you find. That's it. It's not black magic.
invert(tree):
if(tree not null):
temp := tree.left
tree.left <- tree.right
tree.right <- temp
invert(tree.left)
invert(tree.right)
That's why it's used as an interview question. It's not meant to be a test of skill. It's a shiboleth. It's one of the easiest ways to quickly answer, "is this the sort of 'programmer' who is likely to import a whole package for padding strings with spaces?"But that's the sort of programmer who gets hired, because SOP for Javascript development (and oftentimes elsewhere) is to import the existing library, and any developer who insists on writing that code themselves would be considered a code cowboy wasting company time and resources, and likely writing less safe code in the process.
Because implementing low level algorithms like that is almost never an issue for application programming in modern languages, for which robust libraries for such operations exist and are data agnostic.
Unless you are using Go, pretty much the only modern popular language that both features static typing and lacks generics, so that kind of algorithm re-implementation task might make some sense for screening application programmers using Go.
Why would you do that? The whole point of libraries of generic operations is that you can apply them to thing you have without copying.
Except it is. You spend a lot of time traversing nested tree-structured data, validating it, sorting it, filtering it. If you can't do the simple inversion operation you have no hope with the more complicated stuff.
I thought the meme depended on it being some obscure, difficult, and irrelevant thing.
It is also extremely simple:
TreeNode* invertTree(TreeNode* root) {
if (root) {
invertTree(root->left);
invertTree(root->right);
std::swap(root->left, root->right);
}
return root;
}And most of the time, you can rely on the Master degrees to pull through. Although I once worked with someone without a degree, but he could do magic like no other programmer I met.
If I were hiring you to work on raw data streams, I'd expect you to be able to figure out how to count in binary on your fingers in 10 seconds, if you hadn't already figured it out while sitting around bored somewhere.
You know what my first job was out of college after graduating with the highest GPA in my major? QA tester. That's all I could get. I had to beg to get commit access to fix bugs I found that I knew exactly how to fix.
If you literally know what questions are being asked in a test, you should probably fucking just learn it an move on.
I've always known "smoke testing" to refer to the mythical magic smoke that makes all electronics work. Smoke testing is turning something on for the first time to see if you're going to let the magic smoke out.
I guess there is a dual origin though
https://medium.com/@AikoPath/about-the-origin-of-smoke-testi...
[0] I have a terrible memory so details may be incorrect.
[1] IIRC this guy had worked on geostar satellites and the hubble, but I'm not sure if this story was about either.
I used to live in a place where we had gas resources and gas stoves. Gas pipes would be painted yellow to stand out and people always had some sort of respect and caution around them - you don't mess with gas pipes - I learned that as a kid. At the slightest whif of gas people would light up a match or a lighter and run it along the pipe to check for leaks - I always thought this is what "smoke testing" meant (altho there would't be any smoke). I still don't know if this is safe or would even work or it's just something people did and keep doing... and I have no gas pipes around me anymore.
What is this? Some kind of Tom & Jerry show? Light a match near a leaking gas pipe and BOOOM!!!
But... I've also seen smoke testing used in automotive and engine diagnostics which could predate or parallel this usage in electronics.
https://mechanics.stackexchange.com/questions/26749/what-is-...
I should imagine this method of troubleshooting sealed hollow-body systems of any kind have been around for a long time.
a quick search yielded a wiki article stating the method being used for sewers since at 1875.
https://en.wikipedia.org/wiki/Smoke_testing_(mechanical)#cit...
edit: format
I've seen CI/CD configs where you couldn't tell the difference! :)
I wish some CI/CD pipelines were as good as sewers
* I don't understand their technical terms.
* The way they explain their thought process when something goes wrong, feels very much like software engineers fixing a bug.
There are differences but this, to me, was the most striking similarity.
I might be biased as I belong to that group, but I have met some fantastic people from that group.
- Hero of the Soviet Union
- Nobel Prize
The meanings "Hero" and "Soviet Union" are both up for discussion, so I think I could bluf my way into being believed about that part at least.
No, cloud architects don’t know they’re drawing engineered prints.
Sold everything and travelled for 4 years where I worked on projects of my own (programming) and being self taught I planned to be a programmer when I came back (now) but thinking about it... I don't think I would like the day to day work, typing code like a monkey on the que of a superior, it honestly feels like programmers are the new factory workers of the industrial revolution.
Also doesn't help that I am in the Netherlands, where it isn't paid as exceptional as in the US, it maybe would make it bearable.
My big problem now, what am I going to do...
For example, right now I'm working for a non-profit. Meaningful work, smart colleagues, and a fair bit of agency. It doesn't pay as well as a fancy tech company, but I get by.
You should also check out groups that are more niche. For example, a friend of mine is part of the Copenhagen user group for Extreme Programming. That's a method that's focused on a good developer experience. And in my experience, niche methods and languages tend to be used more at non-awful companies.
So stay away from the big, boring companies, or at least the boring parts of them. Look for small, independent groups with clear purposes and close connections to the users.
Anyone else get the urge to build a smell detector machine with an arduino or rpi?
Fair enough.
But certainly finding problems in old systems is a valuable skill, and it requires a willingness to do dirty work that many folks turn their nose up at, so to speak.
The direct link to the greatest resume on question is this - https://dsresume.com
someone who just bought a copy to skim through.
The $24 is still the 50% off price. I didn't have any issues dropping that amount on it despite being unemployed because I already knew you from your newsletter and as a guest on Last Week in AWS / Screaming in the Cloud. For someone outside of tech, whose not used to those prices for an ebook, it might be prohibitive. Especially when they'll want to spend $40 on a course by Adrian Cantrill (I would warn them away from ACG) then the $150 for exams.
Brand new Kindle books go for $14.99 typically then settle to around $9.99 and can go lower depending on what publishers want to do.
It seems things are going well at your price point though and that's something for anyone doing self-publishing to consider. It's ok to still throw out an opinion that at face value it 'seems' expensive. :)
I'm glad so many people are getting traction out of it. I look forward to diving in further myself over the course of the next year. The thing about the tech world I appreciate are all the efforts of people to give back, including yours.
So for example in the post, this is the Resume/CV that they are referring to: https://dsresume.com/
So it isn't referencing the verb "to resume", but is instead referencing the noun "Resume", which is an American colloquialism for a CV, which is to be a piece of literature to describe qualifications for a job.
While I am American, i lived in France and England for a while and over there, the term "Resume" was completely foreign, but CV was something everyone understood. So that is why I thought I would shine light on this.
(Unless maybe you were meaning to make a joke, sorry I took the question literally)