11 ms·
“This week marks the beginning of my 4th year at Facebook”
- kailuowang 13y agoIt seems that it's more of a product oriented (solve problems) culture than an engineer oriented (create something cool) one. Not necessarily a bad or good thing but it's consistent with the impression I got from Facebook in the last couple of years.
- hkmurakami 13y agoI had the impression that Google was engineer oriented but I wonder if this is still the case with their recent refocus into a small number of key products. With that in light, how would we (to the best of our knowledge) characterize some of the big/promitent software players? (FB, GOOG, AMZN, MSFT, NFLX, RAX, DBOX, etc.)
- acchow 13y ago> small number of key products. Are we thinking of the same Google? Google has gotten its hands on everything from niche programming languages to web browser to computer vision and neural networks. This, of course, in addition to its traditional strengths in search, distributed databases, and infrastructure. Yes, they are still an engineering company. Watch the I/O keynote. They are deeply vested in various areas of computer science, machine learning, and distributed systems.
- orangethirty 13y agoYes, Google is still very engineering oriented. No questions about that. It is also one of their issues. They struggle to market products. Facebook on the other hand, is good at marketing products, and is also good at engineering (not as good as Google though). Though Im not saying Google engineers are better than Facebook's. It is the focus of management towards engineering thats different.
- Apocryphon 13y agoI wonder why AAPL isn't ever mentioned in these discussions. They may be chiefly hardware focused, but they do plenty of software.
- hkmurakami 13y agoI intentionally left them out since imo their software serves to augment their hardware and the nature of the beast seems to be a bit different from others.
- CGamesPlay 13y agoI think that's a false dichotomy. Every employed programmer is building software to solve problems. The "product" of that labor doesn't have to be something that a non-programmer uses. For example, our memcached engineers at Facebook are building a product in the sense that other engineers will consume the service that they maintain. The word "product" simply helps to frame the fact that the goal of their work is to build, maintain, and optimize this service. If the work they are doing isn't towards that, then they aren't doing their job.
- alexgartrell 13y agoSo I was a memcached engineer. The memcached team barely works on memcached anymore, because there are no real returns. Being product focused means that it doesn't make much sense to really increase the perf on something when there's other stuff to be done, even if you could do it in a really glamorous way (user space network drivers spring to mind for this -- that'd be pretty cool) Instead, they focus on superior libraries and different use cases that make the stack more efficient. (Mcdipper was my project here). In infra, you are measured by two things: 1) dollars saved and 2) features made possible (in a very global way, sometimes this means business deals). You also get points for the site continuing to work
- samstave 13y agoIt sounds, based on what you say, that they are replacingthe famous meritocracy of google with a technocracy? Is this your impression?
- GuidMor 13y agotime to quit and do something real.
- gkoberger 13y agoNot everyone needs to be an entrepreneur or working at a site that ends with .org in order to be happy, feel successful or make a difference.
- onedev 13y agoYour job must be so miserable that you feel the need to make a comment like this. I'm so sorry about that, but some people have exciting, amazing jobs, and that's no reason to get jealous.
- ericd 13y agoHaving a miserable job and thinking that Facebook is largely a waste of great engineering talent are orthogonal things. I think a lot of good knowledge on the scaling front comes out of it, but I wouldn't say that it's the most efficient societal use of our best engineers by a long shot. I think it's everyone's right to choose how they spend their time, even if it squanders their potential impact, but we generally shouldn't feel proud when we squander it.
- onedev 13y agoRight, changing the way billions of people interact every single day isn't impactful?
- ericd 13y agoOf course it has an impact, I just don't think it's a net positive one.
- onedev 13y agoWhy not? Without FB, I wouldn't be able to connect as much with all the people I've met in multiple places around the world. All people that I care about. I've also met a ton of new people that I otherwise wouldn't have met (e.g. from groups). I connect with the CS community at my school through FB. I connect with people in my class through FB. A lot of discussion happens on FB that I'd otherwise miss or not have the chance to participate in (everyone is extremely busy)
- JacobJans 13y ago"Understand the trade-offs being made and the factors that led to them." As a user of Facebook, this quote explains a lot. I run a Facebook page with 90k+ likes, and have grown to expect it to simply not load completely without refreshing it multiple times. I've long suspected we were the victim of some type of 'trade-off.' It appears my suspicion were correct. We also spend five to seven thousand dollars a month on advertising. I wonder how much more effective our campaigns would be if our page loaded 100% every time.
- jaredsohn 13y ago>It appears my suspicion were correct. The text in your post doesn't support this conclusion (which tradeoffs are causing the behavior?). Just because something isn't working right doesn't necessarily mean it is because of tradeoffs; it could just be a bug (Edit: that they aren't aware of). Also, it seems strange that you are experiencing that problem since many pages have more likes (for example Barack Obama's page has over 35 million likes) and yet load quickly; perhaps the problem is unrelated to the number of likes? Edit: Of course if it is a bug and Facebook is aware of it but hasn't fixed it yet then the reason for not fixing it yet may be due to tradeoffs.
- pavs 13y agoI have experienced the same problem. It happens randomly to random pages and not all of them are high profile pages. I would chalk it up to it being a bug.
- chopsueyar 13y agoWho is your ISP? What type of connection (DSL/cable/fiber/radio)? I have a flaky* DSL connection of 2.6Mbps and I notice the AJAX calls to facebook crap out. * During wind or rain, cuts out for a minute about 4 to 6 times per hour.
- pavs 13y agoI am in SE Asia, its a WiMax connection. The rest of the internet works as it supposed to. The problem I am referring to (not loading completely and sometimes loading completely but not showing all the entries of a page) doesn't happen all the time, but happens often enough to notice.
- CGamesPlay 13y agoThanks for posting, patangay! I wrote the post if anyone has any questions :)
- LukeWalsh 13y agoThanks for the post! I understand from my interview process with Facebook that every engineer screens candidates. What are some things that have impressed you the most of anyone you have recommended for a position?
- CGamesPlay 13y agoI think the most impressive candidates have a mix of 3 qualities: raw ability to program, ability to map real problems into programming problems, and ability to work effectively with other people. I don't expect the ideal candidate to be an ICPC winner or red-rank TopCoder, but they should be able to manipulate code effectively and reason about their programs well. Knowing what non-technical requirements mean in technical terms (i.e. how to build what the customer wants) and what technical restrictions mean in non-technical terms (i.e. what alternatives you can propose when presented with restrictions) is core to being able to build software that solves problems. And since we're talking about hiring people to join a team of other people, obviously I need to be confident they'll succeed in that environment.
- victorhn 13y agoI know there are many red-ranked TopCoders and ICPC winners working on big companies like FB, in your experience does this ability translate well into "real world" programming?
- CGamesPlay 13y agoI'm not really able to look at performance versus TopCoder rank (partly because I don't know my peers' TC rank because I'm not that into TC), but if I had to guess, I would think that there is no correlation. It's simply a matter of where one puts one's developmental efforts.
- shmerl 13y agoI didn't really see what's so specific in this post about Facebook? The same could be said like "it's my X year on social network Y". I expected something specific in the context of Facebook in the post, but I didn't find it there. I'm not a Facebook user though, so may be I didn't understand some implicit assumptions of the OP.
- ahomescu1 13y agoHe wrote "at Facebook", not "on Facebook". It's his 4th year as a Facebook employee.
- shmerl 13y agoAh, thanks for pointing this out, this changes the perspective of the post, so I just didn't pay attention :)
- CGamesPlay 13y agoThe post was written with my younger coworkers in mind but I felt like it was of general interest to all new programmers so I made it public. I don't think you need to understand anything about the Facebook product or company in order to understand my post. The original title here was "FB engineer reflects on his job" but I guess it got changed because that phrase didn't appear in the linked page? I think the other title set context that wasn't needed on Facebook but is in this environment. Apparently an editor disagreed. (Editor, if you're reading, I'd title this "My advice for newgrads joining software companies".)
- shmerl 13y agoThanks, this clarified the point of the post :)
- ChuckMcM 13y agoGiven a 4 year vesting cycle it is the end of the fourth year that is of the most interest :-) Although I've noticed things are a bit more 'shares every year' kind of thing these days to maximize retention.
- axansh 13y agoVery positive attitude and good advice.
- ojr 13y ago@CGamesPlay how did you get a job at Facebook being a college dropout and why did you drop out of University of Central Florida?
- CGamesPlay 13y agoAfter doing an internship at Facebook in college, I received a full-time offer for after I graduated. I never really felt like college was for me and so I asked if they could extend me an offer immediately rather than waiting until graduation.
- hpagey 13y agoI think we may have met on the FB campus when I was visiting some of other UCF interns at FB. I was interning at SFDC back then.
- zerr 13y agoDoes internship to employment transformation imply easier interview process overall? i.e. rather than apply to full-time position directly. Another concern - does this also imply the offer with a below average compensation?
- CGamesPlay 13y ago> Does internship to employment transformation imply easier interview process overall? i.e. rather than apply to full-time position directly. Not necessarily easier, but having 12 weeks of experience working with me gives the company much more context on my software engineering skills than 4 hours of interviews does. > Another concern - does this also imply the offer with a below average compensation? I don't think so. Anecdotally, I've heard that recruiters have pretty fixed packages for newgrads and that I was given a newgrad package.
- anonymous592053 13y ago> This week marks the beginning of my 4th year at Facebook. My > experience here has been incredibly transformative: I joined > Facebook after dropping out of college having never faced the > challenges that I've seen during my time here. At this point, I've > worked through these challenges for longer than 4/5 of the people at > the company and thought I would share some of my insights in hopes > that other engineers who are joining might find it useful. This marks the beginning of my 17th week of unemployment* after being fired from Facebook after about a half a year working there. My experience being fired has been incredibly transformative. I worked through challenges for longer than 1/10 of the people at the company and thought I'd write this alternative viewpoint in hopes that other engineers who might want to join Facebook find it useful. In what follows, I will attempt to only share true stories without any interjection of my own opinion. Though, being fired -- after being enticed with a high salary, accepting a large bonus to move to Silicon Valley, and taking out a lease that you can't afford without a high paying job -- does cause a fair bit of emotional dismay. As a little backstory, I was asked to interview for Facebook by one of their recruiters. I was already employed, but thought it was time to grow professionally. I interviewed with Facebook, and did very well, and was quickly offered a cool salary. Less than a week after relocating interstate to my new home, I started work. After doldrums and threats, which I will discuss briefly below, I was let go, without notice, stuck with a six-month lease in location with a hyper-inflated real estate economy. > As an engineer, your job is to build things that solve > problems. When you first join the company, you're assigned small > tasks and you solve them. As an employee, your job is to make the company money. You are given a variety of disparate tasks to solve, with the ultimate goal that after six weeks, you find the area and team you want to join. But don't get me wrong, you actually are pushed in the direction Facebook would prefer you to go. There are high priority teams and low priority teams. Unless you have a good reason, you better choose a high pri team. > As you grow professionally, the domain of these tasks becomes > larger. It is a mistake to constrain the increase in domain to > larger or more frequent diffs. Code is a tool you have for solving > problems. Weird. Aside from being juggled around as an employee, being given work on front-end, back-end, low-level, and high-level tasks, I was lectured on Facebook's rules of the road: Generate lots of diffs! Bang out code fast! But make sure it's right first time! As I'll discuss next, you also should minimize your interactions with engineers during the code review process. Facebook actually prefers to treat it as a "Code Acceptance (otherwise you're failing)" process. > If you were gardening, you might plant flowers or pull > weeds. Increasing your scope does not mean planting more flowers or > pulling more weeds (though you should expect to be faster and more > proficient at that as you become more experienced). What it really > means is looking up from the ground at the garden in its entirety, > considering how your section fits in, and eventually helping to > decide the whole garden's plan. A nice idea. The way my manager personally handled personal growth of his subordinates is by threatening them. Well, me, at least. If I didn't complete some odd tasks he assigned me by a certain date, I'd be sure not to have a place at Facebook after that date. This occurred on more than one occasion. Despite meeting these demands, it was fruitless, and I was told during a meeting that my bags were packed and waiting for me in the lobby, and to hand over my badge and laptop immediately. > In order to do this effectively you need to have agency. Agency is > the capacity for a person to act in the world. As a hacker, having > agency over your world is critical to fully explore the boundaries > of problems and find how to best leverage your solutions. I'm > referring both to the code that you write and to the interactions > you have within the company. I was given these sorts of platitudes often. I loved exploring code. But I was told to just hone in on the issue I was supposed to solve, not worry about the bigger picture, and to just solve the problem. In theory, the above sounds nice, but in practice, I was told the opposite. Regarding interactions with other people in the company: I was ultimately told by my manager that I should reduce interactions with other developers, and eventually, I was told I was not allowed to speak to other developers at all, apparently to "gauge my performance." After several weeks of complying with this rule, the relationships I developed thus far in the company weakened and essentially evaporated.
- raverbashing 13y agoNice reading This is a good explanation (of what it is to tackle bigger problems): "As an engineer, your job is to build things that solve problems. When you first join the company, you're assigned small tasks and you solve them. As you grow professionally, the domain of these tasks becomes larger. It is a mistake to constrain the increase in domain to larger or more frequent diffs. Code is a tool you have for solving problems. If you were gardening, you might plant flowers or pull weeds. Increasing your scope does not mean planting more flowers or pulling more weeds (though you should expect to be faster and more proficient at that as you become more experienced). What it really means is looking up from the ground at the garden in its entirety, considering how your section fits in, and eventually helping to decide the whole garden's plan."
- skc 13y agoIf we had a minimsft type blog on the major players in tech, I suspect we'd see that they all provide roughly the same type of positive AND negative experiences. It's cut throat out there.
- deleted 13y ago[deleted]
- nglevin 13y agoGood job, and I regret to hear that it seems you were given some bad advice from authority. There's a lesson I learned at around 12 or so, good to learn sooner than later. Don't trust the experts, for the sake of being experts. I probably have a few good burn out stories to share, but since this is a public forum and you're anonymous, let's just say that it's part of the experience. Learn, live, move on, towards something better.
- dave_sid 13y agoIt's funny how people are so interested in the development practices of Facebook as if that's how it should be done. It's a bit like the halo effect, where if the company does one thing right (get lucky and dominate the market by being first), then everything else they do must be right too. If you ask me, they could take what ever approach to development, hiring, training and firing they like and they'd just be as successful. But, none of that stuff is what made them successful. Therefore, I'm actually not that interested.
- dustingetz 13y agounderstand temporary solutions and the priorities that necessitate them, but don't accept a decision that you feel is wrong without raising the issue and getting a better understanding. This is your company (your garden) and if you let people pull in the wrong direction the entire plan will fall into disarray. i'm interested in hearing experiences about what happens when you actually achieve this level of control. I love my garden so much, and have been given sufficient responsibility over it, that I care very much when people pull in the wrong direction. Refusing to accept incorrect decisions -- decisions that will absolutely cause technical debt, overtime, and significant stress and a smaller bonus for us all later in the product lifecycle -- can lead to some interesting and complex social dynamic and this is the biggest thing I struggle with today. Its actually even more complicated because while I feel I am usually correct (who doesn't), there are times when I'm wrong and there are other times where I don't realize I'm wrong.
- greghinch 13y agoI believe Steve Jobs said the reason he took on the role of CEO when he came back to Apple was so no one would be above him when it came to making decisions about the products. My experience has been, when a company is built around a product, everyone at the company wants to think they know what is best for the product, regardless of their actual role and abilities. Installing yourself at or near the top is the only way to actually take control. If you can't get high enough up the ladder in the place you are at, and this is frustrating you, it's time to jump ship and move somewhere you can. Else you will likely become a poisonous influence on the team around you.
- nbm 13y agoThis is something I've often struggled with before I joined Facebook, and it's something I occasionally grapple with there too. Like you, I felt I was usually correct, but had come to the realisation that not only was I occasionally wrong in short-term hindsight (just after the fact), but sometimes only in longer-term hindsight (ie, after I'd learned some lessons further down the road). Ultimately, it comes down to trust and teamwork. I had a much longer post, but: a) Make sure you are doing what you believe to be the right thing for the company as a whole, and that you're armed with as much information as is easily obtainable about it to inform your strong opinion. b) Then, if you are able to believe that the people around you are doing what they believe to be the right thing for the company as a whole (even if you might need to remind them that they should do that) based on the information (and you might need to help them understand what you have discovered) and experience available to them, then your life will be a lot less stressful than if you're the guy that feels they always need to steer the ship. It's also something I've learned more and more about leadership and mentoring: a) It's hard to learn lessons if you're not making mistakes. Telling people how to avoid mistakes in one case doesn't help them learn how and whether to try avoid them in future. b) Choose your battles - expend your influence capital on the most important thing, and don't transform from that person that's been a great help in the past to that person who just tries to meddle in everything.
- bitskits 13y agoI find it interesting that a Facebook engineer would openly compare the company to a "garden", given the criticisms they regularly face.
- o0-0o 13y agoHow many people have cheated on their spouse or committed suicide because of facebook today?