12 ms·
Ask HN: 8 years working, now 3-4 months off to learn. Looking for advice
I have a Bsc in Software development which was extremely practical and light to non existant on real math or algorithms. Since then I have done very well as a contractor programming mainly in java building webapps for your typical enterprise shops, banks, big energy providers etc.
Now at age 33 I'm considering taking 3-4 months after this contract to take the following 3 courses:
- http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2010/Syllabus/
- http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-- 2011/Syllabus/
- http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-design-and-analysis-of-algorithms-spring-2015/calendar/
I want to stop contracting and apply to a company solving real problems after this process, google, facebook, zalando, amazon, etc..
I have always felt terrified of the google interview process, or any test on a whiteboard for that matter.
In the 3 months, I plan to work 6-7 hours a day and get a tutor 3-4 times a week on chegg.com. If I have time left I would also like to work through cracking the coding interview.
Would love any feedback on this idea, i.e. if I'm missing the mark, or picking bad courses it's best to know now.
- k__ 10y agoYou can "solve real problems" as consultant too, you just need to marketing yourself different. But yes, learning new things is always good. I too 1 1/2 year off to do a master degree in CS.
- gervase 10y agoIf your goal is be employed by a large company with a "Google-esque" interview model, your time will be much better spent working on your interviewing than on learning a broad base of CS knowledge, because that's not what they're going to be testing you on. Cracking the coding interview is pretty good, but you'll go crazy if you just try to work through it straight without any other content to broaden your perspective. I'd suggest doing challenges on Topcoder, Hackerrank, etc. to help reinforce the concepts. These questions are very similar in format (if not content) to those you'll see in your interviews, so it's helpful to get thinking in these kinds of modes. If you're not already comfortable coding on a white board, or talking and coding at the same time, you'll want to work on those as well. Even some simple rubber duck programming will be useful. Note that the above is probably not going to be anything new to you - you've probably already read this in a bunch of other blogs you found while googling. I repeat it only to reinforce its accuracy.
- rahimnathwani 10y agoThis is the best answer so far on this thread. I would add: if you have additional time, it's worth starting to learn about machine learning. More and more problems are being attacked with machine learning models, that a few years ago would have required with hand-coded algorithms/rules or basis statistical techniques. Learning about ML may not help you much with the core of the interview process (algorithms, data structures, and system design), but it will give you a better idea about the types of problems you might want to work on.
- CyberFonic 10y agoGreat suggestion. Buy a whiteboard and a rubber duck and practise away. Take a video of yourself, review and polish. 4-6 weeks should be more than enough. So then you could treat yourself to a vacation.
- dunkelheit 10y agoSeconded. Learning basic CS concepts will be more useful in the long run but for the specific goal of passing google-style interview you are better off practising directly for that. All suggestions here are great but don't forget that whiteboard coding is the main part but not the only part of the interview. Practice answering architecture questions (conveniently, they can be practised without actually building any services) and other types of questions (find out which ones). Also think hard about your goal. "Getting into Google" is too abstract. Google has all sorts of teams, from the ones doing hardcore legacy maintenance to the ones doing some crazy cutting-edge stuff. The catch is that competition to get into more prestigious ones is crazy. Try to figure out (don't know how to do it though) if you have a chance of making a team that does something that you personally find interesting, or you are bound to be disappointed.
- pennaMan 10y ago> Practice answering architecture questions What are some good resources to learn about system architecture?
- 10y ago
- grobaru 10y agoI do not want to discourage you but these companies hardly solve "real problems". Yes they might be challenging and more prestigious but you will probably end up just working on better ads targeting. I mean I do not want to underestimate your skills and intellect but look at what happened to Geohot and I believe he is above your average MIT/Stanford graduate
- vinothgopi 10y agoWhat happened to Geohot? Any links?
- fouadmatin 10y ago"The First Person to Hack the iPhone Built a Self-Driving Car. In His Garage" http://www.bloomberg.com/features/2015-george-hotz-self-driving-car/ http://www.bloomberg.com/features/2015-george-hotz-self-driv...
- arcanus 10y agoThat looks like quite a bit of hype for someone who has not done too much as of late. Cracking the iphone was great, but disparaging top notch organizations (Carnege, Tesla, Vicarious, etc.) sounds more like narcissism than reality.
- chairmankaga 10y agoI believe this is what he meant. 'From 2007 on, Hotz became a coding vagabond. He briefly attended Rochester Institute of Technology, did a couple five-month internships at Google, worked at SpaceX for four months, then at Facebook for eight. The jobs left him unsatisfied and depressed. At Google, he found very smart developers who were often assigned mundane tasks like fixing bugs in a Web browser; at Facebook, brainy coders toiled away trying to figure out how to make users click on ads. “It scares me what Facebook is doing with AI,” Hotz says. “They’re using machine-learning techniques to coax people into spending more time on Facebook."' http://www.bloomberg.com/features/2015-george-hotz-self-driving-car/ http://www.bloomberg.com/features/2015-george-hotz-self-driv...
- xiphias 10y agoCourses are good but not enough. Definately read cracking the coding interview as you wrote and the most important is to solve hundreds of problems on hackerrank, topcoder and similar sites. I think it takes maybe half year to get there, still be prepared to survive for at least a year (optionally move to a country with cheap cost of living). I don't know any tutors as I always prepared alone (and employed by one of these companies)
- jheitzeb 10y agothese are things I might consider if I was in your situation: 1) build something that you think will force you to learn whatever data structures and algorithms you want to learn. Two benefits; learning and having something to show for it 2) ask someone to do mock interviews with you to practice 3) take the coursera ML course - fascinating, useful, marketable skill and hard to do unless you have a couple of months free to dedicate 4) network. Coffee with people IRL regularly
- leonhandreke 10y agoI can't really comment on any of the courses, but taking a few months off to learn and recharge sounds like a great idea if you can afford it. However, the problems solved at Amazon, Google and Facebook aren't necessarily more "real" than what you're solving now. Google also builds a lot of Java webapps. Sure, there are many advantages to working at these companies, but be aware that you most likely won't end up on the team that builds the algorithms for the self driving car or the machine learning powered object detection for photos.
- goldenkey 10y agoIf you think the glory of the big co awaits you, you'll be sorrily dissapointed. I worked for one of the companies listed, it was a shit show. Stick with startups. Do what you love. The only way to solve real problems is to be close to them. And most likely Big Co will put you near a black hole that will swallow you up.
- CyberFonic 10y agoBig Co's are the Black Holes.
- Gnarl 10y agoI echo that. If you really want to go near BigCo's, then try getting in there as a consultant/contractor so you can hover above all the infighting and politics.
- hbhakhra 10y agoGood luck first of all. Sounds like you've done well for yourself thus far. If you got the savings, I would say go for it and take the time to learn. I don't know how helpful the math for computer science course will be but understanding various algorithms is useful for general knowledge and especially for interviews. Once you know basic algorithms, start on cracking the coding interview, hackerrank etc. Lastly, I would say the grass is always greener on the other side, so don't disregard all you have accomplished and all that you will continue to do. If you think you will enjoy a job at a top company, go for it, but don't do it because you think what you are doing is inadequate.
- CyberFonic 10y agoWith your experience in so many application areas, I doubt that so much theory oriented learning would be of much benefit. You are more likely to be hired for your domain knowledge. Based on your plan, you would become better versed in several areas of theory, but still limited to being a Java programmer - which in turn will probably lock you into the enterprise space. Unlikely to give you real problem solving opportunities. @grobaru hit the nail on the head. The established firms you list are either going to hire you for your general programming knowledge or for a specific project. In the latter case domain knowledge and experience is going to be valuable. I think you need to revisit your goals. What industries do you prefer to work in? What domain knowledge do you bring to the table? Look at what languages, frameworks are used in those areas and then get some experience with them. And have you considered startups? Their mission and problem domain(s) tends to be more focused than the big companies.
- MK_Dev 10y agoNot meant to steal your thread, but any advice on picking up good contract work? I'm in the exact opposite situation you're in.
- beachstartup 10y agostart hitting the phones, buddy. there's no secret trick to getting work, it's called sales.
- derefr 10y agoBetter phrasing: how do you pick up contracting work if you have absolutely no connections? I'm not a particularly social person: I mostly just like staying home and working on coding projects in my off-hours. I didn't made friends or "expand my network" at my last few jobs; I just showed up, did work, and went home. People always say "do contracting to save up money if you want to do a startup", but I have no idea how to get off the ground. I certainly have a lot of skills, but I'm not sure who I could possibly sell them to. Is this when I just start cold-calling? I get the sense that nobody on HN is ever really bothering with inbound marketing for contracting services; I constantly see "programming talent is a seller's market" and "just use your network", but never anything about running ads for your services or anything.
- beachstartup 10y agohere's how i did it: start responding to job ads and offer contracting services instead. local or remote. it requires being social and talking to people. if you can't do this, just get a normal job, dude. you're barking up the wrong tree. nobody just sits around and gets contracts handed to them. anyone who tells you that is bullshitting you.
- derefr 10y agoOh, I'm not saying I can't be social. I'm just saying that I wasn't in the past—because of some wrongheaded assumptions—and so don't have a network to build off of.
- 0xmohit 10y agoAdditionally, I'd recommend "Introduction to Functional Programming" [0] by Erik Meijer. Depending upon your areas of interest, you might also want to look into related open source projects and attempt to contribute. Chances are that you'll learn a fair bit in the process. [0] https://www.edx.org/course/introduction-functional-programming-delftx-fp101x-0 https://www.edx.org/course/introduction-functional-programmi...
- umbs 10y agoSince your goal is to clear interview at Google (or companies with similar interview style), I would recommend straight up interview preparation. I have recently found "Elements of Programming Interviews" [1]. For people with 5+ years of experience trying to clear Google style interviews, this is the perfect book for following reasons: + The quality of problems is much much better than the other two books popular in this category ([2,3]). I am not saying problem are hard, but they found a right balance between quality and solvability in interview setting. + The solutions are methodical and of high standard. For experienced people, problems in [2,3] may appear too dumb down. + It has some 260 or more problems covering various areas of CS. By going through this book, you should get CS fundamentals and interview prep in one shot. I have all three books but strongly recommend EPI [1] Elements of Programming Interviews [2] Cracking the Coding Interviews [3] Programming Interviews Exposed. I have no affiliation with authors/publishers of [1]
- FT_intern 10y ago[3] is a good newbie book. It explains basic problem solving techniques and introduces the basic problems/algorithms that many questions are derived or built on top of. [2] has a good soft skills section and is a medium difficulty workbook. I felt that Gayle did a poor job explaining the solution to the problems. I used the book in a guess and check manner. [1] wastes little time explaining the basics and ramps up very quickly. It does a very good job of explaining the problems, although there is an assumption that the reader is advanced. Some problems are so difficult that they would never appear on interviews. If you're starting out fresh, I recommend the sequence: [3] -> easy leetcode -> [2] -> medium leetcode -> [1]
- deleted 10y ago[deleted]
- j_s 10y ago[1] 4.5 stars (227 reviews) $28 https://amzn.com/dp/1479274836 https://amzn.com/dp/1479274836 [2] 4.5 stars (216 reviews) $27 https://amzn.com/dp/0984782850 https://amzn.com/dp/0984782850 [3] 4.5 stars (94 reviews) $16 https://amzn.com/dp/B008SGNJOW https://amzn.com/dp/B008SGNJOW
- mathgenius 10y agoAll of this sounds a bit pre-meditated to me. If you are a "planner" then perhaps this will work for you. The alternative is to just GO NUTS! and pick up whatever random stuff you find interesting TODAY and dig in there. Most of these roads lead to rome, and if you find something that makes you curious, even though you have no idea why, that curiosity is likely to make you 10 times faster at absorbing/processing (and creating) new ideas. For example, you want to do some graphics programming, maybe a raytracer, and that leads to thinking about projective geometry and linear algebra and whoah, a few years later all of that stuff is useful when you end up in a machine learning job. (maybe) But back to the plan, if that's your thing. All the blog posts that complain about the "interview process" seem to be about how they don't understand dynamic programming. So, put that at the top of your list! (And by the way it is loads of fun.)
- mk7 10y agoYes! GO NUTS! Scan the web for most advanced tech and dive in... choose what is attracting you most... try to deeply understand all that -> will be much better for your future work, than math/algorithm courses you mention... BUT if these courses are attracting you most, dive in there and understand them very well!
- derefr 10y agoThat sounds fine if you want to get a job at (wherever) in three years. If you want (or need!) to get one in three weeks, however...
- alexdowad 10y agoIn your 3 months, make sure to limit the scope of what you expect to learn. There is just so much out there, and when you start learning about one thing, that will lead you to another, and another, and another... so be selective about which "rabbit holes" you go down.
- drewm1980 10y agoDepending on how much else you have going on in your life, and how much of that 8 years of salary you saved, you might want to consider getting an engineering degree and gaining some domain specific knowledge; I doubt a few more general CS courses will dramatically change the types of problems you will be considered to work on. I can't speak for you, but most people's concept of "real problems" means that there is a simple and direct way in which they can see people in society benefiting from their work, and those problems tend to get domain specific in a hurry. i.e. if you want to get to work on improving the water people drink or the air they breathe, you're probably going to need to know some chemistry. An upside of being an engineer who also happens to be a good programmer is that your interviews won't be pure coding interviews.
- cenkozan 10y agoI would say find a freelance job from a site like Upwork and work there. You don't have to re-learn everything again.
- eddd 10y ago> I want to stop contracting and apply to a company solving real problems after this process, google, facebook, zalando, amazon, etc.. The bigger the company, the smaller the feeling of doing something 'real'. Just my experience.
- cableshaft 10y agoAlthough the smaller the company, the greater the chance you're going to be working on "It's like Facebook/Instagram/Twitter, but...", with nowhere near the time or resources to even do it properly.
- yogeshp 10y agoHere are some of resources you can use for learning CS topics related to interviewing. You don't have to do all of them, do as per whatever combination suits you. For learning Algorithms and data structures for interviews 1. Coursera courses on Algorithms by Prof Roughgarden 2. Coursera courses on Algorithms by Prof Sedgewick 3. OCW 6.006 as listed above would be good too. 4. Prof Skiena's algorithms course 5. Berkeley CS 61b by Prof Shewchuk for refreshing basic Data structures like Linked list, tree traversals which are not covered in above mentioned courses. For practice, 1. geeksforgeeks.org 2. leetcode.com 3. interviewbit.com 4. careercup.com 5. Hiredintech.com 6. topcoder, hackerrank , spoj etc are good sites for practice in general but their problems are embedded with extraneous information not seen in interviews. For example, interviewer is not going to explain you 2 page story, instead he will tell you directly what needs to be done. In books, 1. Cracking the Coding Interview 2. Programming Interviews Exposed 3. Elements of Programming Interviews Books on Design Patterns 1. GoF 2. Head first design patterns 3. Software Architecture books by Robert Martin 4. Elements of Enterprise Architecture Patterns by Fowler 5. System Design research papers, gainlo.co has many design questions
- ryporter 10y agoI think it's a great idea to study algorithms and math for CS, and that OCW is a very good resource. Also consider taking a Coursera course on algorithms. One taught by Tim Roughgarden started Aug 8. [1] I haven't taken the class, but I've met Tim and seen him talk. He's both extremely intelligent and a dynamic speaker. I wouldn't prepare specifically for the interview yet. I know that others are very skeptical of the algorithms interview, but I conducted it myself many times, and I'd like to defend it. When done right, the goal is to see how you think about algorithms. I didn't care about whether you jumped to the solution as much as I wanted to hear you think out loud. My goal was to decide whether I could see myself developing a new algorithm with you as a peer. For many interviewees who lacked a former CS background, the answer was clearly, "No." You need to have a basic and intuitive understanding of Big-O notation, and you need to be able to develop an algorithm yourself. These courses will teach you exactly that (though you absolutely must do the problem sets as well). Now, it is true that the interview process has its own quirks. So, get experience. Apply to a bunch of jobs, and try to setup interviews with other companies before you even have a phone screen with a company you really want to work for. As with developing algorithms, nothing beats experience. However, I really believe that this step should be secondary to learning the fundamentals. They truly are the basis for the rest. [1] https://www.coursera.org/learn/algorithm-design-analysis https://www.coursera.org/learn/algorithm-design-analysis
- brad0 10y agoShort answer: Understand all of Cracking the Coding Interview. Surround yourself with other developers who know the material well. Long answer: The big 4 hire thousands of engineers a year. They have an interview process that brings in developers who can "get the job done". What I mean by this is that 99% of those thousands of developers won't be building anything groundbreaking. Before you decide you want to work for these guys ask yourself why you want to work for a big company. Is it: - To get away from contracting - do you feel trapped? - You're not learning any more or getting anything out of contracting? - You just want to try something different? - You want to work on a specific team in a specific company because their problem is interesting and unique? Another thing that's interesting - you say the interview process terrifies you. You need to ask yourself why it scares you. A lot of the time when something terrifies you it means that you need to expose yourself to it. Ask yourself: - What's the worst that could happen? (you fail the interview and you're in the same place as you were today, just with more experience) - What do I lose by going into one of these interviews without being prepared (you can't interview again with this company for a year) - What do I gain by going into one of these interviews without being prepared (you get a feel for how the interview process works) Don't be afraid of failure - it's the key to success.
- derefr 10y ago> Before you decide you want to work for these guys ask yourself why you want to work for a big company. The bigcorps are the only people hiring here (Vancouver, BC) that pay anything sensible. :/
- plinkplonk 10y ago4 months is a decent chunk of an MS. Just saying.
- jasonkester 10y agoI think the first question to ask, before you set off on this, is "what happened when you interviewed with google that scared you so bad?" If the answer is "well actually I haven't tried yet, but I hear it's really scary" then maybe a better plan is to go interview with google. They really want to find people who are good at programming computers, which you seem to be. They want that even more than they want to humiliate people with impossible algorithm trivia, believe it or not. Seems like you might save yourself a few months of no fun, and end up landing your dream job in the process.
- cableshaft 10y agoWell if he doesn't get the interview at Google, he'll probably need to wait at least a year and a half before he can try again. So a few months of boning up on the material could save him a year and a half wait before trying a second time. But generally you're right, he should apply sooner than later. But it's not worth it without feeling pretty solid on the material that's public knowledge that they quiz you on. (I'm someone who only had a week and a half to prepare for my interview at Google and I don't recommend that little preparation)
- a_c 10y agoI am curious where you get all those contracts. Isn't it always easier to get an employment, compared with, for example , finding customers, listening to client requirement, dealing tax form, drafting contract, etc?
- fecak 10y agoI'm a mod on Reddit's /r/cscareerquestions, and we get questions like this so often that we created a specific weekly "Big4" thread to address them. Even if your BS in SW had been heavy on math, it wouldn't likely matter much now that several years have passed where you haven't used that education. As others have said, practicing for the type of interview you'll be subject to at these companies is probably a better plan than taking a bunch of online courses. My concern is that you seem to equate "solving real problems" with only a handful of companies, and it turns out that those companies are somewhat known to all have this particular interview style which will require you to memorize algorithms and data structures (even if you won't use those skills on a daily basis at that job). Essentially, you're talking about taking a few months to prepare for the interview that most entry-level candidates with "Big4" aspirations prepare for after graduation. Another option would be to consider whether there are other companies solving real problems (of course there are), and whether or not these other companies would subject you to the same style of interview (probably not). Other companies won't interview the same way, and still solve big problems. I'm not sure if this is something you'd considered, but thought I'd throw it out there.
- triplesec 10y agoThis answer in particular makes sense: don't go with the names, becaue they often hire brilliant people, and you're doing really dull things. Have a search round old HN posts and discussions about that. A smaller or medium sized more tech-oriented (rather thn advertising and huge custimer numbers) company might serve you better! Or perhaps a real startup
- qwertyuiop924 10y agoNeed I even mention that if you're looking to broaden your horizons in programming, you may want to try 6.001/SICP? It's hard, but you'll probably learn a lot.
- known 10y agoJust read http://www.businessinsider.com/best-selling-online-classes-udemy-2016-8?IR=T http://www.businessinsider.com/best-selling-online-classes-u...
- DanielBMarkham 10y agoThe thing I would get into if I were in my early 30s would be DevOps. No matter what you build, it should be going through a pipeline to the cloud. And more and more that pipeline is managed by developers. This is called vertical integration, by the way. Instead of spending your time learning more and more about the arcane details of programming, you might be much better off learning more and more about how and why people ask for programs to be created -- and what happens to them after they're coded.
- ruraljuror 10y agoCheck out the Recurse Center. Their sessions are normally about 3 or 4 months. I am not an alum, but I think you could meet some good people, learn from them, and maybe get some good career perspective. It is free but you would have to find a place to live in NYC.
- jraines 10y agoIs there anything like RC in the Bay Area? Kind of hard to believe if not.
- liamgriffiths 10y agoI would second this - I participated when I took some time off after a number of years of working. My goal was similar to yours too. The environment and community is wonderful for learning and gaining new perspectives. I loved it.
- tomca32 10y agoThis is a great advice. Recurse center (former Hacker School) is a great way to spend 3 months and will get you exposed to so many different fields of our industry. In my batch, there were people making lisp interpreters, robotics, toy operating systems, solving project euler, etc. They also have a lot of great residents, people who come in for a week to hang out, give talks and workshops, such as: Peter Norvig and Evan Czaplicki. If you want to spend 3 months making yourself a better programmer/engineer, Recurse Center is one of the best places to do that.
- JSeymourATL 10y agoGoogle's HR Chief likes to boast in his book, that it’s harder to get a job at Google than it is to get accepted at Harvard. Gaining cutting-edge skills sends a strong signal to the market. And can make you more attractive to recruiters. Don't overlook the professional network piece of making new friends and contacts amongst your fellow students. Those individuals often have inside tracks to hidden opportunities. Here's a review of Laslo Bock's Work Rules > http://www.wsj.com/articles/book-review-work-rules-by-laszlo-bock-1428361249?mg=id-wsj http://www.wsj.com/articles/book-review-work-rules-by-laszlo...
- ianwalter 10y agoI did something similar and in retrospect I wish I had developed a solid routine and stuck to it from the outset. When you're suddenly in direct control of most of your time, it can get easy to get lost in the weeds.
- bmay 10y agoAny recommendations?
- bamboo_7 10y agoWTF is wrong with this industry?!? You have 4 months to train for a better job and the best advice is to spend the time studying interview techniques?? I'm not criticizing anyones post here, but the industry in general. That's where we are? Teaching to the test?? I know, I know, "interviewing is broken" and "that's the way the big companies evaluate you" and all.. but geez! Is anyone else bothered by this? Isn't it possible to get a good job at a good company based on your skills & knowledge rather than interview-ability? I can understand an argument of "well, OP wants to get into Google, and this is the best way", but maybe that means that sights are set too high... maybe it should take longer than 4 months to get a job at Google. Am I taking crazy pills?
- nostrebored 10y agoIf you think that algorithms and math are not applicable to programming at Amazon, Facebook or Google's scale, you really do not understand the work that they are doing.
- bamboo_7 10y ago"If you think that algorithms and math are not applicable to programming at Amazon..." When did I say that??
- nostrebored 10y agoYou said that he's studying interview techniques -- he's studying math for cs, basic algorithms, and algorithmic design. He mentioned that whiteboarding has scared him, he did not say that he was studying only to get better at whiteboarding.
- bamboo_7 10y agoMy issue was more with the answers given here, not the question asked. When I wrote this comment, the top comment and all of the others recommended studying interview questions, not algorithms and math FOR answering interview questions. That's what bothers me.
- sitkack 10y agoMeditate.
- deleted 10y ago[deleted]
- msg 10y agoAmazon engineer here. Before I worked here, I read Steve Yegge's posts on interviews at Amazon and Google. You cannot get information more straight from the horse's mouth. I also agree with the general point that you are better off doing interview prep than your general undergrad algorithms courses. But the catch is that interview prep will lead you back to CS fundamentals anyway. This is a both/and, not an either/or. The other thing I wanted to address is whether working at Amazon can be practical and cool. My team is the full stack physical rentals team. When you press a Rent-Now button on Amazon.com, you enter my team's world. Today, we rent physical textbooks to millions of students every semester, and they all get returned at the same time. We own custom checkout, order management, and return customer experiences. Underlying them is a service ecosystem we built and maintain. To handle the seasonal, spiky nature of our business (back to school, Christmas vacation returns), we use AWS to scale up and down during peaks. Success breeds success, and we're working on category expansion. Twenty engineers in three teams run the software for this business. That is cool. There is an incredibly broad spectrum of work going on at Amazon, from mammoth services to front end optimization and everything in between, including unfortunately some very unhappy firefighting operations. Undergirding it is heavy company investment in builder tools and infrastructure, and excellent engineers. One person's cool is another person's depressing, but I would look at the job listing carefully before writing off a stint at any of the Titans of software.
- ma2rten 10y agoI am going to start at Google in two weeks. Having recently passed Google interviews, I would give you the following tips: 1. Unless they contacted you at LinkedIn or you know someone at Google who can refer you, the most difficult part is actually getting an interview. 2. Apply as soon as possible. They don't mind scheduling an interview 3 months in advance and they will send you preparation material and they will be able to answer questions. (This is specific to Google, I would not do that at most other companies). 3. Check out Quora they have a ton of information about the Google interview process. Also some info, but not so much about other companies. That shouldn't matter because the preparation is mostly the same. 4. I don't think it's a bad idea to follow courses as well. At least for me it would motivate me more if I learned something of value in addition to just getting a job. However, unless you are interested in it, don't worry about Math. 5. As others I would recommend to work through the book Cracking the Coding Interview. I also found the website interviewbit.com helpful. It's similar to leetcode, but they organize the questions by topic and gamified it. This helped me to stay motivated. 6. Also prepare for system design questions. Those are equally important as coding, algorithms and data structures for candidates that have industry experience. 7. Do mock interviews. Ask friends, otherwise there is a YC startup called Pramp.com. They allow to do mock interviews with peers for free. There also services that let you do payed mock interviews with people that actually work at big tech companies. 8. Don't be naive about what impact you can have working at big companies like Google. You are going to work on a small subpart.
- pyman 10y agoPlease stop with all this "I survived the Google/Facebook interview process" for god sake. These type of comments are written by an HR employee or an Evangelist promoting the company. There are some amazing Engineers working in those companies, but some mediocre ones as well. Believe me, I worked with a lot of them. Apple, on the other hand, is an exception. They are all outstanding. My advice: Develop your curiosity. Be adventurous. Travel around the world and learn about other cultures. Then, find a company where you are happy, the smaller the better.
- nostrademons 10y ago
- haack 10y agoI'm curious, by 'Zalando' do you mean the online fashion store? If so I'm interested to know what makes you group them with Google, FB and Co.
- andrew_wc_brown 10y agoI've been professionally been developing for 10 years, and I stay a contractor because the hiring process of companies depresses me. When there is a CS person interviewing me I get depressed because I know they are going to do a sanity check on CS things and I will fail because I don't have Big O memorized. Why it depresses me is if they say, they want to scale postgres, I can come back to them with a working model, and I may utilize CS like-things, but since I can't remember textbook answers its gates me from jobs.
- drwl 10y agoI hate to be /that/ guy but Big O isn't something to memorize. It's a way to evaluate algorithms. You can memorize Big O for certain patterns of code but there are ways to trip you up if you do this. (One example I came across was a for i < n loop, printing out a recursive Fibonacci function. If you memorize Big O you would be tempted to say O(n*2^n) but if you reason through it, it ends up being O(2^n).) So it's best not to memorize Big O. I used to be in the same boat but after working past that initial anxiety and getting started in CtCI and Skiena's algorithms class to further my CS fundamentals, it turns out that the stuff being asked in interviews aren't that too hard. (this is a huge generalization)
- pklausler 10y agoI've conducted hundreds of technical interviews, mostly at Google. It bothers me a lot when I read comments here saying that tech interviewers are just testing trivial knowledge or for memorization of obscure algorithms. (And some are, but they're bad interviewers.) As if you need only memorize the right magic spells, and bang, you're in.
- roronoaZoro 10y agoFunny because i saw this today. https://news.ycombinator.com/item?id=12260512 https://news.ycombinator.com/item?id=12260512 I don't work for amazon but yeah i work in one of the so called top 4 companies.I got lucky to get into a good project. But talk with some google employees and you will be surprised to see how many engineers work on some pretty mundane stuff inside of google. Still i can't process the thought that the OP is not solving real world problems right now as a contractor and would be doing some sort of a dream job after he gets through the google interview process. What exactly is a real world problem?
- adultSwim 10y agoThis is a good idea. Go for it.
- p333347 10y agoI think a top down approach is much better, practical and actually interesting than diving into theory directly. To that end, there are two books that I recommend - Programming Pearls by Jon Bentley & Algorithm Design by Jon Kleinberg and Eva Tardos. These books cover a wide variety of important CS aspects starting with extremely practical problems and scenarios. They are more narrative in style with very limited maths formulas and diagrams, but don't be fooled by that because they are expository, which is often superior to simply following a dry mathsy problem solution theorem proof style. (The Klienberg book says in the preface that it is meant for students who have completed two semester standard CS course, and even includes some proofs, but you may skip those without losing any insight into the solutions or techniques.) These books really pique your interest, and after finishing them you will see the big picture and find sufficient motivation (problem solving wise), and may venture into following proper undergraduate courses with proper textbooks. You might even like to quickly read through Skiena's The Algorithm Design Manual as an intermediary step. This book is a proper 'engineer's book' as in it is basically a catalog of algorithms and data structures with advise and illustration of where to use what. With this approach, you won't be needing a tutor and can gain a lot by self studying at your own pace.
- joelg 10y agoI took 042 and 006 simultaneously, and wish I'd have just skipped 042 altogether. I'd seriously consider jumping straight into 006, and adding something else (SICP, 6.945, learn a new language, or commit yourself to a personal project).
- thedogeye 10y agoMaybe think about traveling internationally, and doing some of this in your downtime on the road. You'll learn a lot seeing how things are done in other countries.
- wh0iscris 10y agoHaving a solid Computer Science background is a must! So do the courses if you think your CS base is not solid enough. Then, solve the "Cracking the Coding Interview" problems all by yourself, hesitate to look at the solutions until you really tried them out. Here is a great resource to prepare for big companies, like Google: https://github.com/jwasham/google-interview-university https://github.com/jwasham/google-interview-university
- tedmiston 10y agoPersonally I think you would learn more from solving algorithm puzzle problems independently than taking algorithms and analysis courses. A couple that come to mind are Project Euler [1] and CodeKata [2]. The problem with most courses is that they teach the very basic types of data structures, a couple search algorithms, etc but not enough. They didn't give me the intuition I was looking for. Alternatively, the most recommended books I've seen for your use case are _Programming Interviews Exposed_ (PIE) [3] and _Cracking the Coding Interview_ [4]. [1]: https://projecteuler.net/ https://projecteuler.net/ [2]: http://codekata.com/ http://codekata.com/ [3]: https://www.amazon.com/Programming-Interviews-Exposed-Secrets-Landing/dp/1118261364 https://www.amazon.com/Programming-Interviews-Exposed-Secret... [4]: https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850 https://www.amazon.com/Cracking-Coding-Interview-Programming...