Chapter 18
In This Chapter
You must be good at math
You must have studied engineering
You can learn coding in a few weeks
You need a good idea to start coding
Ruby is better than Python
Only college graduates receive coding offers
You must have experience
Tech companies don’t hire women or minorities
The highest paying coding jobs are in San Francisco
Your previous experience isn’t relevant
The tech profession is filled with myths and rumors. It can be hard to separate fact from fiction, especially given the reports of eye-popping salaries and prices for company acquisitions in the news. After you cut through the hype, the tech industry is like any other, with demand for talent far exceeding supply.
The following are ten myths about coding that just aren’t true. These myths mainly apply to people learning to code for the first time. Read on to separate myth from reality.
Developers who are building cutting-edge games, data scientists trying to create the next big machine-learning algorithm, or engineers working in the financial services industry likely need some proficiency in physics, statistics, or financial math. However, many developers, such as those building e-commerce applications or typical web pages, do not need much more math than basic addition and subtraction, and high school algebra.
A good deal of math operates and powers applications, but there often isn’t a need to understand everything that is happening. Computer languages and programs are designed to manage complexity by requiring that you understand the inputs and outputs — but not what happens in between, a concept called abstraction. For example, when driving a car, you don’t need to understand how the internal combustion engine works or the physics behind converting the energy from the piston to the wheels. To drive a car you need to understand how to operate the accelerator, the brake, and the clutch for stick-shift cars. Similarly, programs have functions that perform operations, but you need to understand only the inputs you send a function and the output it returns.
In other words, you need to be able to understand math and have some basic math skills, but you do not need to be the next Einstein to be able to program.
Many people who study engineering learn how to program, but you do not need to be an engineer to learn how to code. Engineering teaches skills that are useful to programmers, such as how to solve a problem step-by-step as well as working within and then designing around real-world constraints. These are useful skills, but you can learn them outside the engineering curriculum.
Many topics that are part of an engineering curriculum vary in usefulness for learning how to code. Topics such as algorithms can be directly applicable, especially if you’re working on cutting-edge problems. Other topics, such as assembly language and computational theory, provide a good background but are rarely used by most coders.
If your goal is to push the cutting edge of computer programs, a degree in computer engineering might be useful. However, if you want to create a website to solve a problem, learning to code in three to six months is probably sufficient to start.
Like any passion or profession, coding is an art and coders hone their skills over decades. Although you don’t need decades of study to start coding, the amount of time needed to learn depends on your goals. For example:
Learning to code is a lengthy process, filled with ups and downs. You might get stuck for days or see much progress. During periods of inevitable frustration, having a bigger idea or a concrete reason to motivate you to keep learning can be helpful. Instead of trying to build the next Facebook, YouTube, or Google, try to build something that solves a problem you’ve personally faced. Here are people who learned to code and remained motivated with a project:
Each of these sites enjoyed a degree of popularity and were noticed by a huge number of users. If something similar happens with a site you design, it serves as a nice bonus. But even if it doesn’t, you’ll feel satisfied having solved your own problem.
You might wonder what language to learn first, especially given all the choices out there. You could start with Ruby, Python, JavaScript, PHP, Swift, Objective-C — the list goes on. To resolve this debate, you might search for which language is the best, or which language to learn first. You’ll find articles and posts advocating one language or another. Unlike comparing TVs or toasters, a clear winner is unlikely to emerge. Sometimes you can spend more time deciding which language to learn first than getting down to learning the language.
The most important thing is to learn a few easy scripting languages first and then choose one all-purpose beginner programming language to learn thoroughly.
Usually, beginners start with HTML, CSS, and JavaScript. These languages are the most forgiving of syntax mistakes and the easiest to learn. Then, after you learn these basics, choose Python or Ruby if you are interested in web development. You’ll find many online tutorials and help for both.
If you plan on doing work with a content management system such as WordPress or Drupal, consider learning PHP.
Don’t spend too much time deciding which language to learn first, and don’t try to learn all of them at the same time. Sometimes people hit a roadblock with one language, give up, and start learning another language. However, the end result is learning a little bit about many languages, instead of mastering a single language and being able to build a complete and functioning website.
Both Bill Gates and Mark Zuckerberg left college before graduating to start their own technology companies. To encourage more college dropouts, Peter Thiel, the billionaire founder of PayPal and investor in Facebook, created a fellowship to pay students $100,000 to start businesses and forgo school. Still, whether you can get a coding offer without a degree varies by company type:
Elite technology companies: Google, Apple, Facebook, Microsoft, Twitter, and Yahoo! are some of the world’s most elite technology companies. Because of their sheer size and name recognition, they employ recruiters who screen for certain attributes, such as college affiliation. College graduates from top schools apply to these companies in overwhelming numbers. Although it is not impossible to be hired at one of these companies without a college degree, it is very difficult.
To find out which colleges serve as feeder schools for the top technology companies, read The Schools Where Apple, Google, and Facebook Get Their Recruits, available at www.wired.com/2014/05/alumni-network-2
.
Studies have shown that there is no correlation between experience and performance in software development. For the new programmer, after you master some basic skills, your performance is affected by much more than the amount of time you’ve spent on a job. Despite the research, however, some companies still screen for years of experience when filling open positions.
Much of the same logic that applies to getting a coding job without a college degree applies here as well. Elite technology companies receive so many resumes and are in such high demand that they can be more selective, and look first at experienced candidates. Fortune 1000 companies usually take one of two approaches: They look for a minimum one to two years of experience, or they understand that as a new hire you’ll need training and use existing staff to help support you.
Startups and small companies typically pay the least attention to the number of years of experience and more attention to your previous projects. Your contributions to an open-source project or a weekend project that attracted real users will generate plenty of interest and enthusiasm for you as a candidate. Although it can be easier to get your foot in the door at a startup, remember that the company’s small size likely means there are fewer people and less money to devote to your training and support, so much of your learning will be self-supported.
Companies of any size willing to invest in developing your programming abilities will typically look for a positive attitude, a willingness to learn, and the persistence to keep trying to solve problems and overcome obstacles.
Whether in the Law and Order: SVU portrayal of women in technology or the national media reports of the high-powered lawsuit filed by Ellen Pao around her treatment in the technology industry, the tech industry has not had the best year for being welcoming of women and minorities.
Admittedly, the numbers show a story that has improved but still has plenty of room to grow, with the tech industry workforce made up of 25% women and 5% minority workers, which is below the national averages for both groups.
Although many contributing causes have been identified, including the lack of a pipeline of candidates studying computer science or applying to tech firms, many leading companies and nonprofits are actively trying to increase the recruitment and support of women and minorities in the workplace.
On the corporate side, larger companies are creating programs that train and increase the number of pathways to join the workforce. For example, Google recently launched a $50 million campaign called Made with Code to highlight women in tech and provide opportunities for girls to learn to code.
Similarly, nonprofit organizations such as Code 2040 connect Black and Latino talent to companies. On the training side, nonprofits such as Yes We Code, Girls Who Code, Black Girls Who Code, and Women Who Code teach technical skills to increase the number of women and minorities entering the jobs pipeline.
Many of the most famous tech companies, including Apple, Facebook, Google, Twitter, and Yahoo!, are located in Silicon Valley. While these and other companies in the San Francisco and Silicon Valley area hire a large number of tech workers each year, that paints only part of the picture.
Cities across the US pay tech salaries comparable to San Francisco but have a much lower cost of living, as shown in Table 18-1. Two numbers to keep in mind when evaluating a city are the average salaries paid to tech workers and the average cost of living. Salary minus rent provides a simple and rough estimate of take-home pay, though it doesn’t take into account taxes, transportation, and cost of goods and services.
Table 18-1 Salary and Median Rent by City
City |
Annual Salary |
Annual Rent |
Salary Less Rent |
St. Louis, MO |
$93,829 |
$9,900 |
$83,929 |
Seattle, WA |
$99,423 |
$21,492 |
$77,931 |
Austin, TX |
$93,135 |
$18,000 |
$75,135 |
Houston, TX |
$89,838 |
$18,000 |
$71,838 |
Washington D.C. |
$98,323 |
$26,700 |
$71,623 |
New York, NY |
$95,586 |
$29,100 |
$66,486 |
San Francisco, CA |
$112,610 |
$48,000 |
$64,610 |
Sources: Dice.com Annual Salary Survey, Zillow.com median rent prices
Although San Francisco does pay the most of any city in the country, it looks less attractive after subtracting the cost of rent from annual pay. By contrast, cities such as St. Louis and Seattle offer strong salaries with a much lower cost of living.
Coding skill is one important factor that tech companies evaluate when hiring coders. But just as important is your domain knowledge and ability to work and lead a team. For example, perhaps you’re a lawyer looking to switch careers and become a coder. Your legal knowledge will far exceed that of the average programmer, and if you target companies making software for lawyers, your perspective will be valuable.
Similarly, whether you previously were in finance or marketing, the issues around managing and leading teams are similar. It is natural for a team of people to disagree, have trouble communicating, and end up short of the intended goal. Your previous experiences handling this type of situation and turning it into a positive outcome will be valued in a tech company, where much of the coding is performed in teams.
Finally, your current or previous job might not seem technical, but others like you have made the transition into a coding job. People from a variety of professions — such as lawyers, teachers, and financial analysts — have learned how to code, and found ways to incorporate their past work experiences into their current coding careers.