This book is for informational purposes only. Except when an external source is cited, everything in the book is the author’s opinion. The author makes no guarantee about the correctness or accuracy of any content in this book. Furthermore, you may disagree with and/or find certain content offensive.

Read at your own risk. Do not continue reading if you do not accept full responsibility for all actions you take as a result of reading this book. The author is not liable for any damages including, but not limited to, academic failures, career path mistakes, financial loss, feeling upset, and physical/mental injury.

Chapter 18
Freshman Summer

Hopefully you have an internship or research position by the time freshman summer rolls around. This is your opportunity to shine and make a strong impression at work. Furthermore, in the absence of a full academic course load, your evenings and weekends start to free up. This free time gives you an opportunity to research and plan for your future job search.

In this chapter, we’ll start by discussing how to make the most of your freshman summer work experience. Then, we’ll survey various types of companies and roles you may want to target for your full-time job. Once you know where you want to be after graduating, you can plan out your future internships and coursework accordingly.

(Note: If you weren’t able to find an internship or research position, that’s fine too — take summer classes to get ahead in your academics and follow the steps in this chapter on full-time job planning.)

Succeeding at Work

Doing well during a freshman year internship or research position is straightforward: do the work you’re told to do. In terms of work ethic, be in the office around the time your supervisor arrives, and leave shortly after your supervisor leaves. Work a minimum of eight hours per day. If you find yourself idle, self-study computer science or do some career planning. Always appear busy, even if you’re just waiting on someone.

If you’re unsure about how to complete a task, then ask for assistance. Write down your thoughts and what you tried. Then find your supervisor and ask for their feedback on what you tried. It’s okay to get stuck as long as you show you made an effort. Ask for assistance within a few hours for small tasks or a few days for larger projects.

Finally, document all the work you’ve done. I recommend keeping a work log and writing a summary of what you do each day. This could be a physical journal or a virtual document. When you’re reviewing your performance with your supervisor at the end of the summer, you can look back at a paper trail of your accomplishments.

Beyond day-to-day programming work, you’ll have to learn office etiquette. How you dress, answer phone calls, write emails, construct documents, craft presentations, and make smalltalk with your coworkers are all important facets of the corporate world. Initially, you may have to experiment with these dimensions, but ultimately, you’ll find a style that fits your personality.

Your freshman summer work experience is an opportunity to settle into the corporate setting. Your programming projects should be straightforward. As long as you commit eight hours a day and demonstrate effort before asking for help, you’ll do fine and your supervisor should give you positive reviews. Beyond programming work, explore the various facets of office etiquette and find a style that suits you best.

Software Career Specializations

While graduation seems far away during your freshman summer, it’s never too early to plan for life after college. Your internship choices affect your full-time job opportunities and you will want to put thought into your sophomore and junior summer internships. For example, if you spend three internships building websites, then your best full-time opportunities will relate to website development and you won’t be as successful applying to game development companies or machine learning roles. In this section, we’ll preview the most common software career specializations. When you understand all the different domains you can pursue, you can narrow down what areas appeal to you and focus your sophomore and junior coursework and internships on those areas.

Website Development

Every major company needs websites; the web is here to stay, so website development will be in-demand for the foreseeable future. Websites usually contain a frontend and a backend. If you work with just the frontend, you are a “frontend developer.” If you work with just the backend, you are a “backend developer.” And if you work with both, then you are a “fullstack developer.”

Frontend involves everything with the consumer-facing user interface. For example, consider the Google search website: frontend developers would create the buttons, the search text box, and how all the search results are presented.

The backend involves fetching all the data needed to render the frontend. In the example of Google search, backend software processes a user’s search query, fetches the best search results, and sends those results to the user’s frontend for rendering. Note: do not confuse backend web development with backend infrastructure development, which is a separate role discussed in an upcoming section.

If you enjoy art, design, and/or visualizing what you’re making, then frontend is a great choice for you. If you prefer coding and less visual design, then backend engineering is a better fit than frontend. If you’re fine with a combination of both, then fullstack engineering is a good fit for you.

Both frontend, backend, and fullstack web development are great career paths. In general, frontend pays less than backend and backend pays less than fullstack. Frontend pays the lesser of the three because it is less technically-intensive than backend. Fullstack pays the most because it requires both the frontend and backend skillset. The pay differences are noticeable, but not too large, so all three paths are solid career choices.

Mobile App Development

