What is a typical day like for a software engineer at Google?

Answer by Anonymous:

In short: Google Engineers are pampered!

Typical day starts with:

  1. Get picked up by frequent Google Shuttles near your home

Bike to work or take your bike in the shuttle racks for an evening biking.

2. Free wifi in the bus to start checking your mails, calendar or just browse

3. If you did not bike to work have a workout at the gym

4. Have free breakfast with some variety

5. Some teams have daily standup meetings

6. Start coding. All Engineers either get 2 24" monitors or 1 big 30" monitor.
High end workstation. Ergonomic chair, Ergonomic keyboards. Macbook pro/Macbook air/Linux/Windows laptops!  Bean bags lying nearby.
Attend a meetings. Based on your role you might attend one to tens of meetings every week. Attend meetings at different buildings spread over a vast campus and use shuttle service or help yourself with gbikes.

7. If you get bored have fun with slide

or play

or bowling at

or climb

swim at endless lap pools

or have some refreshments at micro kitchens in less than 100 meters from your desk

or just relax at

7. Get back to work

8. Decide which cafeteria you would like to have a meal today!
Enjoy the different cuisine tasty food with a hell lot of choices.
The number of choices is much more than that for breakfast and dinner

Don't forget the desserts!

9. Get back to work

10. Have dinner again at these amazing cafes and get dropped with the frequent comfortable shuttles.

If its a Friday, celebrate TGIF with snacks and alcohol.

If you want to take a break from these perks you can work from home too :)

Occasionally you would also use onsite haircuts, onsite doctor, massage, attend tech and non-tech talks!
Go for team offsite and ski, snowboard, go-kart or Las Vegas …

The best part is everyday you get to talk to the smartest people, learn and grow!

Google is definitely a dream company!!! Keeping employees happy with great culture and keeping users happy with great products.

What is a typical day like for a software engineer at Google?

 

What are some wittiest ways to skip the question asked by interviewer without jeopardising with selections?

Answer by Subhash Trivedi:

The Intention here when asking questions is to see if the candidate has knowledge about the same, some times this questions are also meant to understand your psychology based on the answers you give.

Hence in case of knowledge based question you should, be honest and reply that I am not aware to this. (if you now some thing related to that question or question topic you can take a chance with interviewer permission and explain the thing.)

In case of question that would check your psychology you should just follow you instinct and say what feels best to you. (trust me you can not cheat on this questions)

Let me know if you need any more information on this.

Thanx.

What are some wittiest ways to skip the question asked by interviewer without jeopardising with selections?

 

What exactly happens during campus placements in Indian engineering colleges?

Answer by Subhash Trivedi:

Every Engineering company looks to hire some fantastic piece of brains, they want to ensure every candidate they hire should be a good. Good at aptitude, Good at Logic, Good at Communication (Differ's between Company to company).

Because i have experienced working with I.T Companies, I will share the campus recruitment process of I.T companies.

Majorly IT companies can be divided into 3 Categories.
1. M.N.C (Companies having offices all over the globe / Companies strength 10,000 + )
2. M.S.E (Companies may / may not have offices across the globe / Companies strength below 10,000 )
3. Start ups ( Companies Just begun, less than 5 years old. Companies strength below 500 )

Each of this above categories have different ways of recruitment. Moreover it also depends if the company is a I.T Services Company or I.T Product Company.

A product company is a company that provides a solution that does not necessarily have a problem. Here is you usually "build a better mousetrap". Product companies compete on technology, using IP or engineering talent to win. Lots of companies in Silicon Valley fall under this category. You are using one of the best product companies in the world right now.

A service company is a company that provides a solution to a problem, but usually without a (physical or sold) product. Usually this is through content, partnerships, video, etc… The Huffington Post is an incredible service company. They solve the problem of political commentary on the web (although there are lots of people doing this). Service companies usually compete on the service or content they provide, not technology. Another example is probably Amazon, who competes on the service they provide.

Product companies normally have very high standard of recruitment and services companies (not all) are more concerned about the head count.

Recruitment pattern of most services companies is as follows:
1. Aptitude/ Logical Reasoning Test
2. Group Discussion
3. Technical Interview
4. H.R Interview
Note: Most big companies (M.N.C's have percentage criteria for being eligible to appear for the Interviews)

Recruitment pattern of product companies is as follows:
1. Aptitude Test ( Technical and Logical)
2. Hands on Coding Test
3. Technical and H.R Interviews
Note: Product companies do not necessarily prefer percentage criteria, but because they want extremely good talent they tend to focus on recruiting from top engineering colleges.

I hope this is useful, let me now if you any more questions.

What exactly happens during campus placements in Indian engineering colleges?

 

What are some best practices for Django development?

Answer by Joseph Misiti:

Here are some things I have learned over the years that have helped me:

1. Try to setup your projects with the following directory structure

/myproject
   /apps
   /configs
   /settings
   /deploy
   /static
   /templates
   urls.py
   fabfile.py

apps – contains subfolders with specific functionality (static, accounts, etc)

configs – stores all configuration related scripts (gunicorn, nginx, celery, mongdb, redis, etc). It's useful because you can use fabric (put command) to copy these over to the correct locations on a server

deploy – contains all deploy scripts, set up in similar manner to this project[1]

A lot of examples you see online put everything into a single fabfile.py, but that gets really messy as a project gets larger. Having a deploy folder that is organized like django-fabtastic allows you to cut-and-paste it over into other projects if you are using the same technologies

settings – a folder (not a file like settings.py) that is setup based on this reference [2]

You could use local_settings.py, production_settings.py etc. but that yipit guys got it right and that is definitely the way to go

static – contains js, css, images, types/fonts

templates – all your html files

2. Use gunicorn[3] instead of apache. If for no other reason, a print statement in code wont crash the entire site. Gunicorn is less bloated and very easy to configure. And large sites like instagram are using it at web scale so dont let people tell you its not a good idea – it will make your job easier and you can leave the office and drink a lot more beer

3. Use celery for anything that can be made asynchronous (sending emails, uploading photos, etc). Dont make the user wait for the request to return, push it onto a queue and let celery do the work for you. Also, do not use rabbitmq as the celery backend, use redis. RabbitMQ is supposedly more stable and messages cant get lost, but it's also a pain to configure and 99% of people can afford to lose a message because a lost message really doesnt matter that much.

4. If you are going to use a SQL-based solution, then use South for migrations. I  have had a lot of success migrating away (completely) from Django's ORM[7] and sticking to PyMongo[5] + MongoEngine[5]. Development is way more fun if you're using MongoDB, if you do not believe me, try it out. Say goodbye to painful schema migrations. Ya, and I know, MongoDB doesn't scale, but guess what, it does.

5. If you need to make a REST API, then use Django-TastyPie[8]. Unfortunately, there is currently no good solution for constructing RESTful APIs if your backend is MongoDB. If I am wrong, provide a link please because no one on StackOverflow could[9]

6. Do not use test.py for unit tests, put them in a directory called tests/__init__.py and import them in that __init__.py file. Also, trying using
nose, it's really cool.[10]

7. Look and good open source project for reference. The most obviously is the Django project itself[11], but Newsblur[12] and Everyblock[13] are also great references:

That is it- that is 3 years worth of trail-and-error for free!

[1] https://github.com/duointeractive/django-fabtastic
[2] http://tech.yipit.com/2011/11/02/django-settings-what-to-do-about-settings-py/
[3] http://gunicorn.org/
[4] https://github.com/ask/django-celery
[5] https://github.com/mongodb/mongo-python-driver
[6] https://github.com/hmarr/mongoengine
[7] https://docs.djangoproject.com/en/dev/topics/db/queries/
[8] https://github.com/toastdriven/django-tastypie
[9] http://stackoverflow.com/questions/8333874/how-do-i-create-simple-rest-apis-in-django-with-a-mongoengine-backend
[10] http://readthedocs.org/docs/nose/en/latest/
[11] https://github.com/django/django
[12] https://github.com/samuelclay/NewsBlur
[13] https://github.com/dkukral/everyblock

What are some best practices for Django development?

 

Which language is best, C, C++, Python or Java?

Answer by Andrea Ferro:

If you are writing an operating system, I suggest you use C.
If you are writing a very complex application where execution speed is extremely important, I suggest you use C++.
If time to market is key, but execution speed is not important, I suggest you use python.
If your boss told you: "do it in Java or you are fired" I suggest you use Java and look for a better workplace.

Which language is best, C, C++, Python or Java?

 

Why should I learn Python if I already know Java?

Answer by Manan Dhawan:

  • Beautiful and elegant.
  • Easier to learn.
  • No fuss of the curly braces {}.
  • You don't have to define the variable type [Python is smart enough].
  • Nice support community.
  • Many companies use it.
    (Dropbox, Quora, Google, Yahoo Maps, Reddit, Youtube, DuoLingo and many more
    Games: Battlefield 2, Civilization 4 and many more)
  • Many libraries available.
  • We dont have to define the datatype of the variables, hence less confusion.
  • A short Example: Comparison: Swap two numbers in python and java
  • Some screenshots from the internet related to the difficulty level.
  • EDIT: Found an xkcd:

PS: I am a Java Programmer.

You may also be interested in the following answer:
Manan Dhawan's answer to What are the best books / courses for learning Python?

Why should I learn Python if I already know Java?

 

How would one explain object-oriented programming to a beginner?

Answer by Avinash Raj:

I haven't seen a better explanation about OOP till date than the one given by a guy who never had any formal engineering training but always had clear idea about everything he did and preached, be it technology,design or art.

Here, in an excerpt from a 1994 Rolling Stone interview, Jobs explains what object-oriented programming is.

Jeff Goodell: Would you explain, in simple terms, exactly what object-oriented software is?

Steve Jobs: Objects are like people. They’re living, breathing things that have knowledge inside them about how to do things and have memory inside them so they can remember things. And rather than interacting with them at a very low level, you interact with them at a very high level of abstraction, like we’re doing right here.

Here’s an example: If I’m your laundry object, you can give me your dirty clothes and send me a message that says, “Can you get my clothes laundered, please.” I happen to know where the best laundry place in San Francisco is. And I speak English, and I have dollars in my pockets. So I go out and hail a taxicab and tell the driver to take me to this place in San Francisco. I go get your clothes laundered, I jump back in the cab, I get back here. I give you your clean clothes and say, “Here are your clean clothes.”

You have no idea how I did that. You have no knowledge of the laundry place. Maybe you speak French, and you can’t even hail a taxi. You can’t pay for one, you don’t have dollars in your pocket. Yet I knew how to do all of that. And you didn’t have to know any of it. All that complexity was hidden inside of me, and we were able to interact at a very high level of abstraction. That’s what objects are. They encapsulate complexity, and the interfaces to that complexity are high level.

How would one explain object-oriented programming to a beginner?

 

Can I get a job in Google as a programmer after doing BCA from India?

Answer by Chetan Bhasin:

Now, that's a question of my interest. I'm in third year of BCA and there was a time when I was absolutely obsessed with getting a job at Google (someday).

First of all, Google is not the garden you hear about in fairy tales. Research well and think more than just once if you'll be comfortable for their work culture.

As far as the jobs are concerned, I'd say there is a possibility. Google is known to hire people with rather *something unexplainable here* educational background; so there is a good possibility that BCA, no matter however small it may appear to you, may still make a mark.

Other than that, it's not entirely necessary for you to go and apply for a technical job at Google as soon as you graduate. Did you consider studying further or trying out other jobs and then diving into Google someday? Well! I have.

Now that all's been said, here is what I'd suggest if you want to get a job at Google or for any high profile tech company for that matter:

1. Code every day. EVERY-SINGLE-DAY. Alright, maybe not "every-single-day", but you get the meaning.
If you're applying as a programmer then I think it's very important that you're good at coding. Try out different languages. Trust me, VB .NET is not something you'd like to code in as a professional. You'll probably be having Java in your course depending upon your University; make sure that you understand it well. Google, to the best of my knowledge, makes extensive use of Java, Python, and C/C++ in their technologies.

2. DO NOT believe that your college will teach you enough. They never will; they never can. That's something I've learned with experience; and I'm not planning to forget in this lifetime or so.
Coding real C/C++ is a hell lot different from coding in a single file in blue screen Turbo C++ 3.0 which is how they code in most colleges here in India (stupid people!).
Give a shot to different and modern programming languages. Have a look at Google's technologies for that matter. Once you understand programming well, try Google's Golang or Google's Dart. There are a hell lot of courses on Coursera which you should enrol in and complete to learn something out of your comfort zone. Make sure you take up only the work that you can do. You wouldn't want to start everything at once and fail at everything.

3. Do something about your Mathematics and Logical understanding if you lack in that area.
I had always been bad at maths. I remember screaming parents and teachers over my head to study. I did not study. These things will not work. Dare anybody tell you how to study and when to study, tell them to shoo away. Make your own study plans and stick to it. Too much pressures does not only screw things up — it kills, for real!
I have started understanding without interference from bad teachers and screaming people. It turns out I get things much better now. Guess, what they say about taking too much stress is right after all!

If you keep in mind these things, you have a possibility of getting a job at Google. There is one thing that I'd like to say though. Do not just limit yourself to Google. If you think you're good enough, you'll have plenty of other things to do too (perhaps even better than a job at Google). I think, you'll learn all that by the time you reach your third year like I did.

That is all I have to say for now. I'll update this answer depending on suggestions and if I think something has to be added.

______________
Update 1:
Answering the question regarding work culture, future plans, and choice of technologies as asked in the comment below.

Every company has a work culture. Google is famous for it's work culture which you should look up on the internet.

MCA? Well, not bad. There is one thing though, if you've done everything nicely in your BCA, MCA would be like BCA again just with more details. There is no point of doing a further degree if you don't get it from a good institution. Why? It's not as much about the degree as it is about learning. Remember, we're talking about knowledge here; it has and will always remain more important than your degree whether or not you believe it.
An option that many people look up to is joining a company with a contract which sponsors your MS degree for places like BITS or VIT. That can be an option, and a good one for that matter.

It is not absolutely necessary for one to know C/C++, but I'd suggest that you do get strong hold at it. C/C++ are languages that work quite close to the machine and they teach you a lot of things which you might skip otherwise.

Java is in 5th sem, but there is nothing stopping you from learning it before then, or learning any other technology for that matter. Hit Coursera that I pointed out in my answer and it should do wonders for you.

So, you like .NET? Good, as far as I know, Google is far from using any Microsoft technology like .NET. I can't be sure about it though. If you really like it then why not try and do something with Microsoft. Plus, you can't really suggest that VB.NET is your only passion while you have not tried other higher level programming languages. Plus, remember most good programmers are not as dependent on programming languages as they are of their basic working knowledge.

At the end, there are different languages. I suggest that you post another question regarding that. I'm also assuming that Quora is full of such questions so maybe looking them up will help. Search the Interneet, read about them. Choose one you like, but in the mean time. Keep working with C/C++ since you're already onto it.

Can I get a job in Google as a programmer after doing BCA from India?

 

Will I get a job as a programmer if I don’t know GUI programming in C++?

Answer by Sergey Zubkov:

You certainly can get a C++ programming job that doesn't involve GUI, I'd even say it's hard (and increasingly harder) to find a C++ job that does. As a personal anecdote, I've been programming in C++ across several industries (telecom, transportation, finance) and never once programmed or modified any GUI.

Will I get a job as a programmer if I don't know GUI programming in C++?