Chapter 2: How geniuses think.

Before we dive directly into this topic let’s brush up our vocabulary.

  • Grilling –
  • Hardwork –
  • Response –
  • Peace –
  • Procrastination –
  • Potential –
  • Satisfaction –

Reference: Career-advice/does-one-have-to-be-a-genius-to-do-maths/

Update to come soon !!


Preface : Lessons for Life

This is a documentation of what all things I feel is important to be in a correct path. I may speculate on each topic one by one later but for now just this compilation would  suffice.



  1. Habits is all about repetition . So what all do you want to have just repeat that everyday from the time you are awake.
  2. I don’ have time = It’s not a priority
  3. Approximation : 24 * 7 = 168 => 40 hr of Job + 8hr of sleep (56 hrs)  =>72 left hours
  4. cue  => action  =>  reward
  5. Active reading
  6. Pshycological Hacks to deal with any problem

Perspective of a wellwisher :

  1. I think that beating procrastination is your first and main step towards becoming successful. Talking about procrastination, I’ve been struggling with mine for the last 10 years and read countless books and self help methods. Here is what I’m having best results with. First of all, procrastination bulldozer method has worked wonders for me. I highly recommend you apply it. Secondly, whenever you have a task that takes less than 5 minutes to do, do it right away. No delays. I’m really starting to take control of my life now.
  2. when you think you can’t do it. just remember that you are human just like every person who has ever achieved anything in the history of the world.dont be afraid of your dreams and never doubt yourself.there is no reason why you cannot find your fantasy.
  3. “Think big to achieve big things”… If you’re going to dream, dream big right? Learn from these successful people and set them as a role model. These speeches, some of them repetitive from different people, it is because it is true and it can be achieved. I always challenge myself and go beyond my limits because it is the only way I’ll know how strong I am and how far I can go.
  4. cue  => action  =>  reward
  5. Approximation : 24 * 7 = 168 => 40 hr of Job + 8hr of sleep (56 hrs)  =>72 left hours
  6. Friday afternoon – how opportunity cost time
  7. Add 2-3 items in each for life
    i) Career
    ii) Relationships
    iii) Self
  8. Daily Physical Activity
  9. Food Journalling
  10. Meditation
  11. Waking Up earlier
  12. Trying a new thing everyday
  13. Saving Money
  14. Expressing Gratitude – 3 good things everyday
  15. Be process oriented than goal oriented

Habits of a successful person.

  1. Basics of Sleep Hygiene
    • non-weekend (shower + meditation/ dairy / no screen use [30 min] )
    • night time = 12
    • wake up = 7
    • alarm(spin cycle / sleep cycle)
    • avoid naps in day
    • bed is for sleep only
    • productivity skyrocketted
    • use pomodoro technique
  2. Consistency with Bed Time and Wake Up Time
  3. Pre-bedtime Routine
  4. Limiting Screen Use Near Bedtime
  5. The Importance of an Alarm System that Works for You
  6. Other Tips
  7. Unexpected Benefits of Waking Up Early

Reference :

How to Wake Up Early – And Not be Miserable


Pomodora Technique :

The increasing popularity and widespread use of the pomodoro technique is no coincidence – it truly works.

  1. Brief history and theory of the Pomodoro Technique
  2. How to Use the Pomodoro Technique
  3. Distractions
  4. When to Use the Pomodoro Technique
  5. Modifications to the standard 25/5 Pomodoro scheme
  6. How to use it ?
    • Choose your tasks
    • set timer for 25 mins
    • work – avoid checking time on the timer
    • as soon as it rings take 5 min break at different plan (refill water/ washroom)
    • after 4 cycle take 20 min break
  9. WHEN TO USE IT  ++ When you feel dull and the subject seems boring
  10. Use BREAKS ++
    • don’t feel obligated to take break if you don’t need to like when in groups
    • Skips breaks when :
      • reviewing lectures (1 lecture at a time take time break when it ends)
      • research (data analysis or writing)
    • 50 min work / 10 min break is also a good one after much practise
    • might start with 25 min work / 5min break strategy
    • dark chocolate