In the 2010s, consumers shifted from accessing content on desktop browsers to on their mobile devices; consequently, major tech firms are rapidly expanding their mobile app development teams. While backend development is the same between websites and mobile apps, the frontend development is for a specific mobile platform rather than an internet browser.

As with frontend website development, if you enjoy the visual aspects of programming, then mobile app development is a great career path for you. The two major platforms are iOS and Android. While the programming languages are different among iOS, Android, and websites, the concepts are the same: buttons, text, images, layout, feel, and so on. Mobile app development pays slightly higher than website development because consumers are shifting from desktops to mobile devices. iOS developers also get a small salary boost over Android developers because fewer people can afford Apple devices to learn iOS development. Nevertheless, working with any of iOS, Android, and websites is sufficient and learning multiple platforms makes you even more valuable to a company.

Data Engineering

Earlier, we mentioned that a backend engineer needs to fetch data for the frontend to render; in many cases, the total amount of data to sift through is immense and data engineering manages all that data. Data engineering involves collecting, storing, and categorizing data. In the example of Google search, millions of computers scan the entire web, extract websites’ text and store the text to be analyzed later. With petabytes of data out on the internet, data engineers build solutions to maintain all the information in databases spanning thousands or millions of computers.

Data engineering is a great career choice for people who prefer working on the backend and enjoy complex, large-scale problems that challenge their technical abilities. In terms of salary, data engineering tends to skew slightly higher than website or mobile app development because of increased technical difficulty.

Machine Learning

Whereas data engineers manage the data, machine learning engineers analyze all the data to provide the insights that consumers appreciate. The backbone of a machine learning algorithm is one or more mathematical functions, such as “y = a*x + b.” a, x, and b are multidimensional vectors and matrices. * and + are complex mathematical operations — not necessarily traditional multiplication and addition. In the example of Google search, the inputs, x, could be the search query and the words in a web page. The function output, y, could be a score from 0 to 1 indicating a website’s relevance to the search query. Engineers optimize the coefficients, a and b, to make the function rank relevant websites close to 1 and irrelevant websites close to 0. The ranked results are displayed on the frontend.

Machine learning is a great career choice for people who prefer research-style problems. For any problem, there are many different functions one can design and many different ways to quantify what “desirable” means. Because the problems become extremely difficult and open-ended, machine learning pays much more than all the other career paths. With higher pay also comes higher job requirements: machine learning engineers often have significant research experience and advanced degrees in math, computer science, or other quantitative fields.

Backend Infrastructure Development

Backend infrastructure development is a catch-all for the glue connecting everything behind the frontend. Many software systems have tons of internal clockwork that consumers never see. In the example of Google search, a machine learning algorithm needs thousands of computers to build a model and some software has to manage those computer clusters. When search results are displayed to a user, advertisers need software to bid for their ads to be shown. Additional software has to bill the advertiser. The list could go on for hundreds more items and there’s never any shortage of backend infrastructure work.

Backend infrastructure development is similar to data engineering. Both are great career choices for people who enjoy challenging technical problems. In terms of scope, backend infrastructure involves a broader range of problems than data engineering, but both roles are rigorous and pay at similar levels.

Other Areas

Here are other potential career paths that tend to be more niche and less-general

Game development. Much of game development revolves around developing the backend game engine. There are strict performance requirements and the technical challenges are similar to backend development. Game development is a great path for those passionate about games, except the pay tends to be lower than for other roles requiring the same skills.

Security engineering. Security engineers prevent and detect bad actors trying to steal sensitive information or disrupt services. Security engineers are not hackers, though you may want to pursue this path if you enjoy thinking like the “bad guy.” The job involves monitoring the company networks for unusual activity, promoting security best practices within the company, and investigating breaches if they occur.

Site reliability engineering. Site reliability engineers ensure all the company’s services are up and running. They create scripts and monitoring tools to detect errors and keep systems resilient to failure. Site reliability is a good career path for people who prefer working on operational aspects of a business and ensuring complex software systems are never down.

Product management. Product managers drive a product’s vision. They interact with customers to determine what will satisfy their needs and with engineers to determine what software can be feasibly delivered. Product managers are often software engineers who enjoy interacting with others.

Project management. Project managers monitor progress to make sure software is delivered when promised to clients. They primarily interact with engineers and technical managers, build the schedules, and produce status updates for upper-level management. Project management is a good track for those who prefer a less-technical role.

Researching Job Roles

