Am just not able to focus. What to do?

How many times have we experienced the “aaj mann ni lag raha h” (oh no, am not into it, today) feeling!? Well, I know I have to do it. But, somehow, the mind is not into it. We end up either wasting time forcing ourselves to do it where our productivity falls due to lack of concentration. Or, we just do something else. When I know I must do it, and I think that I am interested, why can’t I still concentrate on what I need to do?

The answer to this interesting question lies in the essence of execution. Your goal is clear. You have a plan. But, you are unable to execute. How to execute well? What do natural executors do?

I maintained an excel sheet where I used to put the topic and number of hours completed. I used to tell myself that my progress depends on the number of hours I see in that xls. If 100 hours is the goal, whenever I touch 25, I used to be very happy. I celebrated by sharing on social media and with my friends. I get to 50, I again share. This does two things: 1) It pushes me to achieve it because I like the feeling when I share it. 2) It brings a fear of shame that if I do not finish, what will my friends think of me. This worked like a charm. I consistently finished the planned hours. I never cheated. But, this may not work for everyone. It depends on your nature.

Another technique that usually works is to convert the goal of “studying DLD” to the task of “writing notes for DLD” task. This task shows progress. At least, you can see the number of filled pages increasing. When there is a sense of progress, our brain is more motivated to do the task. Just reading pages after pages, or solving problem after problem, we get bored. This is because, there is no way to visibly feel the progress, especially when you do not have the big picture.

If these principles based on pride, fear of shame, and sense of progress fail, you may try transcendental approach. This approach makes a commitment to almighty or your mother that, if you do not complete this, let that girl whom I love be married to someone else. Now, at any cost, I want to finish this because, I don’t want to leave that girl to chance. What if, just in case, God really exists and what if the loss of that girl was due to my breach of promise.

At the end, this post will be incomplete if I don’t tell you one important thing. Do not force yourself too much. Sometimes, your mind know what is right for you. If nothing works, just relax, take your time to find something that works for you. As they say it, “Successful people maintain a positive focus in life no matter what is going on around them”. Good luck.

Advertisements

How to write a good resume/CV?

I am back yet again with something which I believe is key to our success. Resume is different from CV. Yet, for this write-up, I am going to use the terms, resume and CV, in an interchangeable manner. If you are a fresher with not much industry experience, prefer to call it a CV.  If you are severely confused, name your document the way your recruiter wants it. I will not discuss the differences here. They are irrelevant and unimportant for CSE students.

In this busy world, the time to make decisions is shrinking. Recruitment decisions are time bound as well. In this context, your resume becomes a very important tool in making your first impression. Your resume is also circulated to your interviewer. Hence, it is important that you put some effort in designing your resume/CV.

Most of us use MS Word to write our resume. MS Word is a great tool. But, an even better tool is LaTeX. Create an account on sharelatex.com or overleaf.com. Go to templates. Look at some resume templates. Pick the one you like and modify it with your details. This is the simplest and most effective way of writing your resume. Some recruiters may accept only .doc format in which case, you must use MS Word. Nowadays, I do not maintain a .doc file at all. You can check my CV at vvtesh.co.in for a sample created through these sites. For more jazzy templates you may google.

When you use a template such as that in overleaf, you cannot go wrong with formatting. If you are using word, take care of alignment, uniformity of font, placement and length of lines. Some people have the bad habit of writing everything in small-case, and not leaving a space after period. Do not make grammatical errors. Get your resume reviewed by someone.

I do not include personal details such as Date of Birth, Religion, Marital Status, Language Spoken etc. These have become irrelevant to present day jobs. Write your resume keeping your employer in mind. Put only those details that he needs to know. This is not a testimony for your hard work. You don’t have to show off to anyone how many languages you know (for a typical IT job or a PhD admission).

