98
I’m Michael. I was a principal engineer at Facebook from 2009 to 2017, where I was the top code contributor of all time and also conducted hundreds of interviews. I recently co-founded Formation.dev, an engineering fellowship that trains and refer...
PROOF: https://i.redd.it/e74tupgktbx81.jpg
I have a lot to say about what it's like being an engineer in big tech, how to prepare for technical interviews, and how to land engineering roles at these companies. I would also love to hear your stories and give you personal advice on this thread! But feel free to ask my anything!
As an E7 level principal engineer, I made thousands of changes to Facebook across dozens of areas, impacted the entire Facebook codebase, modified millions of lines of code, and interviewed hundreds of engineers. Looking back, the most rewarding part of my time at Facebook was finding and mentoring high potential, early career engineers who needed support - and seeing where those people are today is why I decided to build a company where I could help engineers reach their potential full time.
I saw firsthand how hard engineers strive to build features that add value to everyone in the world. But I also saw how most of the big tech companies are lacking engineers who accurately reflect the diversity of the world they are building for.
Since leaving Facebook, I co-founded Formation.dev, a fellowship program for software engineers. Our team of incredibly experienced engineers, mentors, and recruiters are dedicated to helping ambitious engineers fill in the skill gaps needed to work at FAANG level companies and achieve long-term career success. We’ve helped over a hundred people like Mitch and Tiffany make the leap.
michaelnovati-64 karma
I don't think we'll fully cover this topic here but I have one thing to add which is that all the engineers at Facebook take privacy very seriously when building products. Sure there have been bugs reported and engineering mistakes, like at any company, but focus on privacy first when building new features and products was paramount.
Facebook's biggest mistake was in not understanding how a lot of people interpret the word "user data" differently across the world. Facebook's primary goal with user data is to keep it safe, secure, and protected.
When the press said things like "sell user data", people took that literally and were appalled because no Facebook employee would betray the users like that. But a lot of people interpret "sell user data" as making money in any way from the way data might be matched up, even if that's done safely and anonymously.
ulvain57 karma
all the engineers at Facebook take privacy very seriously when building products.
I think the issue isn't with privacy breaches by accident or by piracy, but privacy breaches by design. And yes, get your point about aggregate or anonymized data, but when cross-referenced with additional data sets, a purchaser of data collected by big tech can pin point an individual and obtain a ton of specific, personal, name-level data on almost anyone.
That's creepy.
The idea of exquisitely optimized and timely offerings coming "organically" on my screen the moment I've mentioned something in a captured conversation with a friend, the subtle shifting of my video recommendations to make me more receptive to ads estimated to be more relevant to my current situation, etc - all of that seems the unavoidable (and mind bogglingly creepy) direction of big tech...
michaelnovati-26 karma
I totally understand the controversial nature of this and I think it's going to keep being a topic all of us, and all big companies have to deal with. All I can say is that even though Facebook is a business, people do genuinely care about this stuff so much more than I've seen people caring at some other companies that have a ton of information on you, so I hope that they can keep working on this productively.
davidgrayPhotography5 karma
They might take privacy seriously on an individual level, but the product as a whole certainly didn't, because when graph search was first introduced, I was able to find users that met very specific criteria. And so was Tom Scott
To see how fine grained you could go, I used the natural language search "Men who are interested in men who attend [my old high school]" and "Women who are interested in women who work at [my workplace]". Both returned a list of people that met that criteria. Yes that information was public on their profile, but without graph search, I would have needed to find each person who went to that school or worked at that company and check their relationship status.
I think they disabled that feature after backlash, but the idea that Facebook the company gives a shit about privacy is laughable. The idea that individuals working there like privacy may not be, and it may be that they're not responsible for the code for collecting using data as they're tiny gears in a larger machine, but you can't take privacy seriously and still work at Facebook.
michaelnovati0 karma
I think this was a bad feature too but that feature did respect peoples privacy settings. The problem was that if people misconfigured their privacy settings a lot time ago and forgot, this would make it instantly discoverable, compared to when it might have been hard to discover in the past.
michaelnovati2 karma
Wow I didn't realize how downvoted my response was, I might have messed up how I communicated that. I would love to keep trying because I feel the only way we can move forward is try to understand.
What I'm talking about above is let's say Facebook is like "we need to add a new feature to upload files to share with friends". The first response isn't "won't people just pirate things illegally!", "won't people upload porn!" it's literally "how will we make sure the uploader can share this with specific people they want to and from an engineering level, only those people can see this file, ever.".
This is a low level of "privacy" that I think is missing the mark. But I've seen drop-everything emergencies and the most senior engineers working on these problems if there was ever an issue. A privacy bug would be a SEV 1 emergency.
I fully acknowledge this is not on the same page as the concerns above, or else there wouldn't be so much polarization, and am eager to shut up and listen.
VisibleEffective95191 karma
The first flaw is that the amount of data that is harvested is way too much and it’s only going to keep increasing with metaverse etc. Were talking geographical location, browsing habits, proximity to other friends/users, the algorithm even collects the amount of time spent looking at certain posts, etc etc etc. Are we supposed to forever trust Meta to be this noble and trustworthy entity that will always handle our data “safely?” Who’s to say rogue employees or a hacker or even Mark or a future exec doesn’t completely change their approach towards user data. You still have all our data, you choosing to sell it “safely” and “anonymously” means absolutely nothing because the possibility for malicious intent still exists.
And more worryingly the data IS ACTIVELY BEING MISUSED to KEEP US ON THEIR PLATFORMS LONGER + DEEPLY INFLUENCE SOCIETY. People are spending more and more time online because the algorithm has just become too good at understanding what will keep a user hooked and addicted. Right now the incentive for Facebook is the money from ads. Let us take a hypothetical example of a dictator who somehow covertly takes over Facebook and slowly influences the world to believe that he is some legitimate God so he can take over the world. Sounds pretty stupid and far fetched right? But it’s not at all. It is very much possible. Facebook has the power to influence the world on a fundamental, psychological level. And that is where the temptation of power and greed WILL lead us down. It already has. The metaverse is nothing but a more immersive extension of Facebook/Instagram. Very literally an alternate universe where Mark Zuckerberg and other Facebook top execs are by definition God since they have created that reality.
The literal only solution to this is for Facebook to make money in a way that does not involve harvesting user data. But the financial incentive is too good not to. So the end point is Facebook will always be an evil company and it has grown too big. I don’t think Apple, Google or Amazon even come close to being as harmful to society as Facebook is
michaelnovati4 karma
Thanks for putting int the time to write up your thoughts, I think we can have a good discussion on this.
- Completely agree, Facebook collects a ton of information, whether the intention is for useful product features, advertising, whether it's secure or not, the fact that they have it somewhere means that there is the possibility for "bad actors" to use it. I would argue that many companies have this problem, like banks, crypto wallets etc... but I would want Facebook to be taking a lead here.
- There are two things in the second paragraph. Facebook isn't actively misusing data and there isn't a single "algorithm" doing this. This is a misconception that was in the Social Dilemma on Netflix that was represented in a way over the top way. But the second part is similar to point 1. If you for a second assume Facebook isn't doing anything too terrible with this data, what would happen if someone truly evil was. And I think that's another important thing Facebook should answer.
- Be open minded to more than just only one solution. Maybe that's the best solution but at least leave the door open :D. Google and Amazon do both collect as much information blatantly in the same way Facebook does. Do you have IMDB TV on Amazon Prime? If you watch shows there, you get commercials for products you were just shopping on Amazon for. Apple is building out an ad network to compete with Facebook, they collect a lot of information that they use internally. I think there are ways that all these companies can do a better job and we should hold them accountable. All four make far too much money to not have to give good answers.
michaelnovati23 karma
It wasn't so giant when I started haha. The people I worked with were really smart, hardworking, and passionate about building things that the people using Facebook loved and found useful. For example, I started a product to support private college campus communities on Facebook and it was really rewarding to see the value that students got from having these safe spaces.
cizzlewizzle52 karma
Any crises of conscience, morals or ethics you ran up against while working there?
michaelnovati-13 karma
There have been some pretty intense internal debates over product features - privacy/information related or otherwise. There are a lot of ambitious employees at Facebook who are also humans who use Facebook and other services and push for different ways of looking at things.
This is exactly why I'm fighting so hard now to help people from more diverse backgrounds get into companies like Facebook. We need need qualified engineers to fight for their views as well.
SalmonGod335 karma
Do you have any insights or thoughts on the debates over the influence of social media algorithms on human behavior and culture, or how social media intersects with mass surveillance? What is your impression of how the leadership in these companies view their responsibility in relation to these issues?
michaelnovati5 karma
I think this question is a beyond what I feel qualified to comment on. You're asking some pretty big questions that people have dedicated their lives to researching and solving!
sonne-tanz30 karma
When I worked at Facebook some years ago, my privacy was invaded by a fellow employee in a retaliatory act after I provided critical feedback about the team’s work. this person instructed a contractor subordinate to access my personal travel history, which included my home address and times and locations of all my lyft usage.
HR investigated and found nothing wrong despite many people at the company protesting this abuse of power.
How often do you reckon things like this happen at facebook but don’t get any traction?
FormerFBEngThrowaway0 karma
I remember your internal post about this, even after these years, so yours certainly got traction even if it didn't get the result you wanted, and I think the way you're trying to frame this here is a bit misleading. It was also after Novati's time wasn't it? It's been some time, but if I remember correctly, the person you had accused was responsible for making some decisions about transportation benefits, and what they had looked up on you was your expense report history.
sonne-tanz19 karma
You are remembering incorrectly. It was a retaliatory measure after surfacing negative feedback about the transport team.
Since lyft profiles were connected to our personal account they were able to see my home address and personal trips. Not my expense reports.
It was an overreach of power that shouldn’t have happened, and when I confronted the individual he replied that he accessed my data because he was “just curious”. Inappropriate. He was clearly trying to “catch me” using company lyft codes after hours per his original request to his subordinate.
The fact that he asked me for coffee so he could “explain and talk about it” also felt super gross.
Accessing someone’s data as part of your scope of work WITHOUT proper business justification is wrong and inappropriate. Full stop. Shocking concept to some people apparently. The only reason I even posted my original comment was bc I saw OP’s earlier comment about fb taking privacy very seriously. That was not the case in my experience.
michaelnovati5 karma
Oh wow, apologies u/FormerFBEngThrowaway, u/sonne-tanz I have no idea what this situation was or any context on this and was talking more generically about HR.
Lvanwinkle1830 karma
How do you justify your work against the disastrous effect it has had on society and the American election process?
michaelnovati5 karma
I left in early 2017 and had plans to leave around the US federal election end of 2016, so I missed a lot of this on the inside and am not qualified to comment on that unfortunately.
I can add one thing that's interesting. While I was there, Facebook really wanted to be a neutral party. When one person said something offensive to another person on Facebook, Facebook wanted that to be handled like it would be in real life, person to person. I don't think anyone was expecting people to want Facebook itself to have more of a voice and opinion on information and they have been working hard to figure this out.
ulvain27 karma
Except there are 2 main issues not addressed here:
1) Facebook's definition of 'neutral' is not one that ensures it doesn't influence people either way, it seems to be one where Facebook makes sure it riles up people on both sides of the spectrum equally.
2) the problem isn't with offensive things being said, but about massive reinforcement bias, creating an echo chamber around everyone, just breached by enough inflammatory content to keep users engaged and keep them engaging others in their echo chamber
To be fair this isn't about your work, though.
Lvanwinkle183 karma
That is a really good point and has made me realize my bias in a question I had asked. Just because one person works at a company does not mean they are defined by that company. I have worked at a major corporation that did not share my values, ultimately leaving as well. So I asked as if Michael was Facebook, answering for their sins and for that I apologize.
I should thank him for the courage to do this AMA and giving us the chance to learn more about his experiences.
nutyourself3 karma
So I asked as if Michael was Facebook, answering for their sins and for that I apologize.
weellllll... sorry but this is the old "was just following orders" excuse. If you chose to work for the devil, you bear some responsibility. Sorry. Just my point of view.
ps - thanking him for his "courage" is bullshit. This is a marketing campaign for his new company
michaelnovati6 karma
Replying to the whole chain here. I think the question was fair and didn't take anything negative from it, being closed minded to well intentioned questions just makes it harder to have discourse on these issues.
The story behind this AMA is I did one spontaneously in this hyper-focused Facebook Group about the Facebook interview process, and people had so many questions and I loved trying to answer them all. I was looking into to a similar one on Reddit and this was the suggested place to go! Definitely scary yeah! But I actually am thrilled most of the conversations are thoughtful and good intentioned.
_klatu_24 karma
Have you heard of Shoshana Zuboff's book The Age of Surveillance Capitalism? Do you think that there is a way to convince Google, Facebook, Amazon, etc to be more socially responsible with how their algorithms shape human behaviours?
michaelnovati24 karma
I'm not entirely qualified to comment but can give some information from from what I've observed.
- There isn't like a single "algorithm" somewhere making decisions. Elon Musk talked about open sourcing Twitter's algorithms after (if) the acquisition goes through and I think this will be really hard. The "algorithm" is a complex set of many pieces. Some of which are indeed more algorithm-like processes that can be written out. Some of them are extremely subtle and nuanced product decisions that impact how people use the product. Knowing just the algorithms I mentioned won't really help anyone with anything, because user behavior is impacted by all kinds of non-algorithmic product decisions. Even seeing the entire source code would not give a good look into this.
- There are people who care at the companies. The way intellectual property treated in the United States, where most of these companies are based, mean that companies have to keep all information about their processes secret. I actually think people would love to talk more about how things work and I think that would be much more effective than trying to have outside experts examine these algorithms.
One-Art-409812 karma
What are you feelings about bootcamps? Do they prepare you for a SWE career?
michaelnovati8 karma
Hey! Good question. It's really hard to generalize, it's like asking "does getting a CS degree prepare you for a SWE career". There are many different bootcamps of all shapes and sizes.
Ultimately it comes down to your personal goals for your SWE career and I would want to give you more personal advice.
If I were to generalize, I would say that I see a bootcamp as a tool to learn basic programming, in the same bucket as things like the Odin Project, freeCodeCamp, CS50, but with more people around to ask questions to or motivate you. Unlike these alternatives, most bootcamps add an expectation to get a job at the end of them and this is concerning to me because people are uprooting their lives based on this expectation. They don't really work for people with zero experience getting any kind of tech-related job at the end and people in this bucket often continue to struggle planting their feet firmly in that CS career after getting that first job.
So in summary, I think bootcamps are a great step in the journey to learning how to program, but I wouldn't do one solely to prepare for a SWE career or expect it to be the final step.
Cal1ie5 karma
I'd like to add to this: I've come from a bootcamp program and I've been a SWE for three years now. I will say, the bootcamp I went to didn't give me a great foundation for my career. It's been quite a struggle, but I'm constantly progressing in my career. I'm self-taught without a CS degree. That being said, How would Formation help those that want to get into companies like Airbnb? How does it differ from a bootcamp? I've been looking into joining Formation, but I'm worried it would be another bootcamp experience. I want to be able to feel confident in code I write and potentially achieve my goal of getting hired at Airbnb/Google
michaelnovati4 karma
Hi! Nice to meet you. We're not a bootcamp and we're more like a personal trainer for your skills and job hunt.
The main differences are:
- We create a personal roadmap of tasks and sessions every week that fits your schedule based on how you did the previous week and the feedback we collect from mentors and assessments.
- As long as you keep committed to your job hunt, we work with you for however long it takes until you get a new job that you are happy with, depending on your goals, so when you look at the placements on paper they are all top tier companies, the last 10 placements are at: Quantcast, CloudTrucks, Meta, Plaid, 1Password, GitHub, Microsoft, Google, Meta, Snap. And took people anywhere from weeks to months (more typical) to get there.
- We have many extremely senior, staff, and higher mentors that are extremely successful in their own careers and really passionate about mentoring. You'll work with different mentors every week and get feedback. Over the coarse of the program, you'll work with approximate 10 to 20 different mentors in 1-1 and small group (3-5 people) sessions.
reporter_assinado12 karma
Hi Michael, my question is about how to become a software engineer.
I started coding a little while ago, am learning some languages and am thinking about making a loan for graduation (btw I am from south america).
How important is the degree as an engineer? Could I progress without one? Aside from bootcamps, any other good suggestion for someone aspiring to someday be a software engineer? Thanks!
michaelnovati10 karma
Hi nice to meet you. So at the top tier tech companies, a degree really isn't that important or a requirement to get or do a job in most cases. But that said, if you are in South America and would want to move to the United States, where most of these companies are based, then you might have immigration issues not having a degree. I'm not a lawyer, but I'm from Canada originally, and know that not having a degree can make it harder to physically go to the USA.
There could be a few paths. There are some decent engineering markets in South America, like in Brazil, parts of Mexico, Columbia. I would maybe see if you can get a job at a company there is EITHER one of the leading South American based tech companies OR a company that does a lot of work for a big tech company in the USA. Once you have a year or more experience on paper that will get you more interview opportunities and you can go from there.
Additionally, it's a really good time right now to work remotely as many companies, like Airbnb, are supporting remote work. I don't know the laws in your specific country, but if you are employed at a local Airbnb office for example, your country might have employment laws about you should look into (for example if there is a job posting that requires a degree, and you get it without a degree, someone might be able to sue the company because they gave the job to someone not meeting the qualifications... this is a hypothetical but I've seen stuff like this in some places)
FrozenSoviet9 karma
Hi Michael,
We often hear a lot about interview advice for new grad/entry level roles, but often it's a bit more nebulous what the expectations are for more experienced positions.
I'm curious how interviews may differ for non entry level roles (e.g. E4-E5 at Facebook), and do you have advice for someone with 5-10 years experience in the industry trying to break into a mid level FAANG role?
michaelnovati9 karma
Hi! At Facebook the interview process is the same for all individual engineers (ICs) E4+. In the onsite you'll do 2 coding interviews, 1 half coding/half behavioral, and 1 system design (SD) (sometimes adapted to your role, like product or frontend).
The key difference is the expectations in the SD interview. A more junior person will be tested on their approach and more basic knowledge of various pieces of a large system. A very senior candidate will be tested on their ability to give more alternates, more pros and cons, and more thoughtful examples leveraging their existing experience. Experience with big scale products can't really be faked, so this interview is aiming to test and calibrate that experience against Facebook's bar.
michaelnovati9 karma
I can assure you that all the people I know that work there and have worked there are not. That said, why do "seem" that way is that I think Facebook has has done a really bad job explaining certain things publicly.
livestrongbelwas7 karma
What criteria do you use to determine when it’s time to pivot to a new career path?
michaelnovati7 karma
While I haven't pivoted careers, I did have a pivot in college. My college program was structured to let you choose a career direction in your 3rd year. I was expecting to go into Physics or Nano-engineering and hardly took any computer programming course in my first two years.
For me: passion. I loved reading articles about nano-engineering and black holes, but I would get distracted and my mind would wonder. When I start programming on something that I'm passionate about I almost can't stop. I dream about ways to make the code better. I think it's a very privileged position to be in to even explore these passions, which is why I try so hard now to help people who discover that passion later on to efficiently nurture it to make it a career.
msjenniferlc7 karma
Apart from experience, what sets great candidates apart from good candidates during the interview process?
michaelnovati7 karma
Hi, so in my experience each type of interview is hyper focused on specific things, so I can give those things for each type:
- Data structures and algorithms: the "technical" (j.k.) term is "clean code". If someone naturally writes well organized code, minimal logic on the first try (no extra if statements or loops... even if they clean them up afterwards), that's always really impressive. Pro-tip: if an interviewer tells you your code looks "really clean" you probably passed that interview ;)
- System design: if it feels like an exciting back and forth conversation more than interview that's fantastic. Like I'm talking to a peer casually about the problem.
- Technical behavioral: this is a wider bucket, but strong career trajectory at your current company is very impressive, like being promoted every 6 months, or receiving really high (like top 5% at your company) performance reviews.
michaelnovati2 karma
I was trying to use the LOC as a an example of the scope of my work. I was also a person who cranked out code and they created the Coding Machine Archetype for me to get to the E7 level. And yes, talking about LOC and PR count annoyed a lot of people at Facebook too :P.
A superstar sports team needs the best people in the best positions and each person has impact in different ways.
sickofgooglesshit1 karma
Just reminds me of people at Google with massive LOC counts for doing nothing more than moving protos ;-) I'd be more curious about how you pushed back on a Bad Decision like say, user privacy or simplified an approach to a systems challenge that might have otherwise been a costly mistake, I mean, for an L7. :=D
michaelnovati4 karma
My L7 level impact came from not just the raw code output, but pushing the entire company to care more about code cleanliness. This started as the "Dead Code Society" (tshirts and all) to encourage people to refactor and get rid of old abstractions and tidy up. If I stayed longer that might even have evolved into L8 level impact.
michaelnovati4 karma
I spent a lot of time working on Facebook Groups and I saw some very incredible ways that Facebook has helped people in creative ways. There are billions of people in the world and we all have flaws and good and bad aspects to us. I hope Facebook is the same and I know they are striving to improve and if we all had that kind of intense pressure to improve ourselves, society would probably be a better place.
michaelnovati14 karma
Yeah, I'm friends with Zuck and he's always been really nice and I don't get a lot of the portrayal! He's super competitive, and strategic, but he would ask how I was feeling when I was sick, and send gifts and what not.
Kinto_il5 karma
What separates the various levels of engineers in companies? For example what's the difference between an E6 and E7?
michaelnovati7 karma
The difference between 6 and 7 is a big one. When I left about 15% of all engineers were E6 and around 1% were E7.
At E6, you are basically doing an incredible job across the board. You are working on important projects, writing a lot of code, reviewing a lot of code, interviewing others, setting team goals, generally setting an example for a department.
To get to E7, you need to have a "superpower" that makes you unique and have a org/company wide impact. Facebook has created something called "archetypes" to summarize those superpowers. I was the "coding machine" archetype, which was created for me actually, and is a rarer one. Other ones included Generalist, Specialist, Fixer, PM/Eng Hybrid.
I commented below about E3, E4, E5: https://www.reddit.com/r/IAmA/comments/ui98mg/comment/i7btvqe/?utm\_source=share&utm\_medium=web2x&context=3
RockChalkLonghorn5 karma
For those trying to break into tech, how do you recommend making your application stand out among everyone else who is applying to jobs right now?
michaelnovati7 karma
Great question, I have seen a few standout projects. A few points:
- It has to be something you are so passionate about that this shines through when you talk about it. e.g. a former musician who made a machine learning based tool to generate sheet music based on famous composers music.
- It's better if you launch the thing publicly, e.g. app in app store, live website on a real domain you bought. Real people giving feedback helps you learn and gives you more interesting things to talk about in interviews.
T-T-O-M-B5 karma
Congratulations on the new found fellowship. Really interested to hear about the selection process.
How do you select candidates? Is it purely based on skill level and professional potential or does personality also matters?
michaelnovati3 karma
Hi, for Formation, it's based on your goals and your current skill level. One way of looking at it in my mind is that you are starting at point A and trying to get to point B and it will take C time (and D cost). We pattern match to your A, decide if we think we can get you to your B in a reasonable C time (3-6 monthsish) and you are ok with D cost. If all those things check out it should be a win-win.
Some reasons one side or the other have not moved forward are:
- a starting skill level and goal that we don't think we can bridge in a reasonable time
- timeframes that we don't think we can work on
- goals we don't think we can get you to (e.g. we can't help with data science)
Bape718i4 karma
How seriously do you take interviewees with a non-traditional engineering background? e.g. those that are fresh out of a “bootcamp” that claim to be at a senior level. Have you ever found yourself to be more critical of these people whether it be intentionally or unintentionally?
I’m currently going down this path and would love your honest input!
michaelnovati5 karma
At Facebook, there weren't (and still aren't) many direct pipelines for people fresh from bootcamp backgrounds in general.
I hope this answer isn't too complex or detailed but it's the thorough reason why it's IMPOSSIBLE to get a senior (or even mid level) job at Facebook directly out of a bootcamp with no prior professional software engineer experience.
Levels at Facebook are not about raw skills (be it technical or behavioral) but rather they are about your scope of responsibility.
- E3: Entry Level. day to day work at the task level. Receiving tasks from your manager and team, completing them independently with no help.
- E4: Mid Level. day to day work at the feature level. Receiving feature level goals from manager and PM and independently breaking it up into tasks. Being the go to person for that feature and maintaining it in production proactively.
- E5: Senior Level. day to day work at the team level. Helping prioritize features for the team, helping breaking up larger goals into features. Reviewing code and mentoring others. Interviewing and hiring. etc...
Now the KEY is that you get promoted to the next level when you have ALREADY been performing at that level consistently for some amount of time (say at least 6 months but typically longer).
So if you come out of a bootcamp with no experience, you are not equipped with the experience necessary compared to other E4s to justify being at the midlevel. You would also need to have demonstrated that level of responsibility in your bootcmap for 6 months MINIMUM and typically 1-3 years. Most bootcamps are 3 to 5 months and you start from zero, not from the E4 responsibilities above.
So unless there is deception going on, it's not possible and doesn't make sense.
michaelnovati7 karma
Hi! I actually didn't know I wanted to program all day when I started college. I was really into physics and the universe. I wrote a paper on quantum computing in high school. To me, engineers build things, and scientists study things. When I look for the deepest thing inside me that makes me an engineer it's that my drive is to find patterns and connections amongst very large systems/projects. So I like building things in the messy and imperfect world we live in, rather than coming up with interesting ideas on paper.
Zoetje_Zuurtje2 karma
Thanks for answering! That's interesting, I've never considered the messiness/imperfections of the real world a pro, rather than a con.
If I wanted to learn how to code, what would be a good starting point? Currently I'm learning JS at codecademy, but I wanted to know what other options were.
michaelnovati4 karma
Yeah that's a good start! After you are comfortable with the syntax try doing some React hands on practice: https://reactjs.org/tutorial/tutorial.html
If you have some engineering background already and some professional experience in a different area you might be able to do a bootcamp to switch careers.
If you are a student and planning on going to college, I would consider a top CS school and focus on internships each year at top companies.
One-Art-40984 karma
How have technical interviews changed over the years? Why is it still so hard to pass the systems design interview?
michaelnovati4 karma
Good question. Facebook's interview process might seem surprisingly similar for like 10 years, but it shouldn't be surprising. When you have candidates trained in different languages, and working on vastly different companies/projects, you need an extremely consistent interview process to fairly evaluate people and compare them to each other. Behind the scenes there's even more checks and balances to keep the process consistent and fair.
RE: System design. It's hard at Facebook because it's testing for your experience with different kinds of large scale products (whether it's more backend scaling, or highly used user facing products). If you don't have that experience, it's hard to fake it. They have a program called the "Rotational Engineer" program that's a mid-level program for people who never had the "scaled up" experience and need to fill in some gaps. The other thing about Facebook, is that won't down level you to entry level if you have some experience and are weak only on system design.
At Formation.dev now, I work with people who actually have experience and don't know how to connect the dots yet to the FAANG-level system design expectations and have had great success there.
To summarize: if you have the experience and are failing, there are ways to improve your performance for sure. If you don't have experience and are failing, it's hard to fake it, so I would maybe look at the Rotational Engineer role, or maybe look at another company first that has a more knowledge-based system design process.
whatTheCodeIsThis4 karma
Hi Michael, is Formation.dev a bootcamp? I heard those places are scams..
michaelnovati3 karma
Hi, no Formation isn't a bootcamp. We happen to work with a lot of bootcamp grads that were some of the lucky ones who got any job out of the bootcamp to level up to a top tier job. People's negative experiences with bootcamps are one of the reasons we made Formation because we felt bad for all those people who are capable of having better careers but didn't get the personal coaching and mentoring they needed.
I also wouldn't say all bootcamps are scams either. Some programs are bad intentioned, some are good intentioned. My biggest problem with bootcamps is most of them give you the promise of a job at the end and this just shouldn't be part of the offer. They should stick to training basic programming skills and they might have a better reputation.
jindog4 karma
Since you know facebook is helping fragment society, is generally a negative for people's self-image, and contributes greatly to social inequality why would you devote your life to enabling it's continued growth? I understand not knowing all the issues in 2016 but now it's more than clear the damage they are doing to society. More than that, doesn't it seem somewhat deceptive to call a program a "fellowship" but yet you are charging people a percentage of their salary? You made a bunch of money if you want to help people, help people, don't charge them!
michaelnovati3 karma
Hi, I can respond to both questions separately:
RE: social inequality. Before the internet, and still now to some extent, city boundaries and zoning have had a lot of problems with fragmenting cities. There are many experts who are dedicating their lives to these topics so I won't comment much, but humans interacting with humans everywhere have historically had these kinds of fragmentations, and I don't think it's Facebook's fault if they appear there as well. That said, Facebook wants to reduce inequality by hopefully reducing that fragmentation from what happens in real life by making it easier to interact with people.
RE: Formation being paid. "Fellowship" is a word that doesn't really have a common definitely outside of academia, where it has a specific different meaning. We feel what we offer is clearly communicates what we do and would be devastated if people felt deceived, and so far we haven't seen that be the case. Now to answer why we charge:
- If you do your part, we work with you indefinitely until you get a new job, and those jobs have been paying roughly $80K more in compensation on average a year for people. So people see this is an investment in themselves, like personal training, and it's been working well.
- We considered what it would look like to be a non-profit, but we decided not to because we wanted to hire the best engineers, recruiters, coaches in industry. We've been succeeding on this, but those engineers are paid extremely well at their current FAANG-level companies and we have to pay them well. So charging helps up bring the best talent to the company that then helps deliver those win-win results we are aiming for.
vc844 karma
The ability to solve DS&A and system design questions is considered the standard for big-tech technical interviews. Is this really the only thing an applicant need in order to land a role at these companies? Is knowledge about the company stack also important?
For example, if someone with mostly frontend experience, applied to a backend role, then interviewed and aced all technical and behavioral questions. However this candidate has no experience on GO, the primary language in the company stack, and no experience in distributed system. Would this candidate be at disadvantage compared to other candidates who performed worse in interview but have more experience in backend technologies?
michaelnovati4 karma
Hi! I call DS&A table stakes, you need to meet a minimum (and high) bar regardless of the others.
System design at Facebook is used to determine level, so if you are an experienced frontend engineer, you might struggle on a backend interview because you don't have the same experience there.
Finally, technical behavioral interviews (Facebook calls this the Jedi interview) are extremely important. They typically are looking for flags that would otherwise be missed by the other interviews. So someone who studied their way through all the other interviews might fail the Jedi interview if they can't talk about their experience in a way that would be consistent with other people at your level on that team.
To answer the question directly about being disadvantaged: it depends on the seniority of the role and the company. You may or may not be.
justsurfing884 karma
Hi Michael! Thanks for doing this AMA. Is it possible to get a job at FB without CS work experience as a self-taught learner? If yes, what advise would you give to such people?
michaelnovati3 karma
Yeah absolutely. I would want to look at your personal situation. This somewhat hidden website outlines a bunch of paths to look at: https://access.fb.com/career-pathway/
Some of the best engineers at Facebook didn't have CS degrees :D
vanvoorden4 karma
Howdy! Glad to hear you are working on your own company. Sounds really cool!
A question I always like to ask former people of FB is "What's the worst bug you ever shipped?". For example, I once broke composer in the production Big Blue iOS App (the version live on App Store).
michaelnovati2 karma
I can talk vaguely about this because the details might be confidential still. Facebook has a way to run a migration when you want to change an existing data model for something. I ran a migration that had a bug and overwrote billions of edges of data. Fortunately I was able to fully resolve/repair it really quickly, but it was a stressful birthday that year at 4am.
Kozer23 karma
What advice would you give to those of us who are new to being a software engineer?
michaelnovati5 karma
Hi, nice to meet you, I like to give more personal advice because every path is different and I want to find something a little unique about you that I can hone in on.
My most general/therapy-like advice is focus on these four traits:
- Grit: if something doesn't make sense just relentlessly keep trying until it does. Study the same concepts from different angels, debug something diligently line by line until you figure it out.
- Curiosity: never be satisfied with "it just works", keep asking questions until you have a better sense of why.
- Ownership: don't expect anyone to tell you what to do or anyone to have the definitive answer to anything, you need to ultimately be responsible for understanding or not.
- Teamwork: help those around you who are learning. Oftentimes you get better by making the people around you better.
kiwiroll93 karma
What's you advice to newcomers regarding finding the right skillset and passion?
michaelnovati4 karma
Hi! Try a lot of things by building a small few-day-long project (React, backend, web3, machine learning, etc...) and when something clicks, triple down on it and start building a career from it. Once you've settled in, keep exploring more areas.
There's infinitely many things you can do in engineering, and when you start out you don't know what you don't know, so that's why I suggest an iterative approach and starting somewhere.
michaelnovati5 karma
It's really hard. Facebook managers get super stressed and spend weeks on them every year trying to make them fair and people still don't feel it's fair.
I can touch on a few points that Facebook does:
- Require specific examples in all feedback instead of general statements. e.g. rather than "Susan is always reliable when there are bugs!", "Susan jumped in to help me fix 4 important bugs in the past month, and one of them was a hi-pri bug impacting 10M users".
- Make it mandatory to have a certain number of peer feedback submissions during the performance cycle, that have specific examples.
- Create high level guidelines that try to match specific examples of work to behaviors listed in certain performance buckets and/or job levels
- Most importantly, have a calibration process across different teams and different departments. This happens after all the initial evaluation is done to make sure that in that half and that cycle, people who performed similarly have the same rating and outcome across the company. This is the key step to keeping the process fair. You might disagree with the outcome, but if someone else who performed the same got the same outcome, it's still fair.
okidokyXD3 karma
My background is networking/sec/systems admin and I now work as a cloud architect. However I’m constantly debating myself if I should shift more into a programmer role. I coded backend systems that are in production…
What’s your take on system/infrastructure architecture vs software architecture/ programming in terms of competition in the marketplace as well as overall usefulness? Maybe even in contrast to a security role?
Ty for your insights and the AMA!
michaelnovati2 karma
Hi, the lines are blurring a little bit. DevOps (which I'll call cloud architecture in this response) and SRE used to be a little more separate roles, and while they still are, with the shift to cloud services more companies are placing them all together in the big "software engineer" pool. It used to be back in the day that DevOps would be running scripts on proprietary machines and running around hooking up wires. Now DevOps is like writing complex software to manage generic cloud infra, like AWS, GCC, Azure, etc... So even if some companies don't call that "software engineer" there's a big and competitive market for this role.
You absolutely get exposure to large scale systems and the transition to designing those systems is much smaller than other jumps. You might even find that you are already doing all the right things day to day but might just be missing the theory of why. And you definitely have some stories to tell in interviews!
To summarize the marketplace: all of those roles are in demand. DevOps and Infra/architecture are very in demand, and so are general broad SWE roles.
If you do want to transition for interest-sake, look at a company where DevOps is under the same umbrella as SWE, start there, and slowly take on SWE-like work.
manicmillions3 karma
Why are engineers expected to go through grueling multi stage interviews, show "passion" with out of work projects etc. Do managers create gantt charts for fun in their free time? Why can't it just be a job, why is saying you forget about tech when you log off actually offensive to other devs? (Can you tell I'm burnt out? Ha)
michaelnovati5 karma
Hi! I think there's a lot to unpack so the direction I'll go in is about company fit. There's a right company for everyone (often many right companies) and finding that fit makes you 1. happier. 2. perform better. 3. not even think about work life balance - even if you have great work life balance.
I personally love trying to find that fit with people. A lot of people come to us wanting to work only at FAANG or specific even smaller number of companies. And for some people that's the right fit, and for others it isn't. I love trying to help people find that fit.
michaelnovati4 karma
There is a lot to talk about here and probably a lot of opinions.
Do you mean specific languages and frameworks, or more broad areas to look at, like frontend, wordpress, web3?
TomTom25363 karma
Nowadays do you work much in coding the metaverse? Do you see it as the future of our world?
michaelnovati2 karma
hey, I haven't worked on coding for the metaverse yet! ( I have something like 15,000 commits in the past two years working on Formation, so I'm busy in the non-metaverse right now)
I do hop into some Oculus worlds every once and a while, we use this product called Gather to hangout casually at Formation, and Tandem to chat for work related things.
If we look at the richness/engagement of online human to human interaction over time, it's gone from very limited async text, to voice, to photos, to videos, video calls, etc... I think the social side of the metaverse will be about bringing even more richness to our online human interactions. It might not be about funny looking avatars, but just richer interactions. I still have so many text-based chat interactions with customer service for example, where I get really angry and lose my patience in a way I would not in a more face to face context. Maybe the world will be a better place if some of these anonymous interactions have have more human-feeling to them.
EngineeringDevil3 karma
What do you think should be the Entry Level salary for your career? Talking 0xp
So many articles from billionaire owned news papers about how new workers are overestimating their starting salary by +50k but the fact that they are owned by the same people who say Work from Home is bad for the Company makes it all seem sus
michaelnovati3 karma
Hi, entry level salaries depends significantly on the company, location, and role. Levels.fyi is a website that has a lot of information on all these dimensions to compare salaries in different locations.
There are a lot of jobs though that don't pay nearly as much as the FAANG level bar. At the end of the day, the company you are working for has to be making more money by hiring you to justify paying your salary, your benefits, the HR overhead, and having at least some profit leftover. So the successful companies do indeed pay more not just because they have more money, but the impact you are having to the business is very large, even as an entry level.
So you'll find a lot of engineering jobs at non-tech companies where you don't really have enough impact to the business for them to pay you a larger salary. There are also companies that take advantage of people but I wanted to focus on the good intentioned ones in this discussion.
Mana-Elixir3 karma
I’m teaching myself front-end development to start and also plan on learning .node. Apart from HTML,CSS,JS, and .node, do you have anything else you would recommend ?
I obviously plan to learn more than just that and go into backend as well, but I’m breaking it into steps for myself and trying to decide what would be helpful to pick up.
michaelnovati3 karma
Hey, I think that's a great stack to start with and plenty to get into your first role. I wouldn't go too deep into too many different things and I would recommend being better at a smaller number of things for your first job. Demonstrating a little deeper expertise/experience in one area will be more impressive than broad and shallow.
I would recommend being really good with building projects in a single page React app, focusing on depth in React, and passable with CSS. On the backend, being able to run a node server with a simple API that the frontend calls and being familiar with a few different ways to store data would be good: e.g. SQL, Firebase, MongoDB
bugzpodder3 karma
Hi Michael, do you feel there is a (positive or negative) bias in hiring minorities/women as a software engineer in the tech industry?
Does university degree matter after you have relevant work experience? [already answered]
How do you feel about open source contributions on a resume?
michaelnovati2 karma
Hi, good questions. I don't think there is conscious bias, but humans have unconscious biases. Facebook runs this (I believe mandatory) session on acknowledging unconscious biases to try to help surface some of those things. They try to have the interview processes surface these unconscious biases as well. When I left, engineers were encouraged to use gender neutral pronouns when talking about candidates.
I've seen tremendous efforts in recent years across all of big tech to try to get to address demographics that are underrepresented in tech and they are just starting to move the needles a tiny bit. However, even the areas that companies track in their "diversity reports" are a fraction of the hundreds of things we should be tracking and I think this will continue to be something invested in at least a decade to see the results. Formation exists to accelerate this.
Open source on resume can be great. A few suggestions:
- Make it clear the project was open source and what your contributions were to it
- At the end of the day, people are looking for experience, so if the open source project had hundreds of thousands or millions of people using it and had some of the problems a large product would have then you want to highlight those aspects.
- If you open sourced a project, or it's a project with a few people on it that no one really uses in public to a large degree, then that is more like a really good college group project and I would describe it that way.
UnknownWon3 karma
What are the chances of two Michael's both being in the 9 year club?
I'm a senior FE dev in South Africa and am looking at jumping ship to a first world country. I'm self taught, studied construction and after a spinal injury, needed to find a desk job.
I feel like I'm in an awkward position where the standard of frontend dev is so low, that I'm only at an intermediate level internationally - but opportunities to work under international level seniors are skim to none.
Whenever I interview with international companies, I'm hit with interview questions that I feel as tailored to CS grads or the like. I've never had to calculate levenshtein distances for work, but I've had to solve complex responsive designs and manage massive state stores, workers, websockets, caching and the like.
You mention filling gaps, is the interview prep gap the only way to land a good gig? Do I really need to spend my time learning algorithms and edge cases to communicate my value
michaelnovati3 karma
Hi Michael! Sorry to hear about your injury but I'm glad you found something productive that you like doing, that was probably a big unexpected life change.
Yeah not to push Formation but this is the common background we work with to help fill those gaps. So even though you feel a bit isolated, you are not alone in these struggles!
RE: Interviewing. There are a lot of companies out there. The top tier companies often use data structures and algorithms problems as a way to give everyone, with varying experience in varying stacks, an equal experience. If you are aiming for this level of company, you're going to have to invest some time in both learning more theoretical concepts, as well as practicing using them in interviews to pass (which is a different skill). Secondly, your practical experience sounds great, so you probably have a lot of stories to tell in a behavioral interview. The best way I can summarize my advice for those is: 1. choose two of the most impactful stories you have of things you've done. 2. peel the onion: present those with 1-2 sentences each early on, and let the interview ask follow up questions, each time don't go on a diatribe about everything, but peel one layer of the onion.
RE: Gaps more specifically. Even the most senior self taught person who interviews at Google and Facebook will have to do some algorithms. Now in your case, if you are truly super frontend focused, you might be able to find a path where you do more live practical coding than theoretical algorithms. But if you are more full stack, or product leaning, you will need them. You don't need to memorize everything and do all these Leetcode "hard level" problems, but you need to have passable skills. I would start with "Leetcode easy" problems to benchmark how much work you have ahead.
TheGlassKnight3 karma
I’m pushing 40 and I would like to get into engineering. I have a BA in CMIS but it’s been years since I’ve done any coding. Where do I start?
michaelnovati1 karma
Hey, two things I would do things at the same time:
- Look into a short free/cheap online course, like CS50 and get a lay of the land of data structures and algorithms.
- Look into a short free/cheap online course in React. Like Colt Steele on Udemy, or Odin Project. If you have absolutely no interest in the frontend then maybe look into a similar Python course, like at freeCodeCamp
Jealous_Ad58493 karma
What did you think of FBs culture? When I worked there I found it kind of cultish - I didn't feel there was a two way street for dialogue. I felt like everything was top down.
michaelnovati5 karma
I think I benefited from joining early enough that most of the executives knew me personally by name and didn't feel like walled off people making all the decisions.
I was also there when Mark Zuckerberg was positively regarded in the public, unlike today, and there was some amount of cult/worshiping type attitude towards him and the company at that time. I've been watching WeCrashed, SuperPumped, and the Dropout, and I don't remember things being that "cult-like" compared to these stories, but when they make the Facebook dramatization, I'll let you know how I feel haha.
In terms of decisions, now that I work on my own company, which is much smaller, I see how hard it is to make decisions and communicate them to the company effectively. Facebook had/has an internal PR team working full time on how to communicate things within the company. I think that does make internal messages feel a little PR-like. But I always felt like I knew these executives a little more like people.
abitrolly3 karma
I burned out from IT startups and spent several years without a job. Now at 40 I run out of money and IT is the only thing I knew. Do I have a real chance at joining FAANG?
michaelnovati5 karma
When you say IT, I'm not sure if you mean like hands on programming, or other roles in the IT space. You absolutely have a chance at joining a top tier company. I've seen people from all kinds of backgrounds do it. There's someone who was in his 30s, 40s, was a tattoo artist amongst many other things, and was a great engineer!
My only concern would be if you run out of money and can't get the time you need to prepare and focus. Maybe taken a simpler low paying job for a while so you can prepare?
bleatingkansas3 karma
Michael, just how crucial are Friday cherry limeades in ensuring a company’s success?
michaelnovati8 karma
Joking aside, having an organic company culture that gets built up from small traditions like this makes a difference!
thee_accountant3 karma
Earlier this week I was talking with some coworkers about something odd that happened a couple years ago. The next day, my Facebook feed was showing me ads about the topic we were talking about. I did not Google or yahoo this topic later on in the day so there's no reason why it would pop up as an advertisement. How is that possible?
michaelnovati8 karma
Hi! A lot of people have noticed these kinds of things too, even my family. So I haven't been at Facebook now for a few years, but as far as I was aware was absolutely no listening to conversations to show you ads and there also isn't a single reason you would see those ads. These are some of the possibilities:
- You happen to be really similar to others in very scary ways that are almost impossible to believe. Some of these ad providers build profiles based on your demographics and have gotten scary accurate in making predictions about you. For example, if there's a trend forming of people similar to you on paper starting to go to a specific fast food restaurant, you might start getting ads targeted to you for that restaurant. And then coincidentally a friend also similar to you who just went to this trendy restaurant might be talking to you about it around the same time.
- Someone in your house or sharing internet searching for the thing you are talking about without realizing it. Say you are at the dining room table talking with your sibling about something and a parent in another room overhears and searches for it, you might get ads targeted toward your IP address not realizing that other person even overheard you.
RipDankMeme3 karma
I really like what you are doing. I am an engineer working g at one of the big companies. Its a huge road and there is so much talent to compete with. How do I know I'm making an impact, how can I? It seems there is opportunity but I just don't know how to rake advantage of it.
I need mentoring. I never thought of reaching out to a l7 though. You were the peak.
michaelnovati3 karma
Hi, glad to hear you on the road and trying to have a positive impact!
I left Facebook a few years ago and it continues to grow, so I've heard it can feel harder to see the impact.
When you zoom out of the day to day, the promotion guidelines, the performance reviews, try to take a look at what impact your code has had on others.
For me, I like working on user facing stuff because I see the impact (good and bad) almost immediately. I loved (and still love) working all weekend on a tool for a small non-engineering team to make their lives easier, and see them smile when they use it. I loved working on Facebook Groups and seeing the creative ways people were using the features to really have a meaningful impact on the members lives.
To get up to Facebook's E7 it takes a lot of support from a lot of people, and despite being a coding machine heads-down coder, you need to build relationships with fairly senior executives who will be comparing your work to other E7s at the company. Only 1-2%ish (not sure the number now) of people are E7, so it's fairly niche and I would focus first on crushing it across the board to get to E6 (~staff)
okidokyXD2 karma
What’s your recommendation on getting going with coding each day?
I often times postpone actually writing code as the next meeting is in a few minutes and I don’t want to start if I have to interrupt my flow soon…
With that bad excuse I can go days without coding up anything meaningful (it’s not my primary role so it’s kinda ok…)
Any tips on tricking yourself into action :)?
Ty
michaelnovati4 karma
Hey! Haha, I'm similar and I usually spend the first hour or two (or three) in the morning working responding to others, unblocking people, and working with our Fellows to make sure they get the best experience possible.
There are probably a lot of jobs like this but coding is both technical and creative. So having a short period of focus and creative juices flowing can result in not just large amounts, but solving hard problems quickly. Other times it's like writer's block and I just can't get the motivation to do something really simple.
I would doubt this works generically, but when something comes up I add it to my TODO list for today and every day I work as late as I need to to clear out the TODO list until it's empty. If I misjudged the size of something, I break it up and add the rest to my backlog to be reprioritized tomorrow.
meanguy692 karma
Hi Michael, I'm a Salesforce consultant that would like to make the leap into software engineering.
Do you have any advice on how a Canadian can get sponsored to work in the US?
michaelnovati2 karma
Yeah, I'm from Canada and went through the whole process. If you have a college degree in something related to engineering and took some courses in engineering, or have some number of years of experience programming (even if it's salesforce) then you have a good case to take a software engineering role under TN status. Obviously cannot give legal advice, but look into TN status in more details.
The big companies will prepare TN materials for you if that's the path for you. Some experienced lawyers will vet your degree, experience, and ensure the role you are accepting is a good match for the TN rules for that role and make sure you have all the paperwork you need at the border.
Otherwise you have a few other things to look at. If you do a master degree in the USA you can get a different visa through that. And you can look at working in a Canadian office, Toronto has a lot of offices for top tier companies, and then trying to get an H1-B in the annual lottery and move when you get it.
luckyjenjen2 karma
Is it worth it?
I'm doing a pt degree in computing and maths (but will still have to specialise after doing the degree) aiming at debugging I think . Totally honest - I'm doing it for the money - welding and woodworking ain't getting me a pension...
Don't get me wrong, I love it, always have, and am very good at it. But is it actually going to be a career? If so, advice please?
Also, scala? I'm told few can do it? I probably could.
michaelnovati2 karma
Hey, I think it's great you are talking your time and doing a degree over a longer period of time instead of a short bootcamp. From my observations, it usually takes people up to 2 years from day 0 to make a real transition in jobs.
A few things, I think you can try to apply your background. Like maybe look at Autodesk as a target company!
Second, don't choose a language based on market demand if you are willing to work remotely and/or move. Choose the language you gravitate towards to get started and build the fundamentals first.
michaelnovati2 karma
Hey, good question. I feel like this question comes up as well for seed-stage tech investors as well and they all have different answers to how to spot someone with high potential.
I have two different approaches:
- Pattern matching against others. So people who had similar projects/experience in the past and seeing how they performed, and projecting if the person might follow a similar path.
- Particularly unique or interesting experiences/projects/career progression. This might sound like 1. and somethings might overlap, but this is about looking for anti-patterns. People who are so far different from the observed patterns that you want to dig deeper.
Finally, I think everyone is high potential in some ways and finding the right environment to express that is the missing piece that I hope to help solve.
CodeTinkerer2 karma
A few observations
- Given that interviews are different from what you do on the job, how do you prepare? I know they can be quite different. I did one interview years ago where they were still doing brain teasers (Microsoft). One where it was kind of a cross between coding and algorithms, and each person could ask what they want (Google) although some questions were not so much coding but math problems or facts about C. Finally, one which was group questions (my current location) that later I learned asked the same questions of everyone. Oh yes, prior to that, I had an interview that had a written test as well as personality questions as well as brainteasers.
- What's the best way to handle the first few weeks as a new developer where you might not know things (e.g., git, and certainly the code base, and how the team functions)? Is it better to ask lots of questions, or will they distrust that, and then you are stuck. This is impostor syndrome. It seems there's a lack of uniformity where you'd like a good mentor, but not all companies are willing to do that because they want to keep everyone busy.
In this case, I'm assuming ambitious really means skillful. It's possible, I assume, for ambitious to be incompetent.
michaelnovati2 karma
Hey!
- Preparing for interviews is a challenge for most people with experience. The top tier companies general ask similar style data structures and algo questions so if you practice those, you can cast a wide net. The puzzle style brain teasers are less and less common now a days though.
- If you are really rusty, try a book like Cracking the Coding interview to kind of get back in the swing of things.
- I'm a firm believer of the ask as many questions as possible bucket until people tell you are annoying. Most of the failures I see early on are people not asking questions and wasting too much time. So if you ask too many questions people might be a little annoyed but you'll be way farther ahead.
- That said, you should still genuinely try to figure something out first and THEN ask the question about what you did, not about the original problem. e.g. Don't ask "how do I make a branch in git", instead, "I made a branch but I'm getting this error, and I tried what it said in the error and I got this other error, do you have any quick thoughts what I'm doing obviously wrong"
CodeTinkerer2 karma
I've seen less specific questions or questions that say what the want, but not why they want it. In a way, asking "What language should I learn" is much better than "I want to learn C++, how should I do it". The second says they've made a decision, but they don't explain why. By asking them more questions, you can get a better answer.
Either question begs the question, why do you want to learn programming, and what's your background, and even how old are you?
michaelnovati2 karma
It sounds a little random yeah. One thing I've noticed is that smaller companies tend to have less consistent and less well organized interview processes, which makes it more confusing for you as the candidate.
A lot of companies won't tell you why unfortunately because it opens them up to legal liabilities if any of those reasons are interpreted as being because of you identify as being in a "protected class" in the state you live in/the company is in, or federally.
hey-another-one2 karma
There was a previous time (not too long ago!) that I was looking at learning to code and more specifically towards the Swift/iOS engineer route. There really wasn't a ton of bootcamps with a focus on iOS. It was and still looks like by far the majority of coding bootcamps, and just "learn to code!" online courses/materials/resources, is for front-end web dev. If I remember correctly, you ran a iOS bootcamp, Buildschool? It looks like what started there is what you're working on now with Formation (or maybe not directly related but at least the site redirects to Formation 😅). I couldn't work out the logistics on my end at the time because I'm in SoCal and believe Buildschool was in-person out of the Bay Area.
I still have an itch to learn programming by way of Swift because with that you can dive into iOS apps now but eventually I suppose even Apple's framework for AR when that medium rolls around. Was Buildschool getting people from a non-technical/no programming experience, essentially zero to junior-level iOS engineers in 16 weeks? Or was the application process there to filter for students with a technical background with some programming experience? Curious on this point, just so I can set realistic expectations of how quickly I can pick up something like iOS development to an employable junior-level competency - and not think I'm just totally not built for this skill if I don't hit that mark. I'm not great at math so I try to be honest with myself and assume there's a ceiling for me somewhere here compared to software engineers who get hired at FAANG.
On that note, is the Buildschool iOS program material available anywhere now for access/self-study? I'd love to set a personal goal in the coming summer months to learn. Are there any resources or courses you'd point a beginner trying to learn iOS dev like me towards? I've looked into it previously, but was quite overwhelmed at the time because I think there were whole newer courses that focus on teaching SwiftUI from the start, and I've seen other people say that's not a good approach because first principles should be learning to build UI programmatically/UIKit from the start? I've also seen people recommend to dive deep/spend months reading a book just on the language, Swift, to really understand the underlying programming language before diving into iOS development - is that a better approach for a beginner than say a resource that teaches Swift through teaching iOS dev in tandem?
Sorry for all the questions! I don't have a lot of connections in my personal life to software engineers or experience programming aside from writing Hello World in Python once(!), so just kind of piecing together the puzzle on my own.
michaelnovati2 karma
Hi nice to meet you! Good memory! Yeah Sophie spent several years mentoring at bootcamp and used to operate Buildschool to teach people iOS for free. It was a really small program and she personally worked with each person to learn iOS skills from scratch. From all of these learnings and more, we built Formation as a way to offer personalized coaching to a larger, remote audience, while maintaining the same effectiveness/results as having Sophie there 24/7. The material isn't available, but I would say the real value came from having Sophie (a staff level iOS engineer) working with you all the time.
In terms of learning iOS. The market hasn't changed that much in the past few years and it remains difficult to get a top tier iOS with no experience because it's a "specialist" role. The roles do exist! Many of the former Buildschool members have iOS jobs at top companies now, but it took a little longer.
I would suggest trying the apprenticeship path. LinkedIn Reach has a Mobile Apprenticeship for example.
There's actually a Fellow at Formation now who started an iOS app from scratch that got hundreds of thousands of installs and became a business for the person (we are working with person on DS&A and not iOS). That's another option and a great thing about iOS, you can ship your app to the app store and people might actually use it!
Try building an app from scratch and get it in the app store and just jump right in without studying the language first! You'll eventually have to come back and fill in some of the language fundamentals, but it's a good way to get the ball rolling.
Edwardc4gg2 karma
Hey Michael,
first and foremost thank you for what you've created! It's an invaluable tool that i hope people use.
With your time at facebook, how many decisions were made above you that you and your teams had to complete because some higher up who has no clue how it works said to do it?
I'm an engineer too and thankfully we get to sit in the 2nd meetings and discuss technical limitations and time and budgets not to scare people away but just to express how much 'why can't mike do it, he's good' yeah well mike is behind 2 weeks on this other project already kind of deal. At any point in time I have 4-7 tickets from our helpdesk forwarded my way, 50% of those they should have been able to resolve quickly. the others are project related, projects are updated, and most of my days emails and teams meetings. I just hate having to stop my work, because some C level up there said it has to be done and then marketing does something and yada yada yada...you know how this goes. Our stuff doesn't have a big impact, but facebook people worshipped so it kinda did.
michaelnovati3 karma
I can speak to my experience while I was there, but obviously not since I left, since that's all second hand. Day-to-day was extremely engineer driven. You had a lot of autonomy to work on what you wanted. The counter balance to that is that the performance review process is really intense and that's when the "impact" of your word is measured, debated, and compared to others at your level. What "impact" means is hard to define here, but at lower levels there are a lot of examples and the process is about collecting proper evidence via peer feedback to quantify your impact. Executive would review day-to-day and week-to-week work in live meetings with the team leads and give feedback and comments, but rarely top down commands at this level.
That said, the high level decisions were entirely made by the executive team on a less frequent basis, such as quarterly goals. Engineers had less insight and involvement in setting those goals. Mark Zuckerberg, and the other leaders would be working on them.
FalyR2 karma
What has your experience, if any, with experienced hires from places like MBB Consulting compared to people who’ve always worked as engineers been?
michaelnovati2 karma
Well there's title inflation :D. I remember I interviewed a "Vice President Engineer" once and was so confused. The candidate was a solid E5 senior engineer, and we both found the title kind of funny.
Joking aside, I think the work ethics and intensity are similar, but ownership mindset is a tiny bit different. At Facebook, an engineer is an owner, responsible for their code, and they feel pride in seeing their code shipped, and then improving it to make it even better. The mindset in MBB is a little more about doing well on a project and getting good reviews from your clients and partners. I might be zooming in too much, but that's now I see it.
michaelnovati2 karma
Thanks everyone for a great AMA! I was honestly a little nervous about talking about my experiences at Facebook since there's a lot of controversy around it recently, but I enjoyed the great discussions.
If you have more questions keep posting on the thread and I'll try to answer with a little slower response time!
Finally, May the 4th be with all you engineers out there!
michaelnovati3 karma
I write A LOT OF CODE!
https://github.com/mnovati
1,937 contributions in 2022 (so far)
8,887 contributions in 2021
9,165 contributions in 2020
RainThePro2 karma
Do you believe people can still found/invent something like Facebook or mth that becomes big? I mean that some young person who is a casual student can invent something that becomes a big big thing? or do you think that in todays world its not possible really anymore
michaelnovati3 karma
It's definitely possible! Musica.ly (which was acquired by Byte Dance and somewhat morphed into TikTok) kind of came out of nowhere while I was at Facebook and grew to tens of millions of users.
That said, the large companies have too much nuanced knowledge of how to grow and sustain products and it's incredibly hard for a student without any of that knowledge to reproduce this kind of growth effect. Wordle is a recent phenomenon, but the founder worked at Reddit and had some insight into these things.
I think the next big thing is going to be not "social" but something that spawns out of Web3/Metaverse/NFTs and that's why so much attention is in those areas. It's not going to be what we see today, but something new. These ideas are challenging some of the fundamental ways humans interact, so there is room for something big.
one-hour-photo2 karma
Do you believe the act of creating content for social media giants, as a user, constitutes labor that should be paid?
michaelnovati2 karma
Hi, interesting question. I believe on most platforms, definitely on Facebook, that you own your content and can do whatever you want with. You can post it on any number of platforms and Facebook doesn't own it. There are some platforms that are focused on trying to help people make money from their content, Substack is a newsletter platform, Patreon is a platform for video content. None of these have worked to make money from 100% of content and content creators often have to very strategically post content to "free" channels, or to modify content into different formats and post in different places to drive traffic to the paid sources.
So to answer the question, I don't think posting content on social media is payable labor, nor do I think that people should get paid to post socially. I think the best solution is for platforms to give people many options to post content in different ways (paid and unpaid) to a person can decide what's the best way for them to create content.
SequesterMe2 karma
How do I create and log into my account so I can play this game too?
P.S. Do I need a VR headset?
michaelnovati3 karma
Formation.dev VR might be pretty cool! We're small and need to focus. Our primary focus is making sure each Fellow we work with achieves their goals.
michaelnovati2 karma
My view is that both unit tests and end to end tests are important tools for people to work on a large common codebase.
- Tests aren't only a tool to make sure business critical logic is correct, but they are a tool to make it so someone less familiar with your code can make changes quickly and safely by relying on the tests in place.
- I believe testing is also a practical matter depending on the application. Tests are not the perfect solution to zero bugs. So you should always be thinking about what are the consequences of bugs in this code, what might happen, would there be unfixable damage done. So you are ready to both write better tests, and respond if things go wrong.
That said, I have a reputation for not writing tests, but that doesn't mean I don't think they are important.
gruntothesmitey1 karma
How do you feel about being part of the problem and not part of the solution?
Facebook is really, seriously evil and fucked up...
michaelnovati1 karma
Hi, I'm a really middle of the road person, so I think that everyone has good traits, and traits they want to improve, has good days and bad. If we don't believe in the good we can do together then we have no hope, so I spent my time there trying to enable people to do more together than they can do apart.
I'm really sad to see some of the recent problems and pain that people feel towards Facebook. It's so incredibly hard to bring people together who fundamentally disagree on the truth and part of me thinks Facebook is brave for trying, and part of me thinks that they need to push harder and harder to improve.
ibenedict12771 karma
Hi Michael, is there a future for software and big tech that doesn't include harvesting user data and selling it to whoever will pay? It's pretty fucked up.
View HistoryShare Link