You want to avoid reaching your senior year and realizing that while you spent the last three years focusing on X, what you really wanted all along was Y. Know what you want to pursue so you can focus your studies and internships on the right topics. Spend your freshman summer evenings and weekends utilizing all the resources available to you to research job roles.

Online courses are a great way to test the waters while learning from a talented instructor. Coursera, MIT OpenCourseware, edX, and other sites have massive course catalogs covering everything from machine learning, to web development, to blockchain. Although you may get charged for some features, most sites offer instructional videos for free.

YouTube is another great place to browse and listen to others’ advice. Search for “software engineering career paths” and see what people say. If you’re interested in a particular topic but don’t want to commit to an entire online course, you can find a YouTube video giving a quick overview.

Industries

Now that we’ve gone over common software engineering roles, let’s survey the various places you can work at after college.

High-Prestige Tech Firms

Top tier tech firms are prestigious companies with the most sought-after engineering positions. Several large established firms fall into this category: Amazon, Apple, Facebook, and Google. Many startups that achieve unicorn status also fall into this category: Airbnb, Lyft, Square, and Uber, for example.

Top-tier tech firms hire for nearly every role: website development, mobile app development, data engineering, machine learning, backend infrastructure development, security engineering, site reliability engineering, product management, and product management. You can definitely find work that interests you among the wide array of technical problems that these firms tackle.

The pay and work-life balance at high-prestige tech firms is difficult to match anywhere else. Most people get promoted to senior software engineer between five and ten years, where compensation ranges from $300k-$500k per year. Besides a few anomalies, work-life balance is also lax for the high pay. The worst it gets is an on-call shift once in a while: you get woken up in the middle of the night and have to fix urgent software bugs affecting your product. Employees usually aren’t expected to work more than eight hours a day unless they want faster promotions. Plus, many of these firms have amazing benefits including great health insurance, free meals, and gym membership credits. You don’t have to work particularly hard and still get highly compensated.

Because top-tier tech firms offer so many great benefits, their interviewing process can be difficult to pass. You get asked tough questions testing your problem solving abilities. If you practice a lot, pass the rigorous interviews, and receive an offer, choosing to work at a high-prestige firm can be a no-brainer.

Medium-Prestige Tech Firms

Many established firms also fall into the medium-prestige category. Some medium-prestige firms are well off, but did not grow as exponentially as the high-prestige firms: Braintree, Nintendo, Spotify, Wayfair, and Zillow are all doing well, but you may not hear much chatter about those companies. Other medium-prestige firms were high-prestige at one point but lost their luster: for example, IBM and Yahoo.

Medium-prestige firms are identical to high-prestige firms, except in terms of brand and pay. Medium-prestige firms hire for pretty much every type of role, offer excellent work-life balance, but the pay is noticeably less. For example, senior software engineer compensation stops around $150-$250k. On the plus side, many employees work less than eight hours per day and sneak by.

Because the pay is lower, competition at medium-prestige firms is less intense. The technical interview questions will be less challenging than those at high-prestige firms. Although not as appealing as high-prestige tech firms, medium-prestige tech firms are still a great place to work compared to most non-software industries.

Small Startups

Most high- and medium-reputation tech firms have one thing in common: they were small at first and then grabbed more market share before growing into large, established companies. Companies in the small, early stage are known as startups. Although the exact definition is debatable, I view startups as non-public companies with at most a few hundred employees. You can find examples of startups by searching online, and I won’t list any examples since they usually aren’t well-known.

Startups are a riskier employment choice compared to medium- and high-prestige tech firms because startups are rarely profitable. Lack of profits leads to risky compensation. Because money is tight, a sizable portion of your compensation comes in the form of stock grants, essentially a percentage ownership of the company. If the company issues more stock for investor funding, your percent ownership is further diluted. Finally, if the company fails to secure funding from investors, then it has to close and any stock you accumulate becomes worthless.

On the upside, if a startup revolutionizes the world and the company goes public, then your stock becomes valuable and you can sell your accumulated stock for millions of dollars. Startups that explode are known as “unicorns” and they eventually become high-prestige tech firms. Recent examples of unicorn startups include Airbnb, Lyft, Square, and Uber.

As a collective group, startups hire for the majority of tech roles. Since manpower can be limited at startups, you may also work across a spectrum of roles, wherever the need is greatest. Relative to established tech firms with massive codebases and well-defined roles, startups are an opportunity to work on everything in a smaller codebase and see the big picture all at once.

