Posted August 7th, 2015 by adminguy
There are good chances you are a Harry Potter fan if you read this blog. Most programmers I know enjoy Harry Potter, Lord of the Rings... stuff like that - although you don't need to debug yourself if you don't :-) I am actually a big fan of J. K. Rowling
. I admire not just just her writing (which I have seen, not read), but also her grit and determination. I admire her for facing heavy odds and rising above them. Her story has been told plenty of times, so it may not be new to you, how before she became famous, she was a single mom who had gone through a difficult childhood, a (possibly) abusive marriage, clinical depression, filed for economic support, and other hardships we probably haven't heard. But she persevered. She wrote. Harry Potter was born. And she prevailed. Prevailing is awesome!
Most software developers don't become as famous as J. K. Rowling, but many go through difficult struggles and emerge victorious. They too prevail! So I was particularly touched when I read this thread
of a determined software developers who worked hard to achieve his dream of working for one of the big four tech companies in Silicon valley.
This reddit thread
describes a developer who went through a lot of rejections straight out of college. He had an education in CS, but that by itself did not give him a good enough grasp of real world problems - stuff which is often asked in technical interviews, even to freshers. In his own words:
So, I started looking for a job about 6 months ago and was surprised at the difficulty of questions that were asked on the phone interview. The interviewers would expect the first solution not only in a short time but also of the highest efficiency. A lot of times it boiled down to whether I had already seen the problem in the past. If I did, the interview was a breeze or else if I tried to ask for clarifications/assumptions, the interviewer seemed impatient and wouldn't be impressed.
This is a very typical catch-22 situation which many developers go through. I have often had developers tell me how difficult it is to find their first job, ironically, without prior experience. It seems everyone wants experienced developers, which makes it very difficult for recent grads to get off the mark. Which is why I think this thread is particularly interesting, because instead of wailing he actually devised a strategy to learn what was needed, and eventually land a job in one of the big four tech companies in Silicon Valley. I really like his strategy, because it's a great combination of grit, sincerity, and plain ol' common sense. I'll discuss his strategy and add a few sprinklings from my own experience to show how developers can overcome the barrier of NoInitialExperienceException.
Create your own practice exercises
One of the biggest drawbacks fresh graduates have is the bookish nature of their knowledge. Unless they participated in research which involved them in a larger project, their only exposure to real programming are toy examples found in books and slightly larger examples done as part of their class assignments. These examples teach the basics of the syntax and a few mid level concepts of a programming language. They don't come close to real world issues which are often discussed in programming interviews. For that you have to create your own mini projects or exercises and solve them in different ways to understand the pros and cons of different approaches, and what works well in which scenario. Every time I learn a new programming language, I create a GitHub repository where I store several self created exercises which explore various aspects of programming in that language. I often fin dit useful to go back and refer to those exercises. The OP did not use GitHub, but created an account on an online IDE where he'd code various Data Structures and Algorithms and label them accordingly. He made it a point to review these exercises before interview, and was often surprised to find related questions in the interview. I think it's a great idea to create repositories of such exercises specially designed to explore different aspects of programming and software development. They will not only help you learn, but will serve as a very useful resource while preparing for job interviews.
When I was trying to find my first job, I spend a lot of time reading blogs and articles about all sorts of things ranging from technical/programming information to soft skills, company information, location information etc. I had created an MS Access Database to manage all this information along with my annotations. A database was probably overkill for what I wanted to do (but it helped me build something ad practice coding), but there are several online tools to manage such information. Evernote
is a great tool to maintain notes along with web-clippings (with their Clearly
plugin). If you still want to maintain relational data, you can select free online tools like Wufoo
or Google Spreadsheets
Online practice exercises
Something that can help developers while practicing their coding skills is the huge array of online programming exercises which are already available. This way you don't have to re-create exercise that is already available online, freeing your time to focus on filling in the gaps of what does not already exist online. At programmr.com
we have always maintained that writing code is one of the best ways to learn. We have coding exercises in most languages you would want to practice with: Java
. The OP himself used Coding Bat
which is a very good website for Java and Python exercises.
Take online courses
a while back and are hoping to run more courses in the future.