Here’s a great article on how to apply for jobs effectively and efficiently, improve at interviews, and get a great job:
I have recently begun to do code challenges from TopCoder.
I first heard of TopCoder from John Sonmez here: So You Want to Become a Better Programmer? (TopCoder).
I started by doing the archived problems here. The problems are sorted by the percent of competitors who were able to solve them–basically in order of difficulty.
The questions can be fun but a few of them are impossible for me to understand and the interface requires a very large monitor for me to see everything. But overall it has benefited me because I get to attempt to understand a requirement, pass tests, then look at successful and cleanly written code from past competitors.
Check out this great post by Joanna Chen: How I landed a Google internship in 6 months
She has has great advice on building, practicing coding problems (Pramp.com), meeting people, applying, etc.
Special thanks to Siddharth for being the first to introduce me to Pramp.com for free interview practice.
Here are the sites I have experience with and my thoughts
- LeetCode is excellent because there are many problems and explanations. Furthermore the problems without explanations have answers and commented solutions in the discussion boards. It is the best online judge in my (limited) experience.
- Cracking the Coding Interview has many questions and detailed answers in Java.
- Data Structures and Algorithms Made Easy in Java is excellent. Sure there are many, many, many typos. But it has so many code samples for each of the data structures, explanations from worse (brute force) to best (optimized) along with advantages and disadvantages of the many possible solutions.
An honorable mention goes to Free Code Camp. The first time I ever had fun solving code challenges was at Free Code Camp. They did an amazing job of starting off with relatively easy challenges, then they raised the bar. Before I knew it I was doing difficult challenges, yet the hours flew by.
Here are a few limiting beliefs I had and how I overcame them…
I need a degree to get a job
I learned that this belief is simply not true by reading these success stories: You can get a coding job!
I have to get the most out of my potential
I learned that this is not true by taking Calculus III and Linear Algebra classes. I hated these classes. These classes made me realize that the most important thing to me is doing fun and interesting things with code.
I cannot build unless I have a tutorial
I first started learning how to build without a tutorial here: How I built my carousel image slider.
I really learned how to use Google, documentation, others’ code starting with this post: How to Get Inspired about Web Development.
I have to build a single massive portfolio piece with many features
Many recruiters and technical people told me to put all of my learning and building into a single multifaceted website. But I ignored them because I had already started my daily sites and I was too stubborn to change course 🙂
I am glad I ignored them because I learned much more through repetition and daily building than I would have by building a single site. Special thanks to Omar for encouraging my daily site building.
I can’t do it. I can’t get hired, I can’t build a website, I can’t do this or that…
This belief is actually true. I cannot reach the outcome of many of my goals.
But I can take the next step and focus on the right actions. I can focus on the process and let the outcome take care of itself. This is liberating, to know that I only have to focus on the next step.
Here are the steps you can take to learn web development and get hired. This advice is based on my experiences so it is extremely biased 😉
- Save lots of money, ideally enough to cover 2 years of expenses. This would give you the option to quit your job and focus 100% on coding.
- Learn for free and get free help.
- Get inspired. Read How to Get Inspired about Web Development and You can get a coding job!
- If you have done steps 1-3, you can now begin your boot camp.
Commit to building a site every day and blogging about what you have learned and built. Remember Jennifer DeWalt’s advice:
Throughout the project a start small, keep going mantra was in my head. It is important to understand that you don’t necessarily need to understand to get things working. It is just as important to keep moving forward. The understanding will come eventually.
- Fully commit. Be willing to build 30 sites in 30 days, 100 sites in 100 days, 180 sites in 180 days, whatever it takes to get hired.
- After 30 days of building, revamp your resume and start applying for jobs.
- Prepare for interviews by doing code challenges. Free Code Camp has fun problems as does Code Wars.
- Don’t give up. You can do it! Keep going until your dream job is your day job 🙂
I have been working as a junior developer since early November 2015. Here are some of my reflections:
- I thought programming would be working solo. I thought there would be no help except for Stack Overflow and Google. But fortunately programming is a team effort because teammates and managers are there to teach and help.
- I felt inferior when I would compare myself to others who have 10 years of experience. Then I realized, duh, they are so much better than me because they have 10 years of experience. I realized that this is a great opportunity to learn from them and hopefully cut down on my learning curve.
- I thought the work environment would be like a library. Instead work is the opposite of quiet and calm. Headphones help a lot with concentration.
- I learned that going for a walk every couple of hours is extremely helpful. I try to just focus on my the feel of my footsteps touching the ground and to not think about coding. Sometimes my subconscious will give me solutions and ideas that I can try out when I get back to my computer.
- Reading and using existing code is a great way to learn how to write clean code and how to efficient solve problems.
Overall work is great because it is a continuation of the journey I started with How to Get Inspired about Web Development. Time flies and coding still just feels right to me. It is amazing that I now earn a living by learning, coding, and building projects 🙂