Reference : Pomodora technique

Nuerobics Technique:

  1. Nuerobics means using your brain in new and different ways involving all of your senses. This will wake up your brain. Here are neurobic brain exercises.
    • Search for coins in your pocket and use your sense of touch trying to figure out what the coin is
    • Close your eyes and walk around your house trying to remember where the furniture is. You are testing your memory and making your memory work in a way it isn’t used to working
    • Invent conversations when watching the tv and the volume is on mute. This is a great brain exercises
    • Do things that get you out of your normal thinking patterns. If you normally read magazines about motorcycles then read a magazine about gardening. Get out of your normal thinking patters.
    • A brain exercise for me is to watch political commentators that I don’t think they way they do. This is a brain exercise
    • Take a new way home. This wakes up your brain
    • Write with your non dominant hand as a brain exercise
    • Close your eyes and try to identify spices by their smell. You are engaging your sense of smell in a new way

========== OR ==============================================================

  1. Less Dominant Hand:…
  2. Cloud Exercise (This is essentially a creative thinking exercise adapted from this Stanford study that asked participants to create a picture from a word):…
  3. Focused Breaths:…
  4. Memorizing Quotes, Poems, Scripture: Page 51 of this book:…
  5. Vocabulary:…


An idea exercise regime :

  1. Jumping Rope 10 min
  2. Find reward for anything you do then only you get the best out of it
  3. 30 min jogging 3 times a week
  4. The exercises provided by the 7 minute workout are 12:
    • jumping jacks (aerobic exercise)
    • wall squats (for legs and buttocks)
    • push-ups (for arm muscles, chest and shoulders)
    • crunches (for abs)
    • step up (for legs and buttocks)
    • squats (for legs and buttocks)
    • triceps dips
    • plank (for abs and flat tummy)
    • high knee run (cardio and abdomen)
    • lunges (legs)
    • Side plank (oblique muscles – hips)
    • pushups with rotation (to train arms, chest and shoulders)

Whatever you focus on the longest grows the strongest



Write your goals / think about your goals / do think and try to relate everything about your goal.


Art of Learning…

you need to fully prep your hobby.You can do that by being specific. For example, I like watching Hollywood movies and my favourite is sci fi genre. As Senjuti Kundu mentioned – hobbies should be active. You should be setting direction/plans/goals for yourself. Rather than passive – such as clicking around a website until you get bored.

Important links to consider:

1. Note-making consumes a major part in our academic life. So it needs special attention to give the best of its usage.

2. Develop the ability to become an active reader (this is the perhaps the most important advice I have to share). Don’t just passively read material you are given. But pose questions, develop hypotheses and actively test them as you read through the material. I think the hypotheses are part of what another poster referred to when he advised that you should develop a “mental model” of whatever concept they are teaching you.

3. I discovered mental modelling as a survival mechanism to pass my studies.

4. Understand how the professor grades. Like the real world, the academic world is not always fair. You need to understand who is grading you and what they are looking for. Oddly, if you actually answer questions as written, you won’t get full marks from some teachers.

5. Get involved in research while still in undergrad.  Academics is a means to an end. To me that end was “solving problems” and “building stuff” specifically systems and organizations.

6. Attend classes. I do not understand the students who claim they did well without attending class.

7. Time management is key — especially in undergrad. In my competitive undergrad program I once learned that a friend who achieved top 5% status actually timed how long he ate.

8. Going out and having fun is conducive to good grades. In my early undergrad years I studied as hard as I could.

9. Learn how to do advanced Google searches. This is an essential skill that enables you to answer your own questions, quickly. At a minimum I suggest you learn how to use the following Google search operators  ~, -,*, AND,OR, and numeric ranges via the double dot (“..”) operator.  The “site:” operator is also often helpful. I also found adding the word “tutorial” to a Google search often yields great introductory materials.