A common confusion among freshers is that they run out of content. The ask, “How do I even fill two pages?”. A fresher is assessed based on his objective, education, certifications, skills, projects, performance in competitive exams, achievements, and any such relevant details. Ensure all these are there in your resume.  If it is still hard to fill, do not bother. One-page resume is just fine. Adding your small-size photo is welcome too. Resume is a live document. You should update it at least once every six months. It is a good way to check if you are doing something meaningful. Anything that goes to your resume is considered meaningful 😊.

When in doubt, just blindly follow a common template. Google for a student with similar background as you from places like MIT, Stanford or Berkeley. Usually, they have their resume reviewed by professional agencies. Just follow their template.

If these pointers helped, please leave a comment. Your long comments make my day. Thanks!

Act like a Master!

Many of you have got your MTech admit and are ready to roll. Here’s a piece of mind to you.

Taking the journey of Masters is a rare privilege bestowed on selected minds that sparkle brilliance. You are chosen from a million by those who were chosen by the chosen ones! That is how important you are. Now, it is time that you act like what you really are.

So, what is it like to act like a true master?

The answer lies in the following insight. You are already good. But, you are on a journey to be great. The journey from good to great is characterized by two things: 1) Statistic Marvel, and 2) Aesthetic Delight. Alright, it is time to elaborate.

Sachin is a master! His statistics speaks for himself. Several centuries. Several days on the field. Several match winning innings. There are numbers behind each of his achievement. He was not born a master. He became one. Your story is no different. You have achieved a place in Masters program. That puts you in mind boggling circle of achievers. You beat the 2 Lakh graduates and came about top 1500 in them! You understand the “bits” that make up the computer (Number System). You know how to network them (Computer Networks). You can manage data on it (DBMS). You can design algorithms to make it do meaningful things (DS & Algo). You can model real world problems and automate several tasks (Programming). This list goes on. You have learned so much, so much that you yourself can be amazed. Irrespective of whether it is software, hardware or networking, you have studied key elements. This is what put you in the elite league of candidates who aspire to become Masters. There is statistics behind each of these elements. You scored 70+% in your BTech in most of these subjects, you scored 99+ percentile in GATE, you beat a better one in interview, you spent whopping *8.76 Lakh Minutes* (4 * 365 * 10 * 60) studying computer science. These are impressive statistics. This distinguishes you from the rest of the population. You are already statistically marvelous.

Now here is another opportunity for you to add more statistics to your resume. That is another 4.38 Lakh minutes ahead of you at a place which breathes computer science much more than what you experienced in BTech. These minutes are so much more valuable than the prior. As SRK says in Chak De India, these 4.38 lakh minutes are yours. It does not matter what happens after your MTech. Nobody can take these minutes from you. Just go and rock. Give your best. Learn from the best.

Statistics alone does not make you a true master. In fact, a true master does not care for his own stats. He cares for elegance. That second essential element is aesthetic delight. Coming back to Tendulkar, there is some beauty in the way he plays. You can just keep watching him. This feeling is what we refer to as aesthetic delight. As a master, your work should look like magic. It should inspire millions of others. You are not here to play cricket in your gully anymore. You must play in a field where there are millions of aspirants. Do not shy away from crowd. Show them some skills. Bring beauty and charm in your work. Improve your personality. Find a niche. Work on your strengths. When you are on the field, people should just want to see you, and listen to you. In short, you make your presence felt. You command respect. You are a *Master*.

The day when you exhibit statistic marvel and aesthetic delight, you would feel what it is to be a true master. This is a long journey. There is no time to rest. Unless you enjoy each minute, there is no way you will end up being successful and happy. Wake up with a goal to find a reason to smile. Go back to bed with the satisfaction of having given a true smile. Find that smile in computer science.

Good luck!

What courses should an aspiring software engineer take?

Unlike medical doctors and advocates in court, most of us end up becoming software engineer first and then do several software engineering courses. In this light, someone asking how to qualify as a software engineer makes me feel happy.

