Now Hiring: Not You
newyorker.com
newyorker.com
I've learned that if I'm not excited about getting a candidate an offer letter ASAP, it's likely they're not a good fit. If I have to talk myself into someone and make a list of pro's and con's, they're usually a bad fit.
That's a pretty good rule, I'd say. There's a more generic and shorter version too, which I tend to use:
If there's any doubt, there's no doubt.
"If Carpenters Were Hired Like Programmers"
http://www.jasonbock.net/jb/News/Item/7c334037d1a9437d9fa650...
https://news.ycombinator.com/item?id=7819413
The first problem is having people doing the interviewing who don't know much of anything about the work.
The second problem is from organizations so dysfunctional with everyone so irrational and afraid of nonsense criticism that they spend most of their effort covering their asses.
A third problem is an economy that is far too slow with far too many people looking for jobs.
A fourth problem is just a generally sick organization.
In a sense, these problems are good news because they give an example of an industry where even a sick-o company can still survive and even hold job interviews.
Sure, you don't want to work for such a sick organization, but, if you can, maybe you should get into that industry as a competitor!
More generally, when you see an organization that sick, and the OP was a joke but not very far from the truth, the flip side may be an opportunity!
That's right on the money. So true.
My work was in expert systems. I was doing a lot of programming and won an award for some crucial programming work I did -- writing the code all night one night -- saving rule subroutines in our AI language. I published peer-reviewed papers in expert systems, applied math, and mathematical statistics.
I was and long had been good at programming and computer science, several operating systems, languages, many algorithms, lots of applied math software, etc. I'd taught computer science in ugrad school at Georgetown and in grad school at Ohio State University.
I sent 1000 resumes and got essentially nothing. My location was 70 miles north of Wall Street, and I was willing to move anywhere.
In wildly strong contrast, early in my career in software and applied math within 100 miles of the Washington Monument, once a sent a few resume copies and soon in two weeks I went on seven interviews and got five offers, all with nice raises. Soon I was making in annual salary six times what a new, high end Camaro cost.
IMHO, the idea that there is a lot of demand for people in computing, software, algorithms, etc. is just hype and hog wash.
But I'm still good at applied math and associated software so am doing a startup. I have to please my users and, thus, my advertisers, but no way do I have to please an HR assistant, an HR phone screen person, an HR interviewer, or a hiring manager.
I've typed in 100,000 lines of typing with 24,000 programming language statements (lots of internal documentation), nearly all in Visual Basic .NET with ADO.NET and ASP.NET. There is a redundantly reliable and scalable software and server farm architecture with a Web server, a Web session state server (instead of Redis, I wrote my own, just TCP/IP sockets, single threaded, using the TCP/IP queue as the queue of arriving work, object instance de/serialization, and two instances of a standard .NET collection class -- simple, fast, small, works great), two specialized compute servers with my original applied math. It all appears to run as intended. For production I don't like the log file approach I took based on what Microsoft has, so I intend to take my session state server, rip out the collection classes, put in a write to a file, and, presto, get a log server. The servers all communicate with just simple TCP/IP sockets.
I identified the problem, designed the Web site, designed the architecture, designed, wrote, debugged, timed, and documented the code, and got it all to appear to work. Alpha test in progress now.
I'm a native born US citizen, have held security clearances at least as high as Secret, have never been arrested, have never been charged with any crime except for minor traffic violations, am in excellent health (now for my age), but have to say that for the past 30 years I've been absolutely, positively, totally unemployable for anything having to do with computing.
A shortage of people in computing? What a really bad joke.
Are you saying even today you're unemployable? How can that be? Unless you left some information about your credential out, like being incredibly annoying or some personality trait that would clearly reveal itself on the interview.
I mean, I believe you 100% if you say that you've tried to apply for work today, and couldn't get any offer after hundred of interviews, and that you're a pleasant person, and the whole thing is bad luck and that there are in fact less jobs then you hear, but I'd want to know more details. How can a pleasant person with your experience not find work in the current market? Is it agism?
Likely. Maybe Wal-Mart would hire me to stock shelves. In computing, essentially unemployable and have been since 1994. Long time.
Ah, along the way, I heard of a guy and several of his buddies who had, from a sudden change in some banking laws, found a hot resource allocation problem and, supposedly, some eager high end customers -- big banks. They had formulated the problem as a large 0-1 integer linear programming problem but gave up on using a linear programming package. So, they tried simulated annealing. They ran for days, quit when tired, took the best solution they'd found, and called it done without much information about how far they were from optimality. They mailed me their 0-1 integer linear programming (ILP) formulation. I looked at it, thought I saw a path forward with some non-linear duality theory (in some senses, amazing stuff), did some derivations, the told them that I'd have a little in a few days and all of it in about two weeks. I did. I typed in Fortran code so that for some of the work I could call the IBM Optimization Subroutine Library for linear programming, callable from a certain Watcom Fortran compiler I had. My code ran right away. On their test problem 40,000 constraints and 600,000 variables, all 0-1, on a slow computer I got a feasible solution the duality said was within 0.025% of optimality in 905 seconds. I wrote them back with the good news but never heard from them again. There was something about they were just going on vacation. Uh, the guy who had done the simulated annealing work wasn't thrilled that I might work on the problem. They had paid me nothing, so I wrote letters to the candidate banks and heard back nothing.
There was another, similar case: The problem was the old one of which pharmaceutical salesmen should go to which physicians and leave what samples. Surprisingly I found a network integer linear programming formulation -- there get integer programming for free. I was writing the code in portable Fortran, since that seemed to be the effective approach, when a guy in the company who had an old heuristic wanted to get rid of me, and did.
Agism is a lot of it.
IMHO, broadly a CIO wants a lot of worker bees age 20 - 35 and manager bees older. As worker bees approach age 35, a tiny fraction are promoted into management and the rest fired. No way do they want to hire worker bees over 40; certainly not at 45, never but never at 50. The above is broad but IMHO roughly the situation.
Really, a guy 20 would be better off starting a grass mowing service, with one lawn mower, grow the business to several mowers, trucks, and crews, expand into landscape architecture and commercial clients, and by age 35 own a nice business he could keep running as long as his health held out and pass the business down to his children. Just grass mowing.
Or, a guy in computing at age 30 should think seriously about being founder of a startup. No, call that age 25 -- heck, call it age 20.
I'm no longer looking for a salaried job in computing and, instead, am concentrating on my startup.
I was pleasant enough a person early in my a career when I could get a better job anytime in two weeks. Now my skills with people are much better.
IMHO, being a worker bee in computing is a long walk on a short pier. The field might be a profession like law, medicine, or some fields of engineering, but is not. So, there's next to nothing in professional certification, government licensing, professional peer review, legal liability, etc. From all I've seen, nursing works out better -- can continue to be a worker bee level nurse as long as can do the work. School teaching is better once get something like tenure.
I don't know how to solve the problem except just to leave it and, as in my case, do a startup. I can still do computing -- my startup software with 24,000 programming language statements in 100,000 lines of typing seem to work as intended, and I did it all from the first glimmer of an idea to the current alpha test. But that cuts no ice with any employer.
Ah, yes, now there is data science: Gee, I have experience and an applied math Ph.D. from one of the world's best research universities that makes nearly all of current data science look like baby talk. But, that cuts no ice, either.
I've got my startup. My wife died in 1992 from stresses from her Ph.D., and I'm about to get a kitty cat!
I'm fine, but I looked hard for jobs from about 1992, for years -- a huge waste -- and now just want to do my startup. So, the startup will be just a Web site, and the users need know nothing about me. If there are a lot of happy users, then there will be a lot of happy advertisers, and I will do well financially. That's what I'm doing.
I was and long had been good at programming and computer science, several operating systems, languages, many algorithms, lots of applied math software, etc. I'd taught computer science in ugrad school at Georgetown and in grad school at Ohio State University.
I sent 1000 resumes and got essentially nothing.
Interesting tale. Most people of your talents and eminence have a network of hundreds of people that they can tap into for assistance. What happened?
I sent resume copies, formatted beautifully with TeX, simply as just text in e-mail, with lots of detail, medium detail, very little detail, etc. with backspin, topspin, overhand, side arm, etc., and nearly never heard back. I got a few phone screen calls, and never heard back. I got a few interviews, but they never led to anything.
At Morgan Stanley, I showed some research I'd done in high end, multi-variate, distribution-free, adaptive ("Look, Ma, no tuning!"), real time anomaly detection (for problems never seen before), and a Unix system administrator, responsible for 5000 systems, had just come from a meeting about how the heck to do that. Hearing a little about my work, he exclaimed "We can use that right away!". Didn't lead to a job offer. I explained my work to another guy there, and he was just convinced that my work just had to be cluster analysis, and I explained that maybe there would be clusters and maybe not, but my work had nothing to do with clusters. My work was original. An expert in statistical monitoring exclaimed "radical, provocative". But it's also correct, passed peer-review, and got published. I was suggesting that the work might be of value in automatic trading where are looking for events or anomalies as triggers to exploit. The reaction that might write some code to automate trading fell flat with that guy.
My Ph.D. dissertation was in stochastic optimal control, but that cut no ice on Wall Street.
I have an excellent background in probability and stochastic processes from a star student of E. Cinlar, long the main guy at Princeton for math for automating trading on Wall Street -- still, zip, zilch, and zero interest.
They just weren't interested.
It appears that for a short time, Wall Street had some interest in Brownian motion, stochastic differential equations, etc. mostly just to better understand the Black-Scholes formula but maybe also to do more on designing or pricing exotic options, but my guess is that those days were few and now long past.
I've got a solid background to dig into Karatzas and Shreve, H. McKean, E. Wong, etc., but I'm not going to set up a hedge fund and just didn't want to spend some months with that material, I like very much, without some hints that Wall Street would care. I didn't know about James Simons at the time (although he was recruiting heavily from the IBM Watson lab I was in) and still don't know enough about his approach, maybe mostly triggers, to know if he would be interested in Karatzas and Shreve etc.
Bottom line: No interest.
I don't know why.
On knowing a bunch of people, apparently I don't know enough of the right people!
At this point it is much easier and much more promising just to do a startup.
Here is my guess: Organizations really don't like to hire anyone in computing over 35. By age 50, no way. What they want is a lot of people under 35 and, then, promote maybe 1 in 50 of those to management and fire the rest by age 35-40 or so. They just don't want experienced worker bees.
52. Just got a new job less than six months ago, with one of my biggest salary and total-compensation bumps ever. So I'd have to say my sample of one differs from yours.
> They just don't want experienced worker bees.
No, they don't. They can find plenty of worker bees. At 10+ years of experience (and associated salary) they expect some very general kinds of skills - e.g. evangelizing an idea, mentoring others - and probably some very domain-specific ones as well. Above all, they're usually looking for someone who can be the core of a team, not just one of its members. Can you be that person? I have no idea. What I will say is that what you've presented here does not support that case. I could say more, but don't want to give offense. The only point I'm trying to make is that "experienced worker bee" is not a much-sought role. The jobs go to those who are something else, and who present as something else.
No one knows everything: (1) Designing, growing, and managing the LAN for AWS? Well, if haven't been specializing in that for the last 10 years, then call Cisco, some network systems management vendors, etc., and hope that the company will wait as you become an expert in that work. (2) Same for the AWS connections to the Internet points of presence. (3) Large scale C++ programming, from design and documentation through testing, deployment, and bug tracking and fixing; again would want some years doing just such work. (4) Configuration and management of large scale use of virtual machine? If haven't been doing a lot of that recently, then call VMWare and hope that you will have time to become an expert. (5) Large scale front end Web site programming with hundreds, maybe thousands, of Web pages, sending thousands of pages a second, writing, updating pages continually, many a day, lots of details about JavaScript, getting bugs out, making it fast enough, getting it tested and documented, making sure it runs the same on lots of Web browsers, arranging the CDN help, working with Akamai on stopping DDOS attacks, making the security good enough for a big financial institution, keeping up on security threats, etc., working with the Web site back end staff to make the site fast enough. A lot of work, managing lots of work and people. Better have been concentrating on that, especially for financial services, for the past 15 years. (6) Handling system management, installations, updates, monitoring, security, performance, designs for growth for a large server farm -- better have been doing that for 15 years, with some one operating system family, and grown up in that work as server farms grew at Amazon, Microsoft, Google, Facebook, etc.
See, there are a lot of narrow specializations. For each of them, for the high level positions, need to have been specializing in those for years. Then with that career track, there is a big risk: That specialization may shrink or die. Then don't have comparable experience in another such narrow specialization and are in career trouble. Nursing and K-12 school teaching are much more stable.
I was willing to do whatever for a salary that would let me live without losing money. E.g., at IBM, cost of living was so high, commuting distances so long and expensive, and salary so low that I actually lost money working there. Heck, I saved money working myself and my wife through our Ph.D. degrees but lost money working at IBM. I can't afford to take a job that costs me money.
I am highly qualified in some specializations. For nearly everything that people hope to get from AI/ML now, my background and track record is highly superior. E.g., not many people want to do curve fitting with 1 million variables and 100 trillion observations! So, right, I've never programmed a high end NVIDIA GPU for curve fitting! For data science, my background, education, accomplishments, are superior, by a LOT.
But, generally, an organization should expect a new hire to learn over some months about the specific, narrow topics of importance at that organization. Then what is needed is a good, broad background, all the way from assembler, ring security and gate segments, capabilities and attribute control lists, enough in number theory to understand RSA, PKI, and VPNs, etc., and I have that. It remains, for analytical work, now likely considered part of data science, optimization, simulation, and control remain among the most powerful tools, and I'm quite good with those. E.g., going to do supply chain optimization with AI/ML? Not a chance! Usually it's a problem in stochastic dynamic programming. How many data science people know that? I do.
Here's one: A company wanted some revenue projections. AI, ML, data science? F'get about it! What was known? (A) The current revenue. (B) The revenue at the planned maximum share of the market. That was it!
Okay, assume that over time, always there are (1) some customers being served and (2) some target customers yet to be served. They talk to each other. So we have a case of viral growth. Assume that the rate of growth is directly proportional to the number of customers in (1) and to the number of target customers in (2). So, let t denote time in, say, days, and y(t) be the revenue at time t. Since we know the current revenue, that is y(0). Let b denote the maximum revenue. Then at time t, the number of customers being served is proportional to y(t) and the number of target customers is proportional to (b - y(t)). So, at time t, the rate of growth is the calculus first derivative of y(t), that is, y'(t) = d/dt y(t). So, we have that for some constant of proportionality k
y'(t) = k y(t) (b - y(t))
That's an initial value problem for a first order linear ordinary differential equation. Yes, there is a closed form solution. Find that and consider some other qualitative items, pick a value of k, and that's the projections.
Clean enough. Justifiable.
Get a lazy S curve that roughly approximates a lot of viral growth examples back to, e.g., TV sets in US homes.
Okay, I did that on a Friday. The next day, Saturday, was a BoD meeting. The graph of the revenue projections was presented. Two representatives of Board Member General Dynamics asked for the projections to be justified. That was at about 8 AM. By noon or so, the General Dynamics guys had lost patience with the company, returned to their rented rooms, packed their bags, obtained airline reservations back to Texas, and as a last chance returned to the BoD meeting. Then a C-level guy guessed I'd done the projections, made some phone calls, found me in my office, and asked if I could come to the BoD meeting. I came, explained the projections, used an HP calculator to do the calculations of y(t) for several values of t, and reproduced the values on the curve. The General Dynamics guys stayed. Had they left, with their pending equity check, the company would have died. So, I saved the company. And I was the only one at the BoD meeting who could understand the differential equation. The company was FedEx, and I was Director of Operations Research. That was the second time I saved the company.
I've done good work on a lot of analytical projects.
No doubt the situation now is much the same as when I did those projections: Such work can be really important, and not many people in business know how to do it.
So, yes, there are some specialized things I know how to do.
For computing more narrowly, I just wrote 24,000 programming language statements using Microsoft's .NET Framework, ADO.NET, and ASP.NET. For a Web session state store, I wrote my own. I also did all the design work. Such things are current and popular now.
But, having people regard such a background as useless is not good. For me, a much better path is just my startup. For that startup, I'm a sole, solo founder, 100% owner, doing all the work. My qualifications are just fine for my ambitious startup, in information technology, with those 24,000 programming language statements, and apparently new algorithm or two, and some really nice, crucial, original applied math. Curious that my qualifications are no good for anything else!
I had no trouble doing the work in the IBM Watson AI group: I published along with the rest of the group, but I also as a sole author did by a wide margin the best research of the group. As I was walked out the door, the claim was that that work was "not publishable". That was a deliberate lie. Well, I sent the paper in to a really good journal, and it was accepted and published relatively quickly and without revision. For just the software part, I did the best work done in the group and won an award. And I was our lead on our joint work with GM Research and wrote the paper we gave at an AAAI IAAI conference at Stanford. Curious that my qualifications are not good now.
Have I written a smartphone ap? Nope. My startup will work fine on smartphone just via a standard smartphone Web browser. But writing smartphone aps is not nearly all there is to information technology now!
However, while I do sometimes feel this way, the article went on for a little while. I was sort of expecting an explanation or a twist at the end. Oh well, still good.
Note: I'm not saying all or even most H1-Bs are hired this way, just that the scummy companies that abuse the program tend to post these kinds of job ads.
Why is a candidate's country of citizenship the test for whether a role must be posted publicly before it can be filled? Wouldn't it be best for both the economy and the company if this rule were followed (without circumvention) for 100% of job openings? If your answer to that is "no," then why require it in any circumstance?
"You flubbed the algorithm question. We're looking for someone with a stronger CS background."
Done. Clean and ultimately more kind.
... Unless a large number of candidates actually are getting rejected for sexist / racist / ageist reasons masked behind culture fit concerns, and the company obviously doesn't want to admit to that?
I say this as a hiring manager, by the way, knowing full well that nothing involving the hiring process is as clean and straightforward as anyone involved wants it to be.
When Triplebyte wanted me to go through their experimental interview, part of what I was asked was to "talk about" hash tables and, later, red-black trees. That seemed vague, but, prompted for what they were looking for, I covered the following:
- Hash tables are the generalization of arrays to non-integer indices. They have the access characteristics of arrays. They store data in a backing array.
- When two keys collide, the hash table can store them in a linked list (the "buckets" approach).
- If you don't like that, you can do quadratic probing, in which you repeatedly square an offset from the true hash value for that key, until you find a space in the backing array that is not currently full.
- Quadratic probing has the disadvantage that when you delete an entry from the table, you have to leave a placeholder in the backing array saying "there used to be something here!"
- If you generate an index into the backing array which is greater than its size, you would usually deal with that by taking the index modulus the size of the backing array.
- If the backing array gets too full, you would allocate a new backing array of double the size and rehash everything into the new backing array. You double the size so that amortized insert time stays constant.
- Amortized time complexity refers to the average amount of time taken for a set of completed operations.
- Red-black trees are a type of self-balancing binary tree with the property that all paths root to leaf are within a factor of two in terms of length. I can't say much more about them and wouldn't be able to write one off the top of my head.
The feedback they gave me was that, if I wanted to continue working with them, my highest priority should be to improve my knowledge of hash tables and red-black trees.
And sure, there's plenty of room for improvement in terms of red-black trees. But I am mystified as to what else they wanted for hash tables.
How is the index into the array determined?
What are the best and worst cases for algorithmic complexity of a hash table?
Disclaimer:
I don't conduct interviews at my employer. If I did, I wouldn't ask about hash tables. I was asked to talk about hash tables in a Microsoft interview years ago and my accepted answer was much less detailed than yours.
Edited to add an adjective.
Odd question. Theoretically, that choice is unique to the individual hash table, not a property of hash tables in general. I believe languages with default hash table implementations often use the machine address of the key, although obviously that won't work for keys that are compared by value, like integers and strings. I know there has been research into how to hash strings well, and I wouldn't be surprised if such research is still happening today.
> What are the best and worst cases for algorithmic complexity of a hash table?
What's a realistic worst case? A bucket-style table using linked list buckets will perform, at worst, as a linked list, except that if you add too much the backing store will be resized and everything will be rehashed. It would be quite a challenge to provide a large number of keys that all collided with each other for multiple sizes of backing array, assuming the hash function was decent. If you limit yourself to a small number of keys, the fact that you're seeing "worst-case" performance probably doesn't really matter.
What is a hash function?
Edited to omit needless words.
Otherwise, if you go down this rabbit hole, how deep does your knowledge about the basics have to be? Do you need to know every possible hash function? Their tradeoffs? Their probability distributions? The uses for each? Implementation details?
If not, why were you even asked these questions?
The interviewer then recommended that we hire one of his friends instead.
I've seen this sort of thing happen all the time, at multiple companies.
What I never figured out is how could someone have my exact skill set and knowledge and yet be five years younger -- they started hacking about with computers in 1982 when they were just ten years old?
It's usually all about money, not age.
Consider breakups. The Seinfeld classic "It's not you, it's me" is hilarious because it touches this truism.
Move on.
I've even made it to a final interview where they flew me across the country, only to tell me that there's no funding for the position
I wish I could work as a hiring manager for a year just to see all the crazy stuff I've experienced from the other end
It seems like hiring requires a lot of decisions from multiple people. And they want to be safe, so all have to give a yes.
That's my only takeaway from this.