Getting a Coding Job For Dummies®
Published by: John Wiley & Sons, Inc., 111 River Street, Hoboken, NJ 07030-5774, www.wiley.com
Copyright © 2015 by John Wiley & Sons, Inc., Hoboken, New Jersey
Published simultaneously in Canada
No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning or otherwise, except as permitted under Sections 107 or 108 of the 1976 United States Copyright Act, without the prior written permission of the Publisher. Requests to the Publisher for permission should be addressed to the Permissions Department, John Wiley & Sons, Inc., 111 River Street, Hoboken, NJ 07030, (201) 748-6011, fax (201) 748-6008, or online at http://www.wiley.com/go/permissions
.
Trademarks: Wiley, For Dummies, the Dummies Man logo, Dummies.com, Making Everything Easier, and related trade dress are trademarks or registered trademarks of John Wiley & Sons, Inc. and may not be used without written permission. All other trademarks are the property of their respective owners. John Wiley & Sons, Inc. is not associated with any product or vendor mentioned in this book.
LIMIT OF LIABILITY/DISCLAIMER OF WARRANTY: THE PUBLISHER AND THE AUTHOR MAKE NO REPRESENTATIONS OR WARRANTIES WITH RESPECT TO THE ACCURACY OR COMPLETENESS OF THE CONTENTS OF THIS WORK AND SPECIFICALLY DISCLAIM ALL WARRANTIES, INCLUDING WITHOUT LIMITATION WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE. NO WARRANTY MAY BE CREATED OR EXTENDED BY SALES OR PROMOTIONAL MATERIALS. THE ADVICE AND STRATEGIES CONTAINED HEREIN MAY NOT BE SUITABLE FOR EVERY SITUATION. THIS WORK IS SOLD WITH THE UNDERSTANDING THAT THE PUBLISHER IS NOT ENGAGED IN RENDERING LEGAL, ACCOUNTING, OR OTHER PROFESSIONAL SERVICES. IF PROFESSIONAL ASSISTANCE IS REQUIRED, THE SERVICES OF A COMPETENT PROFESSIONAL PERSON SHOULD BE SOUGHT. NEITHER THE PUBLISHER NOR THE AUTHOR SHALL BE LIABLE FOR DAMAGES ARISING HEREFROM. THE FACT THAT AN ORGANIZATION OR WEBSITE IS REFERRED TO IN THIS WORK AS A CITATION AND/OR A POTENTIAL SOURCE OF FURTHER INFORMATION DOES NOT MEAN THAT THE AUTHOR OR THE PUBLISHER ENDORSES THE INFORMATION THE ORGANIZATION OR WEBSITE MAY PROVIDE OR RECOMMENDATIONS IT MAY MAKE. FURTHER, READERS SHOULD BE AWARE THAT INTERNET WEBSITES LISTED IN THIS WORK MAY HAVE CHANGED OR DISAPPEARED BETWEEN WHEN THIS WORK WAS WRITTEN AND WHEN IT IS READ.
For general information on our other products and services, please contact our Customer Care Department within the U.S. at 877-762-2974, outside the U.S. at 317-572-3993, or fax 317-572-4002. For technical support, please visit www.wiley.com/techsupport
.
Wiley publishes in a variety of print and electronic formats and by print-on-demand. Some material included with standard print versions of this book may not be included in e-books or in print-on-demand. If this book refers to media such as a CD or DVD that is not included in the version you purchased, you may download this material at http://booksupport.wiley.com
. For more information about Wiley products, visit www.wiley.com
.
Library of Congress Control Number: 2015941960
ISBN 978-1-119-05094-0 (pbk); ISBN 978-1-119-12101-5 (ebk); ISBN 978-1-119-12102-2 (ebk)
Everywhere you turn, people are looking for coders. In offices and boardrooms, at your neighborhood bar, and around the family table, people have ideas wanting to become websites, data needing to be analyzed, and processes waiting to turn into a mobile app. Building a product requires many people — including designers, product managers, marketers, and content creators — but finding coders is always at the top of everyone’s list because they are so scarce.
On the supply side of the equation, learning to code and then getting a job can feel overwhelming. However, there have never been more ways to learn how to code, including on your own, in school, at a coding boot camp, and on the job. And companies of every size and type are hiring developers.
Getting a Coding Job For Dummies will help you make sense of all the options and show you ways to get that first coding job.
This book is designed for the person with little to no experience with coding jobs. In plain English, you discover why coding jobs are so popular, which technologies to use when coding, ways to learn coding, and how to launch your career. The topics covered include the following:
As you read the book, keep the following in mind:
I do not make many assumptions about you, the reader, but I do make a few.
You do not need to have previous programming experience. In this regard, you need to be able to read, type, and follow directions. I explain as many concepts as possible by using examples and analogies you already know.
Before trying to get a coding job, you will spend some time learning how to code. Chapter 5 shows you some basic code examples, and Part III outlines options and resources for learning how to code in greater depth. If you don’t have any coding knowledge, keep in mind that it will take at least a few months to learn enough to be able to get a coding job.
You’ll need a computer running the latest version of Google Chrome if you want to complete the coding examples. Chrome is a free browser and the examples in the book and in the external resources have been tested and optimized for the Chrome browser, although they may also work in latest version of Firefox. Using Internet Explorer when learning to code is discouraged because its support for coding languages varies and it doesn’t always work as expected.
I assume that you have access to an Internet connection. You can read almost all the book without an Internet connection, but you need an Internet connection to access external learn-to-code resources, such as the Codecademy website. Many listed resources are free and can be used without downloading or installing anything.
Here are the icons used in the book to flag text that should be given extra attention or that can be skipped.
Online resources are available in addition to the ones in this book:
www.dummies.com/cheatsheet/gettingacodingjob
for tips while job searching and during your interviews.www.dummies.com/extras/gettingacodingjob
.www.dummies.com/extras/gettingacodingjob
.With all the administrative stuff out of the way, it’s time to get started. Remember, you can start at the beginning or jump to whatever section interests you the most. Congratulations on taking your first step to getting a coding job!
Part I
In this part …
Understand why coding matters
Explore coding career paths
Follow a coder on the job
Learn key coding concepts
Chapter 1
In This Chapter
Seeing the history of coding and where it’s headed
Understanding different types of coding jobs and salaries
Learning about companies that hire coders
If you just focus on the smallest details, you never get the big picture right.
—Leroy Hood
Today, many moments in your daily life are affected by code. Code runs the mobile phone alarm that wakes you up in the morning, the word processing and spreadsheet software you use at work or in school to create letters or projections, the games you play on a phone or console, and the web browser you run to check your email and read the news. Many tasks in our lives have remained the same — there will always be people who need help waking up in the morning — but technology is increasingly influencing the way we complete these tasks.
Because you’re reading this book, you understand coding’s pervasiveness, but you may wonder about the industry’s size and future. Is getting a coding job like becoming a horse and buggy driver just as Ford was starting to sell the Model T?
In this chapter, you learn where coding came from, how fast it has grown, and what the future might hold for those who can code. Additionally, you’ll see the types of companies that hire coders and find out what recruiting professionals look for when hiring coders.
Computer code consists of a set of statements (like sentences in English); each statement directs the computer to perform a single step or instruction. Each step is precise and followed to the letter. For example, if you’re in a restaurant and ask a waiter to direct you to the restroom, he might say, “head to the back, and try the middle door.” To a computer, these directions are vague and therefore unusable. Instead, if the waiter gave instructions to you as if you were a computer program, he might say, “From this table, walk northeast for 40 paces. Then turn right 90 degrees, walk 5 paces, turn left 90 degrees, and walk 5 paces. Open the door directly in front of you, and enter the restroom.”
One rough way to measure a program’s complexity is to count its statements or lines of code. Basic applications such as Pong have 5,000 lines of code, while more complex applications such as Facebook currently have over 10 million lines of code. Whether few or many lines of code, the computer follows each instruction exactly and effortlessly, never tiring like the waiter might when asked for the 100th time for the location of the restroom.
Figure 1-1 shows lines of code from the popular game Pong. Don’t worry about trying to understand what every single line does.
Figure 1-1: Computer code from the game Pong.
This book describes the ins and outs of careers in coding but will not teach you a programming language. In Part III, you can read about the different ways you can learn to code: by yourself, in a coding boot camp, in college, and on the job.
Today, programs written with code power so many different activities, and the work they do can almost seem like magic. With a few mouse clicks or finger taps, you can see your current location on a map, have groceries delivered to your door, or video chat with someone in another country. Although the research and development to make these advancements possible has been massive — billions of dollars invested and millions of hours worked — it has been worthwhile. In this section, I briefly describe a history of code and possibilities for the future.
Unveiled in 1946 at the University of Pennsylvania, ENIAC was the first general-purpose computer. See Figure 1-2. It was the size of a large room, and programmers punched holes in paper cards to code programs that could take hours to complete. Sometimes bugs would crawl inside these large computers, causing the circuits to malfunction and resulting in errors. Removing these bugs from the computer was called debugging, which is the name used even today.
Figure 1-2: ENIAC was the size of a large room.
Gradually, with advances in hardware, computers became smaller and more powerful. Whereas the ENIAC’s tens of thousands of resistors and capacitors took up almost 2,000 square feet, later microprocessors could fit all these electronics onto a chip the size of a postage stamp. Eventually, these microprocessors would be built using silicon, which is both cheap and plentiful.
Increased computing power from powerful microprocessors allowed programmers to write more complicated and resource-intensive programs. For example, computer games became faster, used more complex graphics, and displayed on-screen smoothly and realistically. Writing code, or software programming, depends on and is constrained by the underlying hardware on which the code runs. As computing power increases, code is written to provide more features at a faster speed to users.
Programming languages were also invented to take advantage of this new computing power. You may remember languages such as Basic, Fortran, Pascal, C++, and Java. Like spoken languages, programming languages were created to fill a need. If other programmers coded using the language, the programming language would survive and thrive; otherwise, it would die.
In 2011, Marc Andreessen, creator of Netscape Navigator and now a venture capitalist, noted that “software is eating the world.” He predicted that software companies would rapidly disrupt existing companies. Traditionally, software was used on desktops and laptops. The software had to be installed, and the installation process at a minimum varied by computer type and might not even work or might be incompatible with your computer hardware and software. After the software was installed, you had to supply data to the program.
Four trends have dramatically increased the use of code in everyday life:
www.hotmail.com
to instantly check email without worrying about installation or software compatibility. Web applications increased consumer appetite to try more applications, and developers in turn were incentivized to write more applications.The combination of these trends has resulted in software companies that have upended incumbents in almost every industry, especially ones typically immune to technology. Some notable examples include the following:
Figure 1-3: Airbnb booked 5 million nights after three and a half years, and its next 5 million nights six months later.
The one constant in technology and coding is change. Improvements in existing computer architecture will lead to the creation of newer, faster, and smaller hardware devices, and developers will then write code to operate and control those hardware devices.
The following technology developments are increasing in popularity and should remain relevant at least for the next five years:
Creating applications and making computer programs work seamlessly requires many people working many hours because every instruction must be explicit. The Bureau of Labor Statistics estimates that across all industries, about 140,000 jobs in computing are being created every year that pay approximately $80,000. In some industries, computing jobs are growing by over 20 percent, which is two to four times the average growth rate across all occupations.
The demand is great, but computer programmers are in short supply. Colleges train the most computer programmers and graduate about 40,000 computer scientists per year. Using current estimates, by 2020 there will be 1,000,000 more jobs than qualified students, representing a $500 billion opportunity. See Figure 1-4.
Figure 1-4: By 2020, 1,000,000 coding jobs will go unfilled due to a lack of skilled workers.
Table 1-1 shows some of the coding occupations contributing to this boom. Each job is unique, and generally there is not a great deal of switching between jobs. For example, mobile developers don’t suddenly become data scientists, or vice versa. When people do switch between these positions, there is usually a training period.
Table 1-1 Entry-Level Coding Occupations
Occupation |
Job Summary |
Average Salary |
Mobile developer |
Code applications that run on mobile devices such as phones and tablets. Also responsible for app performance and user interactions that are easy to complete on a mobile device. |
$95,000 |
Software developer |
Develop programs and write code for hardware, software, and network systems. |
$93,350 |
Database administrator |
Use specialized software to store and organize data, such as financial information and customer shipping records. Make sure that data is available to users and is secure from unauthorized access. |
$77,080 |
Web developer |
Design and create websites. Responsible for both the look and feel of the site, and for technical aspects, such as the website’s speed and traffic capacity. |
$62,500 |
Data analyst |
Analyze big data using statistics and machine-learning techniques to generate insights and future predictions. |
$60,000 |
Quality assurance analyst |
Test programs to ensure that features perform according to specification, and document bugs. |
$53,000 |
Sources: Bureau of Labor Statistics, Indeed.com, Glassdoor.com
There’s no way around it — all industries are experiencing a massive shortage of talent who can code. Employers are looking for talent wherever they can find it. People with traditional and nontraditional backgrounds, and those who want to work in an office or work remotely are all finding companies that need help.
The two general types of coding jobs are full-time positions in companies and contract or freelance work.
Companies of various sizes hire people who have just learned how to code for full-time positions. The size of the company can have pros and cons when it comes to hiring people who have just learned how to code:
Large companies: Companies with more than 1,000 employees, such as Fortune 500 companies and large tech companies including Yahoo!, Google, and Facebook have high standards for hiring employees. Given the number of applications they receive for each open position, recruiters at these companies usually use a strict screening process and grant interviews only to people who have a computer science, math, or engineering-related major. However, for those people who do pass the hiring screen and are eventually hired, there are many resources, both formal programs and people who can help coach and train you to increase your skills.
Almost every large company has an online application. Send in your application online, and then find an advocate, someone at the company who believes in your candidacy, to help your application pass to the interview stage.
Medium-sized companies: Of the three types of companies, getting hired at a medium-sized company can be hardest. With their large recruiting departments, candidates have to interview with as many people as in large companies. In addition, medium-sized companies typically do not spend as much money on training as large companies.
One successful strategy to getting hired permanently in a medium-sized company is to freelance first, which helps you build up your reputation and allows the company to assess your skills in a low risk way.
Startups: With less than 20 employees, startups often desperately need coding talent and are small enough to make hiring decisions quickly. They don’t have a formal recruiting staff, so you should develop a personal connection with the person doing the hiring. Startups don’t have extensive training programs, and you are expected to contribute immediately. However, the small company size should help you form personal relationships with your engineering coworkers, who can help answer questions and informally train you.
In the beginning, successful startups often have so much work and are so short staffed that having anyone do the work is better than having no one. For this reason, startups decide on candidates quickly, rather than wait for the best person for each role.
www.usajobs.gov
to search across all federal opportunities, and individual state government websites for opportunities in a specific state or city government.Companies of all sizes hire freelancers to do discrete projects that are not overly complex and have a definite end date. For example, freelancers often build a website with a few defined pages, create mobile apps, or scrape and store data from websites into databases. Getting some of the initial work performed by a freelancer helps a company see how much time and money a project will cost and whether there is a need to hire a full-time employee.
Contract work also provides freelancers with some valuable benefits. Even for full-time coders, doing some contract work is a great way to build up skills in a new programming language or framework. Also, because coding work can be done from anywhere, freelancers have a good deal of flexibility and don’t necessarily have to sit behind a desk in an office. For example, some freelancers travel often for pleasure, and can be found working in cities such as Boston one month and Bali the next month. Finally, some coders freelance full-time, and build their business by doing work for existing clients and pitching new work to client referrals.
One issue with freelancing is that you are always looking for the next job. A few websites, such as Freelancer (www.freelancer.com
) and Upwork (www.upwork.com
), formerly odesk.com, help provide freelancers with steady work by creating communities that connect employers and freelancers. See Figure 1-5.
Figure 1-5: Upwork helps freelancers find and bid on contract coding jobs.
These sites create online reputations for both freelancers and companies, which helps each side feel more confident that the work will be completed and the agreed upon amount will be paid.
Chapter 2
In This Chapter
Improving your existing job
Exploring entry-level full-time coding roles
Understanding skills and tasks in various coding roles
We shall not cease from exploration, and the end of all our exploring will be to arrive where we started and know the place for the first time.
—T.S. Elliot
For many people, the words “coding career” evoke an image of a person sitting in a dimly lit room typing incomprehensible commands into a computer. The stereotype has persisted for decades — just watch actors such as Matthew Broderick in War Games (1983), Keanu Reeves in The Matrix (1999), or Jesse Eisenberg in The Social Network (2010). Fortunately, these movies are not accurate representations of reality. Just like a career in medicine can lead to psychiatry, gynecology, or surgery, a career in coding can lead to an equally broad range of options.
In this chapter, you see how coding can augment your existing job across a mix of functions, and you explore increasingly popular careers based primarily on coding.
Many people find coding opportunities in their existing job. It usually starts innocently enough, and with something small. For example, you may need a change made to the text on the company’s website, but the person who would normally do that is unavailable before your deadline. If you knew how to alter the website’s code, you could perform your job faster or more easily. This section explores how coding might augment your existing job.