Engineering anything requires you to be good at principles, products and practices. Engineering software is no exception. The “Keep It Simple Stupid” (KISS) principle says that you should write code that is as simple as possible. The Parkinson’s Law says that “Work expands to time available”. So, if you tell your team that they have three days to finish a task, they will end up taking all three days to do that task. You need to be able to design software using Object Oriented Programming concepts, or design a DB using ER paradigm. Functional programming (Lambda Expressions) and Logic design (as in Prolog) are not that common as yet in the industry but still very different principles to learn. These principles are very interesting, and a must know for being a good engineer. Next, we need to know existing tools and technologies. I loosely categorized them as products here. There is C, Java, C++, HTML, Javascript, Full-Stack, Android, and so on. Finally, the practices matter too. How do you run the show? Agile methodology which comprises of Scrum, Reflection, etc., and various roles in it are interesting. Many young students think only of a “developer” when they talk about software engineering. In reality, there are several non-development roles such as requirements analyst, product manager, quality analyst and so on. To understand all these, I repeat, you need to know about the principles, practices and products.

Few universities package this information in a variety of courses such as Programming in C, DBMS, OOPS using Java, Algorithms, Data Structures and Software Engineering. There is no single list which is complete and correct. Coursera and such MOOC platforms provide interesting courses such as Agile Methodologies and Android development.

My perspective to programming and related courses changed when I joined a cloud computing group at Yahoo. Suddenly, distributed systems became the most relevant subject. Every algorithm we designed were distributed in nature. I go to Nokia and embedded systems and UI design are now relevant. I come to Microsoft, and find Information Retrieval, Machine Learning, Pattern Recognition, NLP as relevant subjects.

In short, finally, I concluded that, to be a good software engineer, you need to be good at all courses! But good news is, there is no hurry. You need to be a good thinker and need to know one language (say Java) to get a job. You can become good at rest on the job.

These courses alone cannot make you a good software engineer. Developing good software is equally an art as it is an engineering “discipline”. This is an interesting field where we are trying to fit an art form (as painting) into a step by step method (as in an engineering discipline). There will still be scope for creativity. So, just like teaching, you will succeed in software development only if you have the passion.

With India becoming a big exporter of software, the opportunities are plenty. The work is cool. Work environment is amazing with air-conditioned offices, latest gadgets, brilliant minds and amazing innovations. Add travel, money and monthly outings to this. What stops you from becoming a software engineer! Why not be excited!!

Things not going your way? Feeling depressed?

When the goals are shallow, depression is a typical consequence. Define success in such a way that it keeps you occupied for life. Do not keep a deadline for success.

Let me elaborate. Ask yourself, what is that you want to achieve in life. Look around. Understand the problem that attracts you. You come from financially deprived family. You perhaps want to eradicate poverty, or at least ensure that there are no more youth like you who is suffering for wrong reasons. Start thinking what you could do to solve this issue. It is a journey. It is not one step that you need to take. Commit your life for one such goal. In the meanwhile, you need to do a variety of things. You need to sustain yourself first. You need a job. You need a family. You need to keep your family safe and happy. You need good friends. For this to happen, you need to be mentally and physically strong. So, invest your time in all these things. You will quickly realize that getting a job is a small piece of a much bigger problem. The nature of the job only matters if it is somehow connected to the problem you want to solve.

Alright, having a goal for life and the pursuit to achieve it will keep us away from depression. It will keep us busy. It will bring joy and prosperity. But, this is not all. We need to deal with the intermediate small problems. The problem at hand is to find a job that helps you to stay healthy and reasonably wealthy. The mantra here is to be a good thinker, actor and producer.

