Category Archives: Jobs

Software Engineering Interview with Google

1st Interview

 

It was 27th April 2011 I was just checking out my linkedin profile,  I noticed someone viewed my profile from Google Engineering Recruiter. I got the person email address and just sent my CV to the person. After that immediately the person replied and ask some questions about skills. We exchanged emails regarding my skills several time.

 

Then she was pleased with my skills and asked for available time for phone interview. We agreed on 5th May 2011 for the interview. The interview was friendly and I was really amazed from her friendly behavior. It was about 30 minutes interview just to check out if I am ready for a technical interview with a Software Engineer or with the team they are looking for.

 

Interview topics was related to the pure Computer Science Subjects. It includes Memory Management, Database, Registers of the Processors, Assembly Language, Number Conversions, Algorithms etc. If you are planning for the interview or you are scheduled for one just review those subjects. It’s not an interview to how to code it’s more core subjects of Computer Science. My interview was fare( my point of view). After this interview I received an email on 12th May 2011 stated that “We carefully reviewed your background and experience, and though we do not have a position that is a strong match with your qualifications at this time, we will be keeping your resume active in our system.”… 😛 . But honestly that was a great experience and for the first time I felt that I am giving an interview… 🙂

 

That was the end of my interview process. I was happy that at least they took a phone interview while I left C/C++ coding almost for more than 4 years ago.

 

2nd Interview

 

On 20th June I received an email from another recruiter stating that he saw in their database I chatted with a recruiter on May but my CV is good enough to fit for the post so he want me to give another chance for telephone interview. We exchanged some emails regarding the location I would like to relocate. I choosed Australia. Then he contacted Google office Australia for vacancy and forwarded my email there.

 

From Australia Google office a Software Engineer contacted me and scheduled a technical telephone interview on 7th July 2011. I was excited that time that they contacted second time and it’s now technical interview with a Software Engineer. There communication and behavior was so friendly that they were helping me whatever they can.

 

The recruiter sent me the resource for the preparation of the interview that amazed me most. They really want to hire people and they are doing that often. So he sent me the following preparation tools. I think there was no agreement with me about sharing this resources and it’s public. Just sharing with you if you really want to prepare yourself for the interview with Google.

 

The phone interview is designed to test your CS fundamentals (Big-O notation, coding, algorithms, etc.). I have included some tips and hints about the process below.

TIPS:
* Our interview style may differ from what you’ve experienced elsewhere, and tends to be highly technical. The interviewer will be interested in the specifics of your past projects, implementations and how you arrived at your conclusions. Interview may cover data structures and algorithms (i.e. Big-O Notation). You will be asked to write code.

* Many of the questions asked in Google interviews are open-ended because our engineers are looking to see how you engage the problem. Be sure to talk through your thought process about the questions you are asked, as well as your approach to problems and solutions. Ask specific questions if you need more clarification.

* Think about ways to improve the solution you’ll present. In many cases, the first answer that springs to mind may need some refining. It is worthwhile to talk about your initial thoughts to a question. A brute force explanation will be received less well than taking time to compose a more efficient solution.

LINKS:
Interviewing at Google
Google Products
Google Labs
The Official Google Blog: Baby steps to a new job by Gretta Cook (Google Engineer)
How to Get Hired by Dan Kegel (Google Engineer)
How to get a job at Google, interview questions, hiring process (Google Engineer)
Five Essential Phone Screen Questions by Steve Yegge (Google Engineer)
Types of algorithm questions Google asks (more C++ focused):Top Coder Tutorials
Industry News:Search Engine Land

