So much of everything is about connections and reputation. Tech in particular holds up a guise that people are chosen and ascend because they are “good”, meaning, they are good at what they do. That’s part of it, but it’s an insufficient part, and you can do pretty well in a career being solidly average at what you do.
The real currency in my experience is one thing - relationships. Do I think this person likes, respects, and would vouch for me? Everything else aside, that’s what people optimize for when they choose who to promote, respond to reference requests, and generally in who they engage with at work.
Oftentimes It seems like it may not even be a conscious behavior, they just know that’s who they have a gut feeling about.
I definitely wish this wasn’t the way of the world, as someone who isn’t a natural when it comes to building relationships in a professional setting. But I also don’t let it get me down. It’s an element of human nature that’s hidden many layers deep in the workplace.
When I finally faced this fact and started devoting some of the time I previously spent on hard skills, I realized it was far and away the more impactful way to allocate my resources.
Yes, this was the opinion I came here to post, certainly my own profession of law is like this, at least where I practice in Toronto Canada but I can't imagine other places being much different.
I think one advantage of computers is that what you produce at the end has to work - and if the code doesn't work or you don't know what you're doing, you're quickly exposed as a fraud. This is not the case in other fields like law, academia, politics, and even the corporate world where the results and methods are more abstract and given to opinion.
Unfortunately much of the world is run by people who excel in the abstract fields rather than the technical ones.
You make a very good point, but I'd like you to believe its not unfortunate.
Most people I know would happily sign a document that states 'We hold these truths to be self evident that all men are created equal', even though the world shows us every single day that it isn't true.
In technical fields, getting that document approved would be a nightmare.
Maxwell's equations on the other hand are easy to get approval for. They are 'self evident'. Because they describe what we see, not what we want to see.
So thank god for Jefferson penning that line down and effecting how everyone thinks, because it shows us for some problems, the ambiguous kind, were truth is what we want it to be, technical fields will struggle to provide answers.
Its very fortunate, esp to make progress on all the ambiguous problems, that society props up a Jefferson now and then.
How did Jefferson get into that position and not some jackass, is the most important question. And the answer to that, with a modern developing understanding of networks and graph theory, has only recently started moving from the abstract and ambiguous to the more technical - https://www.youtube.com/watch?v=07KKYostAJ0
I don't think it's true that computers are great at exposing this. Software ranges from the concrete (does this button do anything) to the abstract (does this statistical program have an off by one error that's invisible to customers other than returning somewhat wrong results?). I think there's two competing definitions of 'work' in software - 'it works' as in 'allows for use' which can compete with the 'implements properly'. Computers and code will brutally expose the former, since it simply will not allow you to do something if it's broken. They don't necessarily expose the latter.
If the software should let me do X, I can click around and confirm that I can do X. I think most people would consider that the definition of “works,” rather than the quality of the code, the validation that the proper thing was built, etc.
Looking at the code can tell you whether it was “implemented properly” - or at least, if it was done reasonably competently.
Relationships, though, can help you know if that properly implemented code was likely a fluke or not. Does the person ask questions? How do they ask questions? How do they communicate? How do they capture requirements? How do they push back when something seems unclear or unwise? etc.
I don't buy your arguments - at all. At the end of the day people have strong expectation about what software should do. If it doesn't do that, they will quickly notice. If they don't notice (now or in the future) things like your "off by one" errors, then that requirement wasn't likely that important to begin with.
Now, I've seen plenty of "demo-ware" software that has been presented as something that was much more than it actually was, but again, stuff like that always falls over, riddled with bugs and crumbling under load, when it gets substantial use.
Some things you really can't fake, and software engineering is one of them.
Let's say you have a for loop that is supposed to run once, but some "programmer" calls it a hundred times. The program still works, but it's a lot slower.
Input lag on devices has doubled or tripled from the 1980s while clock speeds have increased drastically. Reddit and Hackernews do essentially the same task, yet Hackernews' load times are almost instant while Reddit takes more than a second to load at times.
It's true that you can't fake a minimum viable product, but it seems to me there is a long way from that to actually making something good.
Sort of. Would a user use all of that compute if it all wasn’t wasted? Probably not. What we’ve done is “inflate away” (similar to fiat and central bank policy) the need for additional human developer time through Moore’s law. We all pay for this through annual tech spend, which keeps the advancement treadmill running.
Human time is expensive, so it makes sense to throw anything cheaper at the problem first.
Perhaps we have different conceptions of 'fraudulent'. I don't think it necessarily implies 'fake', but something more along the lines of using inferior building material. Perhaps it 'wasn't important all along' or perhaps it'll lead to catastrophic failure in 25 years, who knows? Software 'engineering' may be hard to fake, but that's because you're probably defining it as the proper way to develop software. A lot of software is certainly not built in a way familiar to an engineer.
Building materials are judge based on the standard of "survives for at least three decades without crushing those inside" not "survives the next reorg or pivot." What would be the equivalent of inferior building materials failing over 25 year timescales in software? C isn't even twice that age and the oldest running mainframe software is probably only a little older whereas we've had millenia of experience constructing buildings.
I know friend of friend who went to Harvard Law like 15 years ago and she told me there is SO MUCH butt kissing going on there.
You'd think people who got that far would be confident enough to rely on their own skills/study to get ahead BUT even at that level, there is a lot of butt kissing to get ahead.
> I think one advantage of computers is that what you produce at the end has to work - and if the code doesn't work or you don't know what you're doing, you're quickly exposed as a fraud.
Also we can take this idea even further: what if only 1% of the entries in the guestbook don’t show? Does the code work? What if it’s so badly written it take someone with a really good experience to be able to prove that bug exists at all?
How do you go about proving this? In the real world people are going to dismiss it. If you are playing against a politician you will be told that you simply have a bad memory thinking that some things exist that really don’t.
This is one reason I believe computer science should be thought in school just like mathematics. The experience is very humbling, you've got all this logic, all the rationale, to you, it must work, but the computer knows it doesn't make any sense.
I've learned that most problems are easily dismissed by people as being "easy", "simple", just do this, just do that. I've found software forces you to really think through, "just do this" is easier said then done, how to do it?
Real problem solving is hard, and I do think computer science humbles you in that sense.
Here's an example, my friend always tells me he thinks we shouldn't take anymore refugees. Alright, I'm not even going to debate the the morals or anything like that. He just think, whoever is letting the refugees in is dumb and shouldn't do that. That's surface level thinking to me. How do you do that? There's a boat arriving to the shore, full of refugees, it's not turning around? What do you do?
This is a hard problem, no matter what you think you want the features or use case to be, how do you do it? The logistics are difficult, how do you scale it? What about all the edge cases? What about the cost?
In that sense I think CS can help you learn how to really think through a problem from understanding the full implications and complexities and the challenges. We learn this by trying to model problems and their solutions very formally.
> Here's an example, my friend always tells me he thinks we shouldn't take anymore refugees. [...] That's surface level thinking to me. How do you do that? [...] What do you do?
It’s funny you take this example because your point of view is precisely surface thinking too. I bet you don’t have any concrete plan to fund housing, education, healthcare for those people, nor you have one for them to become productive members of the host society. They are dozens of factors that makes irrational to allow any of them, and a lot of countries (Australia, Japan for instance) have in fact a successful policy of allowing only a bunch of them.
You're misquoting me. The surface level thinking refers to this segment: "He just think, whoever is letting the refugees in is dumb and shouldn't do that".
When people are coming to your border in large trove, not letting them in is easier said then done. You can't just "not let them in". To keep my analogy going, this requires an algorithm of some sort. First you need to find something that works, and then you need to take into account cost consideration, scaling, etc.
Your example would work as well. Someone who were to say, whoever is stopping them from coming in is stupid. This would also be surface level. What do you do with them once they're in? Housing, education, integration? Does our system have the capacity to handle such load or will it collapse? Just letting them in may not be enough, it could cause problems down the line, what are we doing to prevent those.
The right conclusion to take from my comment is that problem solving is hard, there's a lot of variable at play, a lot of considerations to take in, and it is never as easy as you assume at first. Recognizing this is part of being humble, and I think computer science teaches you that.
Thinking you have the answers because you thought about it for 5 minutes and not realizing you skimmed and hand waved over all the direct and indirect complexities and considerations and are skipping multiple steps of the solution. Thinking that there is an easy solution and then advocating for it strongly when you haven't begone to recognize and understand the complexity of the problem itself. This to me is an indication of a lack of some form of critical thinking. I think computer science can to some extent teach people better about this, by having them practice concrete problem solving exercise on a computer which can assess to the solution working or not. And learning formal problem modeling techniques and validation strategies. It's a useful skill.
>It’s funny you take this example because your point of view is precisely surface thinking too
But they're not...? GP didn't say he want to take refugees in, they merely said their friend want refuse refugees without specifying how exactly they want to accomplish that.
>I bet you don’t have any concrete plan to fund housing, education...
> I think one advantage of computers is that what you produce at the end has to work - and if the code doesn't work or you don't know what you're doing, you're quickly exposed as a fraud.
This is very naive point of view. Think of how car repair shops bullshit customers (especially what was before some mitigating laws) and then multiply it by Pi or more
You are correct, although I personally know two programmers who are not able to write basic JavaScript code and have survived for almost a year in their jobs by asking around, copying other people's code and asking for help ("I did this, but somehow it doesn't work!").
I don't know how to raise this issue at work without being insensitive.
> I think one advantage of computers is that what you produce at the end has to work
No that's not true, that something works is beginner level stuff in many cases. In some cases you're right though, because what has been asked is a super tough problem to crack.
I'll showcase the moments in which the "it has to work" requirement is not enough.
To show this example, I already have to break 2 conventions that are a no no, in my opinion. To other devs: I'm commenting everything (I can't assume someone who works in law to know code, he/she might, he/she might not) and I'm using globals for easier variable reassignment, to ease the example for readability.
Let's get started. The requirement: print 5 to the console of your browser [1].
Open up Chrome Dev Tools (view -> developer -> developer tools -> console)
Type in the following:
five = 1 + 1 + 1 + 1 + 1 //compute 1 + 1 + 1 + 1 + 1 and save it in the computer with the name five
console.log(five) //outputs 5
five = 0 //reset
// loop 5 times, and every time the pc adds 1 to the saved part of the computer named five
for (loopCount = 0; loopCount < 5; loopCount = loopCount + 1) {
five = five + 1
}
console.log(five)
five = 5 //save the number 5 in the computer with the name five
console.log(five) //outputs 5
console.log(5) //also outputs 5
FIVE = 5 //all-caps is a convention for that something is a constant, like a constant number such as 5
console.log(FIVE) //outputs 5 as well, and also probably the way programmers want to see it.
Some of these methods have been really silly and if you catch that during an interview, you won't pass. People can point out that most of these methods happen one way or another, but not when you have a simple requirement such as "output 5". In fact, if that truly is the requirement, then I would go for:
console.log(5)
And I'd consider the first 2 entries totally nonsensical (unless I asked it with a funny voice or asked them to do whatever / be creative), the 4th entry slightly questionable but fine and the 5th entry fine.
[1] Read the following link to have some context about what the JavaScript console is. Don't worry about not understanding the code or the technical terms. You're not missing anything, as far as context is concerned, I checked. Read it until the first paragraph of "Running JavaScript".
A question: is really fifth the best ? Seeing FIVE=5 always irks me, as it's an extra indirection for nothing. What do I gain with it ? The ability to change it to FIVE=6 ? OUTPUT=5 maybe but then console.log(OUTPUT) gains you nothing. Maybe NB_LEGS=5 and console.log(NB_LEGS)
This is why I put the word probably in the comment and why I stated that for this particular requirement I actually don't think this is the best approach.
You can always screw around with code, redefining code blocks in C would be fun to do.
But I did have situations where FIVE = 5 changed to FIVE = "five" or FIVE = "5" or FIVE = "vijf" (Dutch) or FIVE = "....." (ok, the last one is hypothetical, but maybe you want five points because you tick them off in a for-loop? I've seen something clever-ish like that in a particular fun Fizz Buzz example).
The layer indirection is indeed a classical trade-off that you do or do not want to make.
Regardless of that, your question proves the point I want to make to kbos87.
Just continuing the discussion, I fully agree with you on principle. I stand by the fact that FIVE is not really a good constant. You will not change five unless you also change the code to handle it, so it just adds another part to modify. And if you never intend to change it or reuse it.. well the only point for making its symbol is to give it meaning, which FIVE does not. But well at a point it's like discussing colours.
The way a former boss explained it to me is that bosses need to form pyramids to support their own ascension. It is just subtribes within the big tribe fighting for power and dominance.
Those networks that you form to support your own rise are used by your boss to support their rise. You get promoted because you will make your own boss look better in the future. The second this ceases to be the case, you get discarded like a used tissue. Competence is very far down this equation.
I suspect this is almost universal. The only forcing function is what features the ultimate power selects for. A great CEO forces the subtribes to compete on the basis of value added.
We pretty much act the same way as those chimps in nature shows.
The worst part is when performance review time comes around. It's obvious to anyone looking at the situation objectively that competence doesn't matter much when choosing who to reward and who to fire, but seeing the tribe members pretend otherwise and target hard workers who aren't part of the clique is absolutely devastating to morale.
In corporations, yes. Corporations are like communist governments without authorization for coercion -- relationships and networks determine your impact.
If you sell a product, there is a different calculus for ascension.
Reputation is very important. It is a cached value of "worthiness". Knowing it allows you to save months, or maybe years, of expensive experimentation.
The validity of any cached data can be a hard problem; in the case of reputation, a problem there is. Still, however imprecise this tool is, its usefulness is so high it's not going to go away from human interactions.
I've been thinking about this a lot lately and have come to a similar conclusion. I've been very focused on technical skills lately, but in doing so I've started to lose some connections in my org and network. Career growth depends more on relationships than I'd like to admit.
In my experience, coworkers gravitate towards each other socially because they respect each other's skills. Competence, humility, integrity etc. in your work are a major source of those warm fuzzies.
But humility and integrity are "soft" qualities, outside raw technical prowess.
A talented jerk is a scourge of a project (especially in open-source): the engineering might attract others in the short term, but being a jerk makes long-term interactions painful and not very fruitful.
Talented jerks can absolutely destroy a team. In my experience, the actual degree of coding prowess turns out to be significantly less important than the ability to collaborate.
Eventually this does make sense in some ways. It's commonly accepted that you would want to avoid a 10x programmer who is toxic and drags everybody in the team down. So what's the huge difference of that to what you're describing? You'd much rather have in an important position somebody who everybody can trust, has mutual respect for, and is willing to work with, to somebody who is untrustworthy and looks down upon everybody. This pulls everybody together and eventually results in much better results for the organization (and hunter/gatherer group for example in ancient times), compared to the situation where one person has brilliant hard skills but makes everybody really uncomfortable and demotivated.
Of course, one might interpret what you said in a slightly different way, in that two groups of people would fight each other and only vote for people within their group, which would be sorta counterproductive for the whole organization. However, the behavior still actually makes sense for the particular group that those people are in and creates the maximum benefits for everybody in that group. For the organization, it would then be a problem of reconciliating the interests of different groups of people.
When you're focusing on your own skills you're polishing an aging vehicle for value delivery, which is mostly only good when someone else glues you with other people. When you're polishing a social network you're engaging in a more amorphous activity with respect to value, but you're also investing in something beyond you, a kind of social coherency which will likely outlast your death.
I think thats really true from the perspective of a fairly experienced person but I also think it takes a level of skill to build social currency. Building a network is 10x easier when you have done something noteworthy compared to just pure networking off your personality or whatever.
>Do I think this person likes, respects, and would vouch for me?
But do you know who else does this for you? A dog.
I've never promoted anyone who likes me or respects me or vouched for me, I promote those who are reliable and have have skills to achieve the task at hand, one who will not betray themselves or their company for some kickback.
Both are valid IMO. Of course you wouldn't choose a spineless clown who only knows to please the others but not actually do any real work (though admittedly this might be what's actually happening in some places). But on the contrary, you probably also wouldn't choose somebody who only does 10x work but has endless toxic conflicts with the others and can't cooperate/earn mutual respect.
Mixed experience here. Technical breadth has helped me a lot,but relationships helped me more. They're not mutually exclusive. If I had barely enough technical skills though,no relationship can save me.
I've noticed this when applying to FAANG. The online resume site doesn't cut it. You need to know people to get past the resume screening, even if you have a bachelor + master in CS, TA experience and some work experience. Someone did reach out via HN recently, which I am really grateful of [0]. I'm curious to see how that works out.
It's only FAANG, I've also seen this everywhere in The Netherlands. I've been looking for a job for 18 months -- I've been picky as I was very ambitious during my uni (yep, my mistake, ambition can be very detrimental to one's career as it can make someone quite picky, aka only big corporations). The irony is that a couple of months ago, I walked into my old university, met an old colleague that had a startup and wanted to hire me straight away after the most relaxed interview I've ever seen. They wanted me to read some code and explain what was happening, it was about some caching system.
So yea, it's all about people.
From my perspective, there is little meritocracy to be found in the tech world [1]. Maybe past the resume screening? Definitely not before it.
[0] Next to my own gratefulness, what I always find amazing to see is how some people in really dire situations get completely picked up by HN and sorted out, in some cases. I really feel for the homeless people in the tech industry, because it's a relatively rare issue, but it does exist! And those people tend to be able to find help here.
[1] Maybe there's a lot of it by comparison to other industries, but if a house has been burned to the ground and other houses are starting to catch fire, while in other cases entire city blocks are on fire, then I wouldn't call it a good situation in both cases.
FWIW, this wasn't my experience at all, but also there may be differences between the US and Europe. I went to a unremarkable top 50 state school in the US, graduated with a 3.0 GPA BS in CS, had a single internship at a no-name local company, no research experience, no referral, no significant personal projects, no TAing experience, and I got interviews at Amazon, Facebook, and Google by cold applying online. It was at the smaller companies and startups where I couldn't get past the resume screen, likely because unlike FAANG they can't afford to interview literally tens of thousands of candidates every year.
The reality hurts so much, and it's upsetting to me I can't be more grateful (some people that I know are homeless and hungry, relatively rare in The Netherlands but it's there). I should've done my own research when I was young, but I was young. I didn't know that going to the US would be so tough, no one tells you. 18 months of not even being looked at in most cases, especially US companies (some Dutch companies did). I am constantly borderlining a mild depression now that I think of it. It just feels so fucked up to not have one phone screen at my 1st pick companies but coding grads do (e.g. Full Stack Academy in New York).
My CS master grade was an A [1, EU grading system explained]. I'm sorry for writing all of this, the GPA 3.0 got me triggered.
I think it's because I'm from Amsterdam and not from the US. I've also noticed by watching YouTube that US people had an easier time applying to Google as a grad, a way easier time in fact. I have found no videos of Europeans doing something similar. Not that I have looked, I simply come across them.
It feels that my predicted future was a complete lie. I failed in my goal, spectacularly. Everything I gave up for it was in vain. Getting to FAANG later won't be the same, it's not the career trajectory/velocity I want. I should've partied a lot more. That would've been fun. I do appreciate the education though.
Perhaps I should find a career coach.
[1] European GPA: 8.1 out of 10, European grades are much harsher, a 10 means a god-like level in many cases, I don't think anyone has gotten a 10 as a GPA, 9.1 or 9.2 means you're the best or one of the best in the country/
That almost certainly has nothing to do with you - hiring a fresh graduate through the H1B program is practically impossible in my experience. H1B applicants have to show "significant work experience" in a relevant field and unless you have a PhD (and often times even then), any work experience gained during your education will not count towards that requirement. Most companies won't even bother with the interview; 18 months sounds like the bare minimum to even have a chance at meeting the requirements.
@akiselev: I haven't only been applying to US locations of US companies (e.g. Google Switzerland). But a SWE from Google gave me a referral link to which I'm grateful. I wonder to what extent it will help though since it went through HN and we just met. I want a phone screen and be told that I am or am not good enough. I can have peace with this if one FAANG company shoots me down on my D&A skills. For my own sanity, I've resigned to the idea that I'm not going to get a phone screen as I have little faith in the Google referral to help me past the resume check, but we'll see.
I don't know how many satellite offices you've applied to in the EU but I bet your sample size is very small. Don't get discouraged! Hiring processes at most companies are byzantine, multinationals even more so. It's really hard to tell who's pulling the strings or what the constraints are unless you're directly involved in the hiring decisions. I've passed on at least one once-in-a-lifetime hire (brilliant engineer from the Indian space program) just because I thought the H1B paperwork would interfere with a project deadline since my employer was a startup and didn't have the HR infrastructure a big company would have.
More importantly: fuck them. Don't judge your self worth based on the latest shiny megacorp's inscrutable interview process.
> Don't judge your self worth based on the latest shiny megacorp's inscrutable interview process.
The following comment might be too candid and too unpopular. I'm sorry about that. I need to write it down somewhere with the potential for some interaction (it helps me learn). I know I'm not alone in this feeling though. Though, I'm pretty sure the majority of people won't share my opinion. So either there is something I should correct in myself, or I'm a bit odd regarding what I'm about to say. I guess some financially independent people feel similar about this
---
It's not about self-worth. My financial worth depends on it and with it the freedom and possibilities I have. Now, I maybe be biased in how I view my options.
Which is why I said, maybe I should find a career coach.
The way I see it: no job at FAANG means less secure freedom. There is a lot of freedom to be had as an entrepreneur, or as an artist. It's also a lot less secure. There are indeed drawbacks for being in golden handcuffs and not having a lot of free time when working at FAANG. But as far as I can tell: while the freedom is skewed towards money and not time, if you don't have lifestyle inflation and save up the money, you can retire quite a bit earlier.
I want freedom. I want to retire earlier.
And now that I know that I have to work at least until I'm 67, because I can't get an amazing career start, that hurts. I know it's a spoiled statement to make compared to the rest of the population and perhaps even an insult to the world to consider this normal. Nevertheless, I've worked for this goal in particular and I'm seeing nothing of it back. My family has worked at this as well, they did their best into letting me succeed. Yet, I spectacurlarly failed.
I'm not worth less because of it, but financially I am worth less because of it. And because I'm worth less financially, I am able to do less with the life that I want to do.
Of the waking hours:
- 50% of my life is spent working
- 25% of my life is spent doing mundane tasks
- 25% of my life is spent doing what I want
If I could increase from 25% to 100%, then in a sense I live 4 times as long.
Note: I like programming, but I don't love it. For me programming is similar to physically moving around, except now I'm physically moving around in the digital world. I like to do it when it's needed, but not much more than that. I'm not an athlete (a person who only loves physical movement).
There are so many things that I love (that don't make any money or are very risky). I want to do those things instead, but I've seen with a lot of family members how that turns out (bad). Startup failures are real. Life changing successes don't come around often, if at all. This is even the case when you're a person who does everything right.
Now I know that I have to be happy with living a life like the rest of us: mostly doing things that I don't want to do but have to.
I know I have to grow up in this sense (despite my age), but it's a gloomy future and one I don't get excited by. It feels too boring. I don't really see the point of it other than raising children and doing your best they can live a life that feels fulfilling to them, if you have them already. If you don't, then one should reflect deeply on whether they want to burden their children with a father who feels that life is too boring (because they are mostly doing things they don't want to do) and couldn't care less.
When I was in a similar position, i had to make loads applications, almost a hundred. The ones that came off are the ones i least expected.
I needed this many because in the begining I sucked at interviews, misunderstood questions/what people where after, etc.
Also FAANG will not neccesarily give you the most meaningfull work, there are plenty of smaller firms working on important things in life
FAANG gives you money, in Europe there aren't that many better places to be. I started out with a typical salary and joining Google doubled it, and then raises at Google doubled my salary again over a few years, that has saved me many thousands of hours of work that I can spend on other things in life so far.
I'd say the overwhelmingly most important thing in getting past the first screening rung is your "fit" with the job as determined by HR. They can be downright stupid about putting the fit above technical ability and experience.
The real currency in my experience is one thing - relationships. Do I think this person likes, respects, and would vouch for me? Everything else aside, that’s what people optimize for when they choose who to promote, respond to reference requests, and generally in who they engage with at work.
Oftentimes It seems like it may not even be a conscious behavior, they just know that’s who they have a gut feeling about.
I definitely wish this wasn’t the way of the world, as someone who isn’t a natural when it comes to building relationships in a professional setting. But I also don’t let it get me down. It’s an element of human nature that’s hidden many layers deep in the workplace.
When I finally faced this fact and started devoting some of the time I previously spent on hard skills, I realized it was far and away the more impactful way to allocate my resources.