Recommendations for Starting
I want to start this course off with some general recommendations for how to get started. If you ask people for advice on learning how to code, you will be given many different answers for what to learn and how to learn it. Much of the advice you will receive will not be wrong, but it can be overwhelming when you do not know what the best option is. The truth is, there are many different flavors of programming and much overlap between them all. It is not bad to learn one language over another or one style over another.
In this section, I will cover some general recommendations I have for getting started as well as frequently asked questions that you may have. The recommendations I make here are based on the assumption that you are new to programming and need some help getting started. Once you land your first job, you can steer your career in whatever direction you fancy.
No matter what path your career takes, there are some basics that you will need to learn first. I just want to give you an overview of the starting point up front, with more details being covered in the next few sessions of this course:
- You need to understand the options available to you for software development jobs.
- You need to choose a specialty; what type of applications you are going to build or the ecosystem you want to work in.
- You need to choose a language.
- You need to create a curriculum.
- You need to make a study plan.
- You need to take action.
Those are the steps that it takes to get started on your journey which we will cover over the next several modules of this course. You can worry about everything else – networking, building a portfolio, job hunting, etc. – after you have a plan and have already started learning. These topics are all covered in future sections of this course. Let’s dive into step one now.
Overview of the Flavors of the Software Development Industry
The field of software development is not just about being a coder; there are hundreds of verticals you can work in and thousands of ways to specialize in the industry. Let’s take a high-level look at some of the work environments and job options available to you. Keep in mind that all of these jobs and company types do overlap quite a bit and these are just generalizations.
Types of Companies
The atmosphere at companies can vary greatly depending on the type of company and industry. While you may not have the luxury of being overly selective when searching for your first role, you should take the time to thoroughly research the company to see if the role and company align with your ideal workplace and values.
Companies whose primary products are software or hardware applications are called tech companies. They include companies of all sizes but Facebook, Apple, Amazon, Netflix, and Google – called the FAANG companies – are some of the most well-known. I would also include two other renowned tech giants, Microsoft and Salesforce, on this list.
There are a few notable differences between working at tech companies versus non-tech companies. In my experience, tech companies usually appreciate their software developers more and give them more freedom to be creative and innovate. They are usually more receptive to adopting modern technologies and are often forward-thinking about the changing tech landscape. Additionally, tech companies are typically more open to hiring employees with non-traditional backgrounds, such as self-taught developers and coding school graduates.
There are small considerations I want to mention that you may not find in a job description. The developers I know who work for large non-tech companies in industries like finance or healthcare, usually have a business casual dress code (definitely no t-shirts or jeans for them!). and must adhere to a set schedule that requires them to be at their desk during regular business hours. If those two factors aren’t a part of your ideal work environment, consider if there are other company benefits that outweigh them or if the company can offer you any flexibility in those areas.
At times, in non-technical companies, the needs of the business and bottom line overshadow the technical expertise and potential offered by a team of developers. Sometimes business people are even put in charge of technical decisions. These companies traditionally don’t embrace the ‘get your work done whenever’ attitudes like many modern software development companies where their employees and developers are given the flexibility and many perks.
In my opinion, most people would enjoy working at a tech company, small or large, over a similarly-sized non-tech company.
Corporations include large companies with at least 1000 employees. Some benefits of working at these types of companies are that they have dedicated budgets for training, pay larger salaries, have plenty of opportunities for growth, and look great on your resume.
At large companies, however, your contributions may not be as impactful. As a developer at a large corporation, you will have a very specialized role and may start to feel like a cog in the wheel churning out lines of code. It can also be challenging to obtain an entry-level role at corporations because of their more formalized education and experience requirements. Many of them will reject candidates who don’t have an engineering or computer science degree. Your best opportunity for getting in the door is through networking with employees to get a referral, or with internal recruiters who can help expedite your interview process. If you’re given the opportunity, I highly recommend working at one of these companies when you are starting out. Even just a year of gainful employment at a large corporation will make the rest of your career and future job searches easier. In the unlikely event that you’re laid off before your one-year anniversary, chances are you’ll get a decent severance package that will support you while you look for a new role.
Mid-sized companies are the most stable and conservative option and have anywhere from 100-1000 employees. They are small enough that they can better support their employees on a more individualized basis, and aren’t large enough to push for growth beyond the sustainability of the company.
One perk of working for a mid-sized company is the flexibility they offer their employees; however, they do not usually carry the brand recognition or weight as the experience gained at a large tech company or corporation.
Startups & Small companies
Start-up companies usually have less than 100 employees and have only been in business for a few years, making them one of the most volatile types of companies to work for. The majority of all startups are venture-backed and are pushing hard to return a profit or grow quickly, sometimes at the expense of their employees. Startups are far more likely to either scale quickly or become acquired by a larger company.
Another factor to consider is that some startups are just a group of self-funded co-founders making a cool product, but these are less common and generally have fewer than 20 employees.
Personally, I worked for a self-funded startup with about twelve employees and it was one of the best decisions I made in my career. I was able to get one-on-one mentoring from someone who had been programming for decades and was very patient with all my newbie mistakes. I definitely recommend working for a startup or small company that is not just pushed to grow and keeps the well-being of its employees and stakeholders at the forefront. These companies only grow larger if it makes sense, not solely because of investor pressure.
There are, of course, downsides to working at these types of companies. The most common one is long work hours. Startups often require non-traditional hours and lots of commitment from early employees in exchange for growth opportunities and equity. Another drawback for smaller companies concerns their finances. Sometimes their budgets are so tight that they have to wait to hire more staff or invest in more company resources, and they can be less organized if they do not have a dedicated Finance or Payroll department. One company I worked for was routinely late with paychecks because of an overworked boss who let it slip his mind. If you’re the kind of person who wants routine hours and a stable environment, this might not be for you.
Because of their size, there are many opportunities to take on responsibilities outside of your everyday role. This can be a great opportunity to learn what you like and get extra experience, but it can also lead to more stress and longer work hours. Make sure you are upfront during the interviewing and onboarding processes regarding the hours you are willing to work and any accommodations you might need.
If you’re considering working for a small company or startup, oftentimes open positions aren’t posted on online job boards. One reason for this could be because they may not have the budget for Human Resources personnel, or they don’t want to pay to advertise on job sites like LinkedIn or Glassdoor. This is an instance where networking and keeping up with industry trends becomes just as important as having a killer resume and the right skillset (don’t worry, we’ll cover all that later).