Let me elaborate again. The common mistake we do when we look out for jobs is to see where the crowd is moving towards. Everyone is going to a call center does not mean that is the only place available for work. For example, consider teaching in a small school. It will pay you at least 20k and will help you lead a good life. It will force you to be a good communicator. It will keep you active by standing and walking for most parts of your day. There are many such jobs – administrative jobs in colleges and companies are another option. We have been trained to stop thinking from our early school days. For example, one of my teachers used to reprimand me for asking questions. She does not like anybody to ask question. So, gradually, students became 1) memorization machines and 2) follow-the-crowd ants. Get out of this mode. Find the right job. Do not spoil your life to get into one wrong job which is not working for you. Thinking deserves at least two more pages of writing. But, let us now move towards acting. I do not mean the cinama kind of acting. This is to “work”. Act. Put effort. Everyday, make a small plan on how you want to progress towards a goal. Execute that plan. Without thinking, acting will only waste your time in the wrong direction. This is what is happening with you in your UPSC and GATE preparations. You need counselling on how to prepare. Stop cramming all topics and memorizing formulae. Stop studing everything in the world. Other members here can give tips on how to study. Same applies to interviews. Write a great resume, apply to the right places and know how to ace interviews. With the commitment to work hard, there is nothing we cannot achieve. Finally, just thinking and acting is insufficient to a happy life. Start producing results. If you are not producing results, make smaller objectives (towards the same big or intermediate goal). Try to achieve them. If you still cannot, make it even smaller. If you cannot achieve anything, there is something wrong with you. Go back to the first step. Think.

We have one life. One opportunity to experience. Your situation is unique. Your experience will be unique. Make it useful, not only to yourself but to everyone around. Cheers and good luck.

I’m unable to think of a solution within the allotted time. I can solve them, but it takes too much time. This way, I won’t score well in the actual exam. Can someone tell me a way to improve?

Well, I can only say that you are not alone. I too am very slow in my thinking. Am sure there is nothing wrong with my comprehension or application skills. But, I need my time. To put it better with an example, if I have huge amount of time, I know how to find the best move in a chess match. But, there are millions around who will find that best move much faster. When I asked around the same question, I found these interesting points.

Firstly, almost everyone said, practice more. Perhaps, practice improved their speed. I had a hard time memorizing 8 * 7 in my childhood. I used to do 8 * 5 = 40 first. Then add 8 twice to it. But over a period, I realized that if I have to calculate it 100 times in a week, I will eventually remember it. So, I did accept the point. Yes, practice does matter.

But, this still did not answer my question. How come, the other kids could do 8 * 7 in the first attempt? This is when I realized the second and bigger secret. Pay attention to this. First time, I memorized the 8th Table, I took a shortcut. I studied till 8 * 5 and then I knew that I can always use addition trick to answer. That one day of laziness had cultivated this bad habit. Now, my brain refuses to memorize it. Again, I can take a chess example here. In chess notation, a1 is the left bottom square from where white plays. b2 is diagonally above a. So, you go one step right and one step upwards from a1 to reach b2 and so on. Fairly easy stuff. Now, when I learned this notation, I used to calculate from a and 1 and then narrate the square. It just became the habit. While some kids memorized the squares, I was calculating it. A bad habit. It led to humongous cost. I was so slow in taking notes during a game.

Alright, now I understand what slows me down. But, how to improve it. Breaking these unhealthy habits is not easy. Luckily, there are several ways we have known already. Know your habits, target them with training. Nowadays, I spend several minutes just visualizing and thinking differently about notations. Another thing you could do, is try a bit of meditation. Am not joking here. In a way, we are addicts of compulsive behavior. Our mind knows that it must change but refuses to change. The best solution is to take some time, give our mind a rest. Clear it off. Then, try again. This works. I spend around 15 minutes whenever I get time, to just stay still and relax. Finally, the best of all ways, is to find a purpose or a passion. The stronger your passion is, you will find innovative ways to circumvent your problems. If nothing works, only one thing can save you, God! Really, I am not kidding. Transcendental purpose has supernatural powers. For me, helping students is my way to find a spot in heaven. It is my dharma, my duty. It gives me transcendental satisfaction and fulfillment. I have conditioned my mind to believe that my purpose of life is to find a smile in a student, promote computer science and play chess. You may have different purpose; but if you believe in God, then all the above can be sidestepped and you can still win.

Good luck!