10. Turn weaknesses into strengths. While studying for standardized exams I learned the importance of addressing one’s weaknesses as opposed to ignoring them.  If you make a mistake on a question, it is because of a weakness within you. If you do not address that weakness it will follow you to the exam.


I did an Artificial Intelligence research project.

My Space.. (Competitive Programming )

And finding the right motivation is essential, because learning to program well takes a lot of work.

So my first piece of advice is: reflect on why you want to write software and what kind of software you want to write.

  1. Dynamic Programming (Many good examples, thoroughly covered)
  2. Binary Trees
  3. Arrays and Lists
  4. Java, Collections, Multithreading, Garbage collection and JVM tuning
  5. Algorithms
  6. Bitwise operators
  7. Artificial Intelligence and Pattern matching (Touches some topics in these areas, but enough to get through Google, Facebook interviews).

If you can go through all of its content, you would be very close to your target I would say.
Also you can add your own content to it to make it easier for you to return to it later on.

1. For Data Structures, “UNDERSTAND” all the concepts from here Data Structures – GeeksforGeeks.
2. Try your hand at the online judge, especially LeetCode
3. For Algorithms, read this Introduction to Algorithm by T.H Corman
4. Read the book Cracking the interview by gayle.

Now coming to the part where you probably are thinking ” How the hell should I start off with all this ? “

There is nothing new that I would be able to tell you. So I would rather quote what Anudeep Nekkanti has to say :

If I am to start programming now, I would do it this way

  1. Solve 200 most solved problems on SPOJ, Problem by problem. In 2 months.
    (This will teach all standard problems, algorithms and implementation skills)
  2. Solve problems from CodeChef and CodeForces for 2 months.
    (This will teach variations, we can read others solutions and learn better ways. Skip easy problems)
  3. Solve problems from TopCoder for 2 months.
    (This will teach  Dynamic Programming. Div 1 500p)
  4. Check past ACM ICPC Regional’s Problems
    (Great quality problems)

If I am to learn a new Algorithm now, I would do it this way

  1. Read it from at least 3-4 different sources.
  2. Understand correctness proof and run-time analysis.
    (This is very very important, you will know it only when you  deal with non standard  and hard problems)
  3. Question yourself on every step for correctness. Try to tweak the implementation.
  4. Check other implementations

You need to refer to external links, tutorials, books, research papers, etc. on various topics like for Data Structures and Algorithms you need to studyGreedy Approaches, Divide and Conquer, Constructive/Iterative Algorithms, Graphs, Trees and other Data Structures… and some of the tough ones like, Ropes, Segmentation Trees, etc. which you will eventually learn after much of your efforts….. apart from this you need to build your mathematical basics to the best, to utilize your capabilities, including series(Fibonacci, Catalan, AP, GP, HP etc.), formulas, Probability, Permutation, Combination etc…. Sometimes there is a requirement some other subjects(like Physics) but most of relevant information is provided in the question itself….

And for your purpose of being a “Good Programmer”…. don’t ever try to copy codes…. even if you are looking some editorial or research papers… try to study the logic and then write the code yourself…. Try to study the codes of other coders… if you cant understand them… just try to print the intermediate results to understand the logic behind each line…. One thing which may effect you during the competitive programming is cheating… to overcome this you can take a print out of the relevant resources and try to solve things by hand…. for more purposes use discussion forums to solve your problems, there are so many awesome coder and top performers which are thirsty of solving your doubts 😛 ….

As far as resources are concerned, some of the best ones that I have found so far are

Data Structures and Algorithms
MAXimal :: algo
What are the “must known” algorithms for online programming contests?

Now Google ” ‘language name’ basic projects source code”