BOOKS:
(#2 was highly recommended by several engineers and quite representative of the types of coding questions asked)

1. Review of Basic Algorithms: Introduction to the Design and Analysis of Algorithms by Anany Levitin
2. Types of coding questions Google asks:  Programming Interviews Exposed; Secrets to Landing Your Next Job (Programmer to Programmer) by John Mongan, Noah Suojanen, and Eric Giguere

Software Engineers:

Coding
-construct / traverse data structures
-implement system routines
-distill large data sets to single values
-transform one data set to another

Algorithm Design / Analysis
-big-O analysis
-sorting and hashing, searching
-handling obscenely large amounts of data
-also see topics listed under ‘Coding’

System Design
-feature sets
-interfaces
-class hierarchies
-designing a system under certain constraints
-simplicity and robustness
-tradeoffs

Open-Ended Discussions
-biggest challenge faced
-best / worst designs seen
-performance analysis and optimization
-testing
-ideas for improving existing Google products

 

As I was lazy I didn’t prepare for the interview.

On the scheduled day Software Engineer called me on my cell and they sent a link of Google Doc online where I can code. He was like a friend. He introduced himself that he is currently working on Google+ project. First he just asked me some basic questions what I do and what I am working on currently. Then he gave me some problems and asked me to solve that problems using any programming language. As I am now programing in PHP so I code it in PHP and he helped me lot for making the code perfect. It was almost 1 hour interview. I didn’t faced any problem on the interview. Solved all the problems perfectly.

After that interview I received an email on 18th July 2011 same email like before that I am not currently fit for the position….:P

I just shared it with you that it’s not a big deal to apply in Google for Software Engineering position. If you are a graduate of CS or CSE then you can apply. Doesn’t matter you have experience or not. Just apply. Even if you are not planning to work with them at least face the interview it’s a good experience. Google interview was the only interview I felt that I am giving an interview… 🙂

 

How to apply at Google (my experience)

First just look for an Google Engineering recruiter in linkedin or facebook send him/her the CV with a proper cover letter.

And prepare yourself for the interview by covering the topics they mentioned to me. Very simple as like that.

You are failure al ready why you want to miss the chance of success. There is nothing to loose… 😉

My notes on “Getting Real” Book by 37signals

Getting Real is one of the great book by 37signals for developer, designer or entrepreneur. I love the book. A must read book. I wrote some notes from the book for myself.
So I can review it anytime. I thought it might be helpful for others so I shared my notes down. You can read the book free online Getting Real. All the credits goes to 37signals.
Thanks for writing this book.

My Notes for review

The Starting Line Chapter 2-3

  1. Deal with the actual problems you’re trying to solve instead of your ideas about those problems.
  2. Do less than your competitors to beat them.
  3. Solve your own problems. You’ll be the target audience and you’ll know what’s important and what’s not.
  4. Focus on building a quality tool that you and your customers can live with for a long time.
  5. Scope down. It’s better to make half a product than a half-assed product.
  6. Best way to know what your app should be is to know what it shouldn’t be.
  7. Keep your app small and manageable so you can actually enjoy the process.
  8. Let’s focus on what we need to focus on right now.
  9. The leaner you are, the easier it is to change.
  10. Start with a developer, a designer, and a sweeper (someone who can roam between both worlds).
  11. Metcalfe’s Law, that “the value of a communication system grows at approximately the square of the number of users of the system,”
  12. Let limitations guide you to creative solutions.
  13. Smaller companies are closer to the customer by default.
  14. Differentiate yourself from bigger companies by being personal and friendly.

    Priorities Chapter 4

  15. What does your app stand for? What’s it really all about?
  16. Work from large to small. Always.
  17. Don’t waste time on problems you don’t have yet
  18. Find the core market for your application and focus solely on them
  19. If you try to please everyone, you won’t please anyone
  20. Don’t think about scaling problem until you have one.

Feature Selection Chapter 5

  1. Build half a product, not a half-ass product
  2. Cut out the work and thinking that just don’t matter, you’ll achieve productivity you’ve never imagined.
  3. Innovation is not about saying yes to everything. It’s about saying NO to all but the most crucial features.
  4. Build something you can manage. It’s easy to make promises. It’s much harder to keep them.
  5. Build software for general concepts and encourage people to create their own solutions.
  6. Let your customers remind you what’s important. You can’t forget what’s important when you are reminded of it every day.
  7. Ask people what they don’t want. If you could remove one feature, what would it be?

Process Chapter 6

  1. Get something real up and running quickly. It’s ok to do less, skip details and take shortcuts in your process if it’ll lead to running software faster.
  2. Work in iteraions. Don’t expect to get it right the first time. Let the app grow and speak to you.
  3. Come up with ideas (Brainstorm), Sketch it in paper, Make mock up html and then go for coding.
  4. Avoid Preferences like chosing 25,50 or 100 results per page. Don’t put the burden on users while it’s your responsibility.
  5. Value the importance of moving on and moving forward. Take Decisions quickly as accepting that mistakes will happen and realize it’s no big deal as long as you can correct them quickly.
  6. Test your app via real world usage. Get real data, Get real feedback then improve based on that info.
  7. Break the Project in smaller chunks. Break 30 hours into smaller 6-7 hours.

The Organization chapter 7

  1. Unite the team. Hire people with multiple talents who can wear different hats during development.
  2. Make or manage some time at least half of your working time alone without any interruption like email response, phone call, making coffee etc. Make this time completely alone and concentrate in your work.
  3. Don’t have meetings. Reduce meetings as much as you can.
  4. Seek and celebrate small victories. “What can you do and release in 4 hours?” . A simple feature or update and release it.

Staffing Chapter 8

  1. Don’t hire unless you feel extreme necessity.
  2. Give a test project to your new employee.
  3. Hire based on open source contribution.
  4. Hire someone who can wear different hats. Designer who can also write and programmers who understand design.
  5. Hire someone who’s enthusiastic. Someone you can trust to get things done.
  6. If there is few people to fill a position hire good writers.

Interface Design Chapter 9

  1. Design the interface before start programming. Sketch it or making html is cheap and easy to change.
  2. Start designing from core of the project(epicenter). The most important piece of content first then go for 2nd important, 3rd…etc.
  3. Design for regular(The screen people see always), Blank(The screen people see first time) & Error(The screen people see when something goes wrong).
  4. Don’t focus only regular state focus also on blank slate. Because this is the first impression of your project for the users.
  5. Design for when thing goes wrong. Defensive design is like defensive driving.
  6. Consistency is not necessary. Give people what they need, when they need it and get rid of what they don’t. It’s better to be right than to be consistent.
  7. Every letter matters. You need to speak the same language as your audience too.
  8. One Interface for admin and public interface. Just build add, edit and delete function to regular application interface.

Code chapter 10

  1. Less software, less code. Keep your code as simple as possible.
  2. Choose tools that keep your team excited and motivated.
  3. Listen to your code. It will offer suggestions, it will push back and it will tell you where the pitfalls reside.
  4. Regularly put aside some time to pay off your code and design debt.
  5. Open the door for your app. Get data out into the world via RSS, APIs…etc..

Words chapter 11

  1. Don’t write a functional specifications document.
  2. Eliminate unnecessary paperwork.
  3. Write a quick story instead of details.
  4. Insert actual text instead of lorem ipsum.
  5. Think of your product as a person and give it a personality(strict, funny, serious etc..). Use them to guide copywriting, interface and the feature set.

Pricing and Signup chapter 12

  1. Give something away for free.
  2. Make it as easy as possible to get in and get out of your app for the user. Make signup and cancellation a painless process.
  3. No one likes long term contracts, early termination fees, or one time set-up fees. So avoid them. Try to make products bill on a month to-month basis.
  4. Soften the blow of bad news with advance notice and grandfather clauses.

Promotion chapter 13

  1. Go from teaser to preview o launch.
  2. Promo Site with overview, tour, screen captures and videos, manifesto , case studies, buzz, forum, pricing & sign-up and weblog.
  3. Blogging is be more effective than advertising and it’s cheaper.
  4. Share your knowledge with the world and promote through education.
  5. New or interesting features are a great way to generate buzz for your application.
  6. Check who’s is talking about you? Who’s bitching about you? Leave comments on those blogs and thanks people for posting your link.
  7. Promote upgrade opportunities inside the app.
  8. Give your app a name that’s easy to remember instead of a big name. Don’t sweat it if you can’t get the exact domain name

Support chapter 14

  1. Developers/Designers should act as also support with customer. They should hear and answer the customer.
  2. Use inline help and FAQ’s so you wont’ need a manual or training for your customers.
  3. Answer quick to your to your customer email. Don’t use more that 1 hour to answer them.
  4. Don’t consider all the request from the customer. Try to say no.
  5. User forums or chat to let customers help each other. You’ll be surprised how much want to help one another.
  6. Get bad news out to customer as soon as possible. Be honest to your customer. Good news should be trickled out slowly.

Job Sites of Saudi / Gulf / Middle East

Some people posting or asking for jobs. And some or most of us don’t know where to search job in Saudi. So that’s why I tried to share some popular job site links in saudi. If you know more sites please try to write it in comments. I will put it here.

1. http://www.expatriates.com // Good for quick reply and quick job

2. http://www.bayt.com/en/saudi-arabia // One of the most popular job site for Middle East

3. http://mihnati.com

4. http://www.naukrigulf.com/

5. http://www.gulftalent.com/home/index.php

Searching for a job you need patience and confidence. Go to google and search for job in saudi in your field. You might find the company list of your field in Saudi. Take their email address or contact info then post your CV there. If they have a vacancy they will call you. Keep posting your
CV until you got a call. If you got a small offer go for it and gain some experience. If you have good experience and you didn’t changed your track inshallah you will get a good job offer. Best of luck.

N.B. I got all my jobs only by Google search. Without any circular or any job sites. I just posted my CV to the email address.