In terms of compensation alone, I do not recommend joining a startup in lieu of a high-prestige tech firm. Around 90% of startups fail and the stock ends up worthless; the guaranteed income from high-prestige firms outweighs the massive downsides of startups failing. Startups versus medium-prestige tech firms is more of an even split. Choose to work at a startup if you believe in their mission or if you have experience identifying high-potential companies.

Algorithmic Trading

Outside of tech, algorithmic trading is a quiet industry that hires a lot of software engineers. Some big names in algorithmic trading include Citadel Securities, Hudson River Trading, Jane Street, and Jump Trading.

Established algorithmic trading firms are small compared to their tech counterparts. Algorithmic trading firms focus on having software buy and sell financial instruments to make money. They recruit heavily in the backend infrastructure and machine learning spaces and give bonus points to candidates who understand technologies related to their industry.

The work-life balance at algorithmic trading firms tends to be tougher, with engineers working closer to ten hours a day on average. On the positive side, compensation at algorithmic trading firms outgrows high-reputation tech in the long term. While senior software engineer salaries at high-reputation tech firms plateau around $500k a year, compensation for senior software engineers at top algorithmic trading firms often exceed $1 million.

Other Industries

Finally, here are a few other industries to consider that aren’t as well-paying as tech and algorithmic trading, but they do have niche job opportunities.

Government. One reason the government attracts talent is their spectrum of unique problems that you won’t find at other companies: counterterrorism, law enforcement, space exploration, and civic services, to name a few. Your pay will be lower than medium-prestige tech, but in return you get great benefits and fantastic work-life balance. Examples of government agencies include the CIA, FBI, NASA, and NSA.

Defense. Defense is another large industry with demand for software engineers. Like working for the government, the pay is lower than medium-prestige tech. You also may not enjoy building weapons. The plus side is you get by without working much at all because the US government is a guaranteed lifelong customer with a massive defense budget. Examples of defense companies include BAE Systems, Lockheed Martin, and Raytheon.

Consulting. If you enjoy traveling or like to finish projects and move on, then consulting is a great industry choice. Consulting firms typically hire software engineers to travel to client offices and work with them until the software project is complete. After you complete your project, your client rarely asks you to support it further because consulting companies will charge extra. Examples of prominent software consulting firms include Accenture, Deloitte, E&Y, KPMG, and PwC.

Miscellaneous Firms. A surprising number of firms need software. Here are some examples: brick-and-mortar stores need an online presence to survive against Amazon, pharmaceutical companies need software to automate their drug development, and airlines have complex booking systems. The software you write supports the main business of these miscellaneous firms. The pay is worse than at tech firms where your software is the business, but the hiring requirements are easier to pass.

Researching Industries

In conjunction with researching job roles, you should study all the industries out there with software roles. Avoid doing three internships at consulting companies and then discovering that you prefer a tech company. Avoid spending three years honing your web development skills and then discovering you want to work in the defense industry with very few web development opportunities. Prioritize what matters to you most: money, enjoyment, or impact. Then research salaries, job roles, projects, and how much work a company expects out of employees. Understand how these companies align with your preferences.

To maximize your compensation, target algorithmic trading companies and high-reputation tech firms. To gamble on a chance to strike it rich or to work on something impactful, target startups that you believe in. For an easy-going job that still pays above average, go with medium-reputation tech, government, or defense. For traveling and client interaction, choose consulting. Finally, unless the particular company’s mission resonates with you, I recommend only falling back to the miscellaneous firms when all other avenues are exhausted.

If you’d like a second opinion, you can join online communities and ask others for career advice. Reddit, Blind, Quora, and Discord all have strangers seeking input from other strangers on the internet. If you don’t like taking advice from random people, try reaching out to your network and talking with older computer science students to see their perspectives.

Looking to the Future

Your freshman summer work experience makes you more competitive when applying for internships during your sophomore year. More importantly, researching software specializations and industries helps you focus on the right things throughout the rest of your time in college. Whether you choose to pursue frontend versus backend, or high-reputation tech versus startups, you want to be armed with the correct coursework and internship experiences once it’s time to look for a full-time job. By the end of your freshman summer, come up with two lists: software specializations that interest you and industries that interest you. Then, find at least fifty companies that meet the criteria on both lists. You’ll be able to focus your sophomore year coursework and internship search on those areas.

Freshman Summer Checklist