Go through the links on the first page. And try understanding the source code. Google what you don’t get. 2 hours will be sufficient for going through at least 3 small projects.
Practice from or problems from spoj.
List of Hello world program examples
What kind of jobs do the software engineers who earn $500K a year do? – Amin Ariana


Who told you that you can select only one of them? You can actually be good at both of them. In fact, your programming experience boosts your general programming skills. Whether it is competitive programming or “real life programming”, at the end of the day they make you a better programmer.

Talking about advantages, there are quite a few. I will try my best to list them out.

  • Competitive programming teaches you how to think. Once you start doing a lot of competitive programming, you will realize the importance and power of thinking. You will realize that spending a little bit more time in the thinking phase will save you a lot of time in the debugging phase. Also, you will start thinking algorithmically which is crucial for solving many real-world problems.
  • Competitive programming teaches you to code faster and make less mistakes. Many a time, in a programming contest, it comes down to who can code the fastest and with less mistakes (so you spend lesser time debugging). If everyone can solve a particular problem, then the coding + debugging time becomes the only deciding factor.
  • Competitive programming improves your confidence.

But, there is a disadvantage (which can be avoided):

  • Competitive programming teaches you bad coding practices. If you read someone’s solution on any competitive programming website, you will find that, more often than not, you will not understand what is going on. This is due to the use of macros in place of frequently used constructs, keywords, function calls etc. to save typing time. As a beginner you might be tempted to use them thinking that it will hugely bring down your coding time but in reality it does not matter. What matters is how fast you can come up with the algorithm. If you don’t believe you can look at tourist’s andPetr’s submissions on Codeforces and notice that they don’t use any kind of shortcuts like macros.

At the end of the day, when you start “real world programming” after a long exposure to competitive programming you will find it to be very simple and trivial sometimes to the extent that certain things will actually bore you because they are not challenging enough.

The journey:

  1. Summer 2013: Started to revise the course Data Structures and Algorithms, which I undertook in 2nd year. Started coding my own implementations of trees, binary trees, binary search trees, stacks, queues.
  2. Realized competitive programming was about much more. Wrote my 1st BFS and DFS, submitted on SPOJ and became elated. Then some easiest problems on codechef. The green tick was orgasmic.
  3. Got acquainted with the vast world of Dynamic programming. Started to learn DP, read topcoder tutorial on DP, searched for easy DP problems – Tried them, could do only 2/10. Demotivated. Thought DP was not my cup of tea. Gave up on DP.
  4. Learnt about segment trees from a codechef editorial. Read a tutorial on segment trees. Implemented my own version (took about 3-4 days of debugging). Submitted on SPOJ. – 8 wrong submissions. Thought of coming back to segment trees after a while.
  5. Started to learn DP, read DP chapter in CLRS, read topcoder tutorials, searched for easy DP problems – Tried them, could do only 5/10. Tried some DP problems on SPOJ. Couldn’t do a single one. Thought of coming back some other time.
  6. Back to segment trees. This time got accepted on SPOJ and segment tree became my favorite data structure.
  7. Qualified for ACM-ICPC Amritapuri regionals.
  8. Picked up DP again. 8 days of intense DP. Did about 8-9 DP problems on SPOJ.
  9. Participated in ICPC regionals. Performed poorly. Team ranked #224.
  10. Following that a little bit of Topcoder/Codeforces/Codechef/SPOJ. Greatly inspired by Mohd Asad my senior, who gave up his summer intern to work on competitive programming.
  11. As expected, companies like Amazon and Microsoft that visited campus for internships didn’t open up for my branch. No remorse/regret/care in this world because I was enjoying what I was doing. Didn’t really know or care if competitive programming would get me a job.
  12. Finally, got a work from home internship at a Start-up based in San Francisco in the summer of 2014; all thanks to User. It required me to work on algorithms and data structures. Learnt a lot and more importantly understood the code quality difference between competitive programmingand production level code. Realized that more often than not, I would not be working with fancy algorithms and Data Structures at a full time job – i.e. that the world of competitive programming is very different from actual software engineering jobs. Embraced the fact.
  13. Fourth year: Placement preparations specifically.
    Geeksforgeeks/leetcode/cracking the coding interview etc. Didn’t enjoy much of this phase though, because I wasn’t able to give time to realcompetitive programming. Realized I was starting to become comfortable with DP.
  14. Google APAC, August Round: Rank 221. Not called.
  15. Google APAC, September Round: Rank 122. Called for personal interviews.
  16. Google Gurgaon office, October 28:
    Google Interview experience in short.
    4 Interviews with 2 questions each. Each round ranging from 45 min. to 1 hour 15 min.

    • Interview 1:
          Question 1: Dynamic Programming ( A Day at Gaushala Maidan :p )
          Question 2: AdHoc – Strings
    • Interview 2:
          Question 1: Dynamic Programming
          Question 2: Dynamic Programming
    • Shortlisted for round 3.
    • Interview 3:
          Question 1: Breadth-First Search
      Question 2: Open-ended/Design Question (I used heaps)
    • Shortlisted for round 4.
    • Interview 4:
          Question 1: Trees (IITJ Shutterbugs – rings a bell?)
      Question 2: AdHoc – I used Heaps/HashMaps
  17. November 4: Google HR calls me to ask about my branch, location preferences and transcripts.
  18. November 7, 12:30 hrs: HR calls me to congratulate me on acceptance of my application. Tells me I will be joining Google India. E-Mail follows. Can’t stop shaking.
  19. Night of November 7: Party straight for 7 hours. People in the adjacent building said that they couldn’t sleep because of the noise.

3 Ask to Answers. Hope I have done justice to the question. Please comment if you want me to add something.

Edit 1: Since many are asking for my advice on how to start competitive programming, these are some of the answers that have inspired me:

Edit 2: I have a very modest pay package, good enough for a fresher. Not the 50 lakhs or 1.4 crore sorts. There are many people here on Quora, who deserve much more fame than I am receiving right now.

Edit 3: 10 easy DP problems, I talked about. Here they are:
Dynamic Programming Practice Problems

1) TopCoder Feature Articles
2) TopCoder Feature Articles

I will go one step further and will give a practical advice. Buy a Raspberry Pi kit and start working on a cool new project. You have some ideas here –Raspberry Pi Projects and there are plenty of magazines devoted to cool new ideas that can be done very cheaply – Download your RasPi project files.

Estimating the subtleties of life..

Can’t state it in words … Nor can express it but it all stays in heart until you accept it …….

What’s reality ??? An unsolved mystery to keep up the striving spirit to bring out the life at the subconscious level to an unending disappointing podium where we feel ourselves to being judged ,checked and  tested. Is that actually what reality is ??? Or a world made for competition yet fun to act as a versatile personality , the savior at all troubles. Is it so ,,, Give it a random thought till it gets harsh on you and drags your thought to rationalize it to be merely the former one stated. Is this mere a misconception or the hard -core  truth we don’t want to believe .

This isn’t so …..  A part of my heart speaks. It’s that opening which leads to the mysterious well of unseen knowledge and wisdom, the ultimate truth which the soul’s craving to explore and experience. All lies within, still this fine membrane of ignorance wraps it all into a channelized source blocked by the false realization of considering oneself the one over all.

He watches us grow from making petty mistakes to being mature enough to hold responsibilities. But at the end He too fears for us taking the forbidden path, falling prey to the temptations offered in the platter of testification.  So, what I could smell of reality is the final decision we take, of the million opportunities to thrive yet differently…  It’s what we live.

Our life is a crystallizing  beautiful glass palace which heats up continuously to take it’s ultimate form going through the fluctuations from battling the fear of failure to creating self-motivation to have confidence to overcome all adversities. The tricky mind plays its game to hallucinate and confuse you by creating a panel for self evaluation and progress.This is what we fear.. the reality of life…..