Most of the content covered here will be specific to the Bay Area. Landscape differences due to geographical location are mentioned briefly below.
Career prospects as a Software Engineer
Almost every domain leverages on technology, hence Software Engineers are needed in almost every industry. Demand for engineers is higher than supply, leading to generally high-paying jobs. Moreover, the demand is continuously growing.
Computer Science is rapidly gaining popularity and engineering is a highly-regarded professional career. Unlike the creative industry, you do not have to be the top 1% of the industry to lead a comfortable life. An engineer fresh out of college working at a Silicon Valley company (both large companies and startups) can expect to receive a starting salary of more than USD 100,000 and it just gets better from there.
Require lifelong learning
Technology industry is an extremely fast-moving one. Many technologies used today didn't even exist/were popular a decade ago; in 2009, mobile app development and blockchain were pretty much unheard of. Engineers constantly need to upgrade their skills to stay relevant to the demands of the job market. Engineering is a great career for passionate individuals who like to learn.
A software engineering job is perhaps the most flexible job that exists in terms of hours, location and environment. Physical location is usually not an issue and there are many tech companies that are fully remote. There's no formal attire to be worn and working hours are generally flexible. Your co-workers would stare at you weirdly if you came to work wearing a shirt and tie.
Internships vs full-time
If you dream of working at a top-tier tech company one day, getting hired via an intern conversion is by far the easiest way to achieve that. Internship interviews are extremely short (usually just 2 rounds whereas interviews for full-time roles are usually 4-5 rounds). Internships allow you to work at a company over a short period of time (3 months or so) and helps in understanding the company and engineering culture better. Companies also tend to give higher return job offers to high performing interns as they have proven to be effective at the job and fits into the culture; hence hiring them is considered to be relatively low-risk.
Top tech companies pay a ridiculous amount for interns:
Salaries of top tech internships in 2016 (source)
Companies have different focuses depending on the stage they are at and the types of work to be done can also be vastly different. In the earlier stages where product-market fit hasn't been found, companies would be rapidly iterating on products and features, whereas larger companies that have already found the right product will focus on scaling their infrastructure and growing their users. Liquid compensation is also lower at early-stage companies due to the equity not being worth any money, but there is the chance of earning a lot more if/when the company IPOs or gets acquired.
|Early-stage Startup||Late-stage Startup||Large Company|
|Compensation||Base salary is a bit higher than big companies. Higher equity amount but its value is hard to judge as the company's valuation is unclear and stocks are not worth money yet.||Base salary is a bit higher than big companies. Company valuation is clearer and stocks have higher chance of being worth money.||Depends on the prestige of the company. Compensation is usually market standard or better. Stocks are worth money if company has gone public.|
|Types of Work||Mainly product development. Engineers have to wear multiple hats - Front End, Back End, DevOps, Design, etc.||Product development and some infra.||Diverse roles and specialized work; dedicated people for each role. Infra work is more common. Also more opportunities for internal transfers.|
|Career Ladders||Unstructured. No (or very vague) career levels. No formal mentorship nor training.||Somewhat structured.||Very structured. Well-defined career levels.|
|Iteration Speed||Extremely fast. Struggling to find product market fit.||Moderate. Has found product market fit, trying to grow user base.||Stable product with wide user base. Have to roll out changes incrementally and run experiments.|
|US (Silicon Valley/NY)||Singapore|
|Starting Pay||USD 100,000||Monthly $4320 (Median), $5000 (75th percentile)|
|Talent Access||Global talent, diverse nationalities and backgrounds||Usually regional, mostly Asians|
|Types of Companies||HQ of large companies (Facebook, Amazon, Apple, Google, Microsoft, etc), Startups||Branch offices of large companies, Startups|
|Types of Engineering Work||Depends on size of office/company||Both product and infra (building new programming languages, frameworks, and tools)|