Your Software Engineering Roadmap: Climbing the Career Ladder

With the non-stop demand for new software and mobile applications (the global application software market is expected to grow 24.3% CAGR from 2021 to 2028), there is no denying the heightening need for software engineers. In fact, the Bureau of Labor Statistics (BLS) notes the demand for software engineers is projected to grow by 25% from 2021-2031. 

So, with the evolving software landscape, how might this manifest in your career? The good news is there is a clear path forward in the software engineering field. 

If you’ve decided a software engineering career is for you, here’s your guide to the software engineering roadmap. 

Junior Software Engineers

Junior engineers perform a variety of entry-level tasks and projects for mid- and senior-level engineers. These may include:

  • Writing and maintaining code
  • Debugging software
  • Helping design software applications

Keep in mind, software engineering is a rather broad field. Thus, this is an excellent time to:

  • Learn and explore different avenues 
  • Reflect upon what you may want to specialize in later in your career

Job Titles

Job titles for junior developers can vary depending on a position’s specific focus. For example: 

Junior back end software engineer: Focusing on the server side of websites, junior back end engineers assist other higher-level software engineers with writing the underlying code to enable an application to operate. This involves understanding programming languages such as Java, Python, and Ruby. 

Junior front end software engineer: While back end engineers focus on the server side, front end engineers focus on the user-facing side of a given website or application. Front end Software Engineers at the beginning of their careers often leverage programming languages (e.g., JavaScript, HTML, and CSS) and design skills to help teammates build lasting software.

Junior cloud software engineer: A cloud engineer is focused on optimizing cloud-based applications and ensuring the programs meet customer expectations. At a junior level, you will typically handle your responsibilities under the supervision of a skilled cloud engineer. Understanding programming languages such as Java or C++ is recommended.

Salary Range

The salary range for junior software engineers is between $50,698 – $124,433 according to Indeed, with $79,426* as the average. Salary is dependent on location and experience.

Skills Required

Rest assured, it is possible to become a junior software engineer without a degree. Achieving this role requires commitment and dedication to the necessary hard and soft skills.

Hard Skills

Entry-level software engineers need excellent computer, programming, and development skills. They will also need to showcase this during technical interviews

Hard skills include knowledge of: 

  • Javascript
  • HTML
  • CSS
  • C++
  • Python 
  • Ruby

Soft Skills

Communication: While some tasks may involve working independently, more complex ones will merit teamwork and collaboration. Strong communication skills are the thread that cohesively weaves these parts together and will ultimately help one succeed in their role.

Willingness to learn: As a junior engineer, learning and development during this stage of your career is crucial. One must be willing to roll up their sleeves and continuously learn from different people and projects. This will lay the foundation for a successful and lucrative career.

Mid-Level Software Engineers

Junior engineers can progress onto a mid-level software engineering role after about 3-4 years working in a junior-level software engineer position. 

At this point in your career, you should have a good understanding of the software development lifecycle at your organization. In addition, you are confident in taking ownership of work with little direction and possess a high-level understanding of technical strategies.

Job Titles

With a more high-level knowledge, software engineers may choose to specialize in a particular area of software engineering. 

Job titles include but are not limited to: 

Systems engineer: A systems engineer works with IT firms and companies to install software programs. They maintain the overall system and conduct necessary repairs to safeguard security measures. 

Full-stack developer: Responsible for both front end and back end development, a full-stack developer creates visual designs for sites, mobile applications, and company platforms. They also run and maintain servers.

Salary Range

The salary range for a mid-level software engineer is $75,000 – $145,000 according to ZipRecruiter, with an average of $110,000.

Hard Skills Required

  • Computer science, design, and programming 
  • Python
  • JavaScript
  • Agile methodology
  • DevOps development
  • All programming languages noted under the junior-level section

Soft Skills Required

Problem-solving: Problem-solving is critical to a mid-level position, as you’ll dive into larger projects that require identifying errors and efficient solutions. This may involve staying up-to-date on new developments in software applications to make adjustments to match industry standards. 

Collaboration: Mid-level engineers must work with their teammates to ensure workflow processes are on track and aligned. For example, an engineer may need to be in contact with a user experience (UX) designer or project manager to test different applications/products and ensure projects are within budget.

Senior Software Engineers

As a senior-level engineer, you’ve reached one of the highest-paying software engineering jobs. You will begin to work with internal leads/managers/CTOs to design new software systems for your organization or clients. Depending on the nature of the role or team, you may spend more time mentoring, designing, and leading than programming.

Job Titles

Job titles include: 

Senior software engineer: With the responsibility of establishing and meeting goals regularly, senior software engineers divide complex tasks into a series of steps for the team. They do not need much guidance and provide project status updates to the executives/CTOs. 

Principal staff engineer:  The principal staff engineer often liaises with the chief technology officer (CTO) to build plans for the engineering department’s long-term strategy and implementation. They are responsible for ensuring the team meets objectives and stays within budget.

Other role titles may include engineering manager and director of engineering.

Salary Range

The salary average range for senior software engineers in the U.S. is between $90,730 – $222,239 according to Indeed, with $141,999 as the average.

Hard Skills Required

  • Over 8 years of experience as a software engineer
  • Knowledge of all necessary programming languages and/or cloud applications (depending on the nature of the role or company)

Soft Skills Required

Adaptability: Not everything will go as planned. Thus, as the project lead, you will need to excel at and be comfortable with adapting to changes. And, more importantly, discovering new avenues for growth and opportunities amid those shifts. Having experience working in an iterative development environment will work to your advantage.

Time management: As you often oversee the progress of projects and objectives, time management is critical to your success as a senior-level engineer. Time management not only involves planning milestones but building those milestones in a way that optimizes the team’s workflow.


After 10 to 15 years of experience in the engineering and IT field, you may choose to advance to an executive-level position at a given company. 

Being a part of the executive level involves making company-wide decisions and possessing the leadership skills to manage all technological aspects of the organization. This requires being comfortable liaising with key stakeholders across the business and working with them to design a comprehensive roadmap.

Job Titles

Job titles in this top bracket include:

Vice President of Engineering: A Vice President of Engineering’s supervision ensures the engineering team has what they need to execute desired results. They oversee duties for the team, such as recruiting, product development, quality assurance, budgeting, and strategizing. 

Chief Technology Officer: The CTO oversees an organization’s science, engineering, and technology efforts. They focus on aligning technology/engineering goals with other departmental and/or organizational objectives. This involves communicating with other executives and managing the engineering department’s budget.

Salary Range

The salary for a CTO ranges from $112,078 – $305,608 according to Indeed, with an average of $185,073.

Hard Skills Required

  • Knowledge of all programming languages 
  • Familiarity with high-end technologies 
  • Knowledge of product development in AI, Internet of Things (IoT), and security

Soft Skills Required

Decision making: A CTO must make strategic decisions on how to allocate resources and navigate issues while keeping aligned with company objectives. 

Leadership: A CTO must be able to lead and motivate with impact. This requires excelling at various leadership styles and understanding how to leverage them depending on the circumstances and individuals involved.

Learn and Grow with Flatiron School

Climbing the career ladder requires having the right resources and tools by your side. We encourage you to learn about and develop your skills using Flatiron’s Software Engineering program. Offering both part- and full-time courses, this program is meant to align with your schedule. 

Learn how Flatiron School can help you find success in your software engineering career path. Apply today

*Salary ranges and averages cited current as of September 2023 

The Art of Debugging

This article on the art of debugging is part of the Coaching Collective series, featuring tips and expertise from Flatiron School Career Coaches. Every Flatiron School graduate is eligible to receive up to 180 days of 1:1 career coaching with one of our professional coaches. This series is a glimpse of the expertise you can access during career coaching at Flatiron School.

Despite what one might assume, the essence of coding is not writing code that creates something you already know how to create. It is finding the solution to problems that are occurring in code that you have never written before. Though the endpoint of a project is the finished product everyone sees, the real work is done through the debugging process to get the product working before and even after launch. This is the beauty of programming. And, the better you get at it, the better programmer you will be.

Finding Your Debugging Tool

Each language comes equipped with tools that programmers can use to determine how their code works. These tools help find any problems that might be occurring in the code. 

In different programming languages, there will probably be two kinds of tools for debugging. This first kind will be to see the values of variables and functions in the terminal or console as all the code is run (i.e. Javascript and console.log, Ruby and puts, Python and print). The second kind will be a stoppage in code so that you can evaluate each value at that place in the execution of code (i.e. Javascript and debugger, Ruby and IRB, Python and ipdb). Each of these is very useful for finding where the values of the code are changing and possibly being used the wrong way. 

Personally, I prefer the console.log type of debugger because I like to look at the full runtime of the code, which allows me to trace an error through the code more effectively. For instance, if a parameter I am using in a function is showing up as undefined then at each point the function is being called I can console.log the value being passed in and trace the one that is undefined to where it is originating. Each programmer will have a preference of what they like to use though, so you need to find which makes the code clearest to you.

Where to Start Using Your Debugging Tool

The valuable thing about these tools is that they allow you to follow the data through the control flow of the code.  This is imperative to find what is wrong with the code if it is not performing the intention it is written for. To fix this, you must start at the point of the error. The point of the error is when your code had been working then something new was introduced, and suddenly the code is no longer working.

An example of a starting point might be seeing an error in the console of the browser that looks like this: 

This shows you that something you are trying to use the .map method on is showing up as undefined.  You can find this code at the file and line that is in the weather.js file on line 14 in the upper right corner. After you have found where the error is occurring you can then check what each value is and trace each step of the value and how it got to the place in the code it was failing. The question of what is happening at that point of error and what should be happening will give you the greatest insight into how to fix the problem.

How to Research Your Issue

To develop the question of how to fix the flow of the code, it is essential to narrow the question to the essential aspect of what you want the code to do and how you want it to manipulate the data in the variable or function. Once you know the exact point of where the information is changing in the wrong way, then you can isolate the question you need to research.  

In the example above, once you have traced the code back to where the variable is being set to an undefined value, then you can ask the question why is the variable being set to undefined at this point. This will allow you to look for a specific way to solve the problem. Whether you are asking Google, using ChatGPT, or perusing the documentation, with the right question in mind the answer will become easier to find.  The more specific the question you ask, the more specific the answer you will get back. It will also provide you with the knowledge to parse through information that does not apply to your situation.  Many people are willing to offer their expertise but it is your job to find the solution that best matches your question.


By finding your system of debugging and developing fluency in tracing code to the source of an error, you can then describe the process to potential employers and show that when you say you can solve problems it is not just lip service.  A systematic way of debugging shows employers that you have used the process before and solved complex problems through that process.  It will give them more trust in your ability to tackle bugs that might occur in the new feature you might be working on for them.  Get good at debugging and employers will notice.

About Joe Milius

Joe Miius is a Software Engineering Technical Coach at Flatiron School. He has previous teaching experience and has been helping Flatiron School students understand coding concepts for 2 years. He loves problem-solving and takes on each new problem or question a student presents with vigor and curiosity.

National Coding Week 2023 | Student Project Showcase

This year for National Coding Week we’re highlighting a few recent Flatiron School Software Engineering graduates and their capstone projects.

Jack Holmes: Cultivating The Art Of The Photo Dump

Jack Holmes created an image-sharing platform called “Dump” for his capstone project that used cloud-based web storage using Amazon Web Services S3, and self-join association and active storage, both created with Ruby on Rails. The app takes advantage of the recent trend to “photo dump” on social media platforms like Instagram, sharing several snapshots from a certain time frame or event at once. With his new app “Dump”, Jack hoped to encourage authenticity on social media, instead of the typical, carefully curated content that the algorithm presents to users. 

Try Your Hand At Software Engineering For Free!

Try Today

Mark Shkreli: Money Mavericks

For his capstone project, Mark Shkreli pulled on his background working in the finance industry to create a financial education web app called “Money Mavericks”. His goal was to combine both financial news and up-to-date market data to give individuals the tools they need to succeed as retail investors in one central platform.

Casey Ramirez: Rambler

Casey Ramirez’s inspiration for his capstone project “Rambler” was while he was on a walk, thinking about coding. The app is a health platform for tracking miles and coordinating group walks with other local users. Users can post walks, sign up for walks posted by others, and share activities. Casey created the app’s front end with React and the back end with Ruby on Rails.  

Jon Hause: Memry

Jon Hause’s capstone project “Memry” was inspired by his wife and their love of Broadway, restaurants, and travel. The app is a digital scrapbooking platform designed to help users remember their experiences, logged in a chronological timeline. Jon used React, React Routers, UseContext, Tailwind, and Date Functions to create the website’s Front End. He used Rails, Ruby on Rails, PostgreSQL, bcrypt, and Active Storage in the Back End. 

Elliot Wynn:

For his capstone project, Elliot Wynn created “”, a modern gaming library. He created the platform to help gamers keep track of their gaming libraries and create a “playlist” and filtering functionalities so that they actually play all of their games. He used React and Ruby on Rails to build the website.

Try Your Hand At Coding

The diversity of these projects, all from students who attended the same program and learned from the same curriculum, shows how coding knowledge can take you down a plethora of paths. 

Want to try out coding for yourself? Check out our Software Engineering Prep to learn the basics and see how you like the discipline. 

If you enjoy it, why not apply? An education in coding can take you far. And, in as little as 15 weeks, you could be ready to change careers into tech.

How to Become a Web Developer in 2023

Launching a career as a web developer can help open up a lot of doors in the tech world. Web development ranks as the fourth-best job in the tech industry. This promising career shows no signs of slowing down when it comes to demand, as overall employment is expected to grow about 23% by 2031.

If you are drawn to a fast-paced industry with problem-solving challenges and opportunities for career development, then a web development career may be the right path for you. Here, we’ll dive into how to become a web developer and what this career entails.

Key Article Takeaways

  • Web development is one of the most promising careers to pursue and is a safe option in an evolving economy.
  • Essential skills are JavaScript, HTML/CSS, and often other languages like C++, Swift, or Python. Soft skills are also important.
  • Web development offers high salaries, flexibility, and versatility. But there’s a lot expected of you.
  • Learning web dev skills can lead you down many career paths, including back-end and full-stack development.
  • Teaching yourself or attending college classes are fine options for learning, but coding bootcamps can be the practical choice.
  • Web development is well worth pursuing.

What Do Web Developers Do?

Web developers—also known as programmers, coders, or engineers—use front end computer languages to build websites, applications, and apps. They also update existing programs per client or employer specifications. Coding helps clients with front-end and back-end development to drive traffic to websites, programs, and apps. 

In short, web developers create a visual representation of the World Wide Web. Now that you know what they do, the next step is to identify the skills needed to learn web development.

What Coding Languages Do You Need to Know to Become a Web Developer?

There are several languages to choose from when learning to become a web developer or programmer, so it’s a good idea to review them. The different coding languages below detail which category they fit into and their primary uses. For a deeper dive into your language options, read our programming languages blog.  


JavaScript is the most popular language among web developers, and knowing it is an essential skill for almost any job function. Of the 1.11 billion websites, 98.3% use JavaScript. It is a versatile language often used on the server side. A vast majority of devices run on JavaScript, too, including iPhones, Android, Microsoft Windows, and smart TVs.

If you’d like to dabble in JavaScript, Flatiron offers free lessons that teach JavaScript. Codecademy also has a good intro program.

Typical Javascript roles include:

  • Software Engineer
  • Front End Developer
  • Full Stack Developer

A JavaScript developer earns an average annual salary of $116,751*. For a junior developer, that average comes in at $75,718 per year.


Python is a popular programming language that is easy to learn and use. This program is used in a variety of fields, including scientific computing, data science, and machine learning. It is also used to develop 2D imaging and 3D animation packages like Blender, Inkscape, and Autodesk. Typically, it is used in back-end coding.

Typical Python roles include:

  • Back End Developer
  • Full Stack Developer
  • Data Analyst
  • Data Scientist

The average annual salary for Python developers is $123,309. Entry-level workers earn $116,847 annually, on average.


Ruby is a popular scripting language used for web development and has a helpful community. It is a good language to learn because of its association with major tech companies. Ruby on Rails is a web application framework. 

Typical Ruby titles include:

  • Software Engineer
  • Back End Developer

Ruby developers earn an average of $125,000 per year.


SQL (Standard Query Language) is a standard language for sorting, manipulating, and retrieving data in databases. It is critical for sifting through massive quantities of data to answer specific business questions. In 2023, the average annual salary for an SQL developer is $96,296.


Swift is a relatively new programming language used to develop iOS and macOS applications. It is optimized for performance and built to match the realities of modern iOS development. iOS developers often use Swift and earn an average of $125,946 a year.


HTML and CSS are essential for learning web development and are the building blocks for websites. They are often the first languages any web developer learns and are essential at all levels, especially among front-end developers. Front End Developers earn about $109,843 per year.


Go is a low-level language that is ideal for systems programming. It is a compiled language that runs close to the metal and is open source. Despite its relative newness, Go is gaining popularity because it’s easy to learn and features a modern syntax. It is used by IT companies and data scientists, as well as for many Google applications. 

Data Scientists make an average of $127,128 per year.  A Go developer earns an annual salary of $104,840.


C is the root of many programming languages with wide uses in computer science and programming; C++ is simply an enhanced version of C. Developers proficient in this programming language can use the compilers for a variety of platforms, making applications developed in these languages largely transportable.

Figures show that C++ developers receive an annual salary of $118,851, on average.

Breaking Down the Pros and Cons of Being a Web Developer

Pro: Flexibility

Coding jobs are in high demand, so developer jobs often have great perks and work-life balance. The coding lifestyle fits very well with working remotely, so coders may have the choice to work on their own time—though this can vary by company and role. 

Pro: High Salaries

Computer programming is a highly lucrative career. According to U.S. News, software development ranks above all other job types in several categories, including:

Pro: Career Versatility

Being a coder means you’ll usually have a spot in almost any company. As the demand for automation and phone-based services expands, so does the demand for development jobs. This is the direction many companies are going in, so the demand for developers and web developers will follow suit.

Pro: Demand

As we touched upon earlier, demand for programmers, engineers, and web developers is only projected to grow and grow and grow. Software developer employment is projected to grow 25% by 2031, faster than the average rate for all occupations.

Pro: You Can Make Cool Things

We’ve all encountered websites with incredible “wow” factors. Web developers are responsible for creating some of the best experiences we have online, from the prettiest sites to the most functional ones. You can be the person who helps create that.

Con: Turnovers

Programming and development is a fast-paced industry, and there are a lot of benefits to that. However, changing jobs isn’t for everyone. Developers generally tend to switch jobs more often than other roles, and that could seem taxing to people who don’t want so much change.

Con: Startups Galore

Many of the companies that have the highest need for developers are startups. And with startups come more of the aforementioned change. Venture-backed, high-growth startups have many outcomes, both good and bad. Often, developers bear the brunt of this.

Con: New Languages

Developers are always expected to be learning. Languages and processes are always changing, and while that is exciting, there is often a lot expected from them.

What Other Jobs Can You Get If You Learn to Code?

There are a variety of in-demand jobs you can get by learning to code. People go down many paths in their first web development jobs, depending on their goals and ambitions. Consider what type of role you see yourself in when you decide which programming language you want to pursue and which bootcamps you might consider. 

The most popular development jobs are outlined below.

Web Application Developer

A web application developer maintains both internal and external websites for companies. To do this, they focus on designing and implementing application systems for use on websites and mobile applications. Developers in this area need a solid understanding of HTML, CSS, and other programming languages like JavaScript.

The average salary for this position is $108,068 per year.  

Software Engineer

Software engineers build computer systems, apps, and databases. The umbrella term—software engineering—is the main focus of Flatiron School’s flagship software engineering program.
The latest figures from 2023 show that the national average salary for software engineers is $139,952.   

Front End Web Developer

Front-end web developers make websites with form and function. The typical skills needed are HTML, CSS, and JavaScript to build websites and display them properly on web browsers. These developers work hand-in-hand with graphic designers and back-end developers to create functional and aesthetically pleasing web pages. The national average salary for a front-end web developer is $98,828.

Back End Web Developer

Back-end developers pull information from a database and relay it to a web user. They complete their tasks using PHP, JavaScript, Ruby, Python, or SQL. Back-end development focuses on data and uses these coding languages to pull information from a database to relay it back to the user.

The national average salary for a back-end developer is $107,918

Full Stack Developer

Full-stack developers know enough to create functional websites or troubleshoot issues on the back end of the site. Startups, medium-sized companies, and huge tech companies all need full-stack developers.

The national average salary for a full-stack developer is $124,218 a year. Learn more about pursuing this position.

Mobile Developer

Mobile developers create and publish iOS apps and Android apps with Swift. There is considerable room for growth in this particular field, as there is a high demand for apps, smartphones, and other mobile devices. The national average annual salary for a mobile developer is $114,669.

UX / UI Designer

UI/UX designers use code in their day-to-day jobs to focus on app user experience. They focus on user interface, user experience, and graphic design. Coding skills are often needed in day-to-day work. 

UX/UI designers earn an annual average of $115,956. Learn about the different kinds of design, including UX, UI, and graphic design, on our blog

Product Manager

Product managers work with developers and coders to act as the voice of the customer, understanding what they need and want. They benefit from understanding code and the functions of specific languages, which lets them address the needs of their teams.

They don’t need to be seasoned coders, but not knowing what goes into a product can facilitate project management and troubleshooting processes. The annual salary for product managers is approximately $153,698.

Database Developer

Database developers are responsible for the maintenance and development of databases. These employees can also work as database administrators, where they maintain the storage of information and make sure it is accessible to those who need it. Estimates show that they earn an annual salary of $108,713.

DevOps Engineer

DevOps professionals help companies innovate and stay competitive. In a business, they represent a team of professional coders, operations staff, and IT generalists. DevOps engineers make, on average $127,036 a year.

Data Analyst

If you learn the languages needed to become a developer but realize you love numbers, then becoming a data analyst might make sense for you. Data analysts are among the most in-demand positions in the realm of coding and computer science. They have skills that combine software engineering, coding, statistical analytics, and data visualization to tell stories and discover insights from big data.

They use Python, SQL, R, and Java to develop algorithms and build models to discover new problems and even predict consumer behavior. The average data analyst earns approximately $80,429 per year.

How to Get Started in a Web Development Career

Pursuing a career in coding does not necessarily require a computer science degree. Instead, this career requires dedication and patience—the years of experience come later.

Step 1. To get started, take some introductory lessons to see if you have a passion for coding. This passion is the single most important thing to get started in your career.

Step 2. Figure out what you’re interested in when comparing languages and job opportunities. There are several different types of developers, all of which have their unique benefits and drawbacks.

Step 3. Learn the skills you want to learn and stay diligent. Computer science classes and coding bootcamps can be hard. They involve a lot of learning in a short period, but once you’re done, it’s a rewarding feeling.

You can learn from professionals through bootcamps or get a degree in computer science.

Step 4. Build your online brand by establishing a good LinkedIn profile. Write about what you know and include any websites and apps you developed in your portfolio. From there, begin your job hunt. Once you begin the job interview process, make sure you practice for your interviews extensively beforehand.

How Do You Learn to Code?

To get a job in coding, you must first learn to code. Coding bootcamps are the best bet for getting into coding. These bootcamps are a middle ground between self-study and college degrees. They are more expensive and time-intensive, but they offer more support and motivation.

The entire purpose of a coding bootcamp is to get you job-ready as soon as possible without sacrificing education quality.

How Do You Know If a Coding Bootcamp Is Right for You?

Before you get into the program, it is important to pick the right bootcamp for you based on your goals, learning style, and expectations. You will want to look at the program’s success rate and curriculum.

Also, consider location. Some teach online, while others teach in-person. Some might focus on one or two specific languages, while others are more generalist, focusing on many different languages.

Find a bootcamp that teaches the languages that align with your goals and make sure they have career services. CareerKarma has an extensive list of the best coding bootcamps in 2023. Check out our web development bootcamp blog to learn more about coding bootcamps.  

Will Coding Bootcamps Get You a Job?

Coding bootcamps can help you learn to code quickly, but they don’t guarantee a job. During your research process, your selection must offer career services that will help you build an online presence after you graduate. 

Also, research job placement rates for any bootcamp you consider. Any good bootcamp will be open about how many of their graduates find jobs and their starting salaries. For example, we at Flatiron School release annual job reports.

Can You Teach Yourself To Code?

If a bootcamp isn’t for you, another option is self-study. While it is a cheaper option, learning on your own requires a lot of discipline. You must hold yourself accountable and solve problems on your own.

If you need additional resources, check our blog on the best websites to practice coding.  

How Long Does It Take to Learn to Code and Become a Web Developer?

The time it takes to learn to code varies based on a student’s diligence. Coding bootcamps take as little as three months to as much as eight months. Coding is a lifelong journey, and it is important to have a passion for learning as new languages and popularities will change rapidly. A career in coding is not far off if you’re willing to put in the time.

I’ve Learned to Code, but I Have No Experience, So How Do I Become a Developer?

If you learned to code, you need to prove it. There are a variety of ways to showcase your knowledge and understanding of coding. Write blog posts about topics you’re interested in or projects you’ve completed. 

Build out your professional brand across LinkedIn, Twitter, GitHub, and your website. Prepare for your interviews, as there will be soft skill and technical questions. Network in person and online to score more interviews.

Is Freelancing Worth It When Learning How to Code?

The key to getting started in freelancing is to find a strong gig marketplace. From there, apply for the gig that fits your situation. Follow up, and try not to get discouraged. Job searches don’t yield results, and then one day, they do!

Coders can have lucrative careers from freelance gigs, but first, it’s important to know where to start. Try getting involved with open-source projects. These projects consist of publicly available source code that anyone can modify. The ability to work with other coders of varying experiences can help develop your skills.  

To be more competitive, pick up some soft skills and come prepared for interviews. As your freelance career progresses, find opportunities to practice clear communication, conflict resolution, and time management.

Start Your Web Development Education with Flatiron School

As you can see, learning how to become a web developer takes time, patience, resources, and the right mentality. If you need the right guidance for career development, Flatiron School can help. Apply to our program and see how you can accelerate your profession as a web developer. 

*Salaries cited current as of September 2023

Ilolo Izu: Medicine to Software Engineering

Ilolo Izu, an April 2022 graduate of Flatiron School’s Software Engineering program, began his career on the “right” path. But, shortly after enrolling in graduate school, had a change of heart. 

He shares his journey from pursuing medicine to becoming a Software Engineer below.

A Background In Medicine

If you Google Ilolo Izu, one of the first things you’ll find – right below his LinkedIn profile – is his Wikipedia page. The fact that it exists is a testament to his hard work and the fairly substantial list of achievements he’d already earned before coming to Flatiron School. He studied Allied Health as an undergrad at Texas A&M University, where he competed as a student-athlete in track and field, setting a world record time for the 4×400 meters relay indoor in March 2018. He graduated with a Bachelor of Science, a minor in business administration, and a long list of student activities and awards. But, a few semesters into his graduate studies to become a Physician Assistant, Ilolo realized something – he wasn’t on the right path. 

“Living in a small west Texas town and studying 16+ hours a day made me reconsider what was important to me. I chose medicine initially because I knew it was a stereotypical good career,” he explained, “something that would gain some respect. Rather than finding something I was passionate about, I chose something I knew would give me a relatively good life.” 

Deciding On Tech

Following this revelation, Ilolo stepped off the path that would have led him to a career in medicine. In the search for his next career, Ilolo’s thoughts returned to an early childhood interest – technology. 

“I always have been a techie—whether modding video games like Minecraft growing up or even keeping up with the latest OS updates for all my devices or even trying to code my own game when I was in 7th grade from YouTube tutorials.” 

But, what made him finally pull the trigger on the significant life change, was jealousy. 

“I heard in a podcast that if a particular lifestyle or job makes you jealous, it’s a good inclination that it’s something you should try to pursue. After hearing those words, I took a big leap of faith into dropping out of grad school and pursuing learning to code.”

Bootcamp Experience

Having set his sights on pursuing a tech career, Ilolo enrolled in Flatiron School’s full-time online Software Engineering Live program. He chose the program primarily based on the testimony of previous graduates.

“Flatiron School had a solid reputation. I first heard of Flatiron when my friend working as a Software Engineer at Microsoft told me she had some coworkers who went through the bootcamp. This was really important to me as I knew that it wasn’t only about the skills that mattered, but also about the professionalism of each individual.” 

Joined by a cohort of other learners, he committed to studying 8 hours a day, Monday through Friday. Ilolo says that, while he “loved the technical projects” during his program, his favorite part was making connections with other students. 

“As an online student, it was especially important to me to connect with my cohort and build a sense of community. We worked closely together on a daily basis and held each other accountable for producing our best work.”

Despite being an online student, the cohort got to connect in person towards the tail end of the course. 

“I was thrilled to meet everyone in person during our final days in NYC, and we still keep in touch to this day. The bonds I formed with my cohort members have been invaluable in my career journey, and I’m grateful to have had such a supportive and motivating group of people by my side during the program.”

Job Search

Ilolo graduated from Flatiron School in April 2022 with a plan: to land his first role “within 3 months of leaving the program.” To achieve his goal, he started the job search early. 

“I began applying to positions during phase 2 of the program to gain experience and learn how to handle failures quickly. The hardest part was the technical interviews. You always hear they are hard, but you never really understand it until you take one. Once I became strict with my schedule, consistency was the only thing that I needed for everything to fall into place.” 

Ultimately, that persistence paid off. Within weeks of graduating, Ilolo landed his first tech job as an Associate Software Engineer at RippleMatch. 

“I was able to [land a role] within the first month. Consistency and dedication to my schedule played a big role in my success during the job search process.”

Working In The Field

When we spoke to Ilolo in March 2023, he had only good things to say about his new career. 

“As a Full Stack Software Engineer, I have the unique opportunity to dive deep into both the frontend and backend processes, enabling me to develop a comprehensive understanding of how everything fits together. Overall, the tech industry’s fast-paced and dynamic nature keeps me excited and motivated to continue learning and growing as a professional.”

And, if you’re wondering whether he ever thinks about his previous career path, Ilolo says that at their foundation, both fields actually serve the same purpose.  

“Being a software engineer [allows] me to still help people through the projects I’m building, similarly to how I was helping people in medicine.”

Ilolo also has enjoyed the constant pursuit of knowledge inherent to the field. 

“I love that technology is constantly evolving, and there’s always something new to learn and improve upon. I really love to learn and challenge myself. [Software Engineering] allows me to be a life-long learner.”

Curious to see what Ilolo Izu is up to now? Visit his portfolio website or his YouTube channel

Reflecting On His Journey

Looking back on his student experience, Ilolo’s biggest takeaway was the importance of “enjoying the process” and making the most of one’s time in the program. 

“During my time at Flatiron School, I learned that the journey is just as important as the destination. I realized that immersing yourself in the process and enjoying every step can make you a better engineer, designer, data analyst, or whatever you aspire to be. Utilizing the resources provided by Flatiron, such as the career coach, technical coaches, and fellow cohort-mates is crucial in achieving success. I found that everyone in the program is striving for the same goal, so working together and supporting each other is the best way to make it happen.”

As for his advice to other students hoping to transition into tech, he stresses the importance of making connections. 

“Make the most out of LinkedIn. Posting regular blog articles, setting up coffee chats, sharing technical insights, and growing your network can all lead to great opportunities,” he said. “Strong communication skills are just as important as technical skills, and building connections can often lead to unexpected successes. At the end of the day, people hire people, to work with people!”

As for what’s next, Ilolo looks forward to continued growth.

“Learning to code has been a challenging but rewarding journey. It’s allowed me to combine my love for problem-solving with my tech-savvy skills to create something tangible. Looking back, I’m grateful for the experiences that led me to where I am today, and I’m excited for what the future holds as a developer.”

Ready For A Change, Just Like Ilolo Izu?

Apply Now to join other career changers like Ilolo Izu in a program that sets you apart from the competition. 

Not ready to apply? Try out our Free Software Engineering Prep. Or, review the Software Engineering Course Syllabus that will set you up for success and can help launch you into a new and fulfilling career.

Read more stories about successful career changes on the Flatiron School blog.

Tristram Jones: Retail to Software Engineering

Tristram Jones, an October 2018 Software Engineering graduate from Flatiron School, began his career in sports retail before pivoting into tech for better opportunities. 

He shares his journey from Retail to Software Engineering below. 


A Michigan native turned Utah transplant and self-professed mountain lover, Tristram’s early career reflected that of somebody who loves to be active. After earning a Bachelor’s in Exercise Science, he worked at a running specialty store for 5 years. It was there that he first started to dabble in development. 

“While I was there I used Wix to help maintain the shop’s website. I eventually left the store and took my Wix skills to work for a digital marketing company,” he said. “We built cheap websites using templates and were forbidden from using custom CSS. The work was stressful and the websites weren’t great but I got a small glimpse into web development.” 

After 2 years at the digital marketing company, Tristram decided to move on to bigger and better things. To do that though, he’d need to expand and polish his skill set. 

“I wanted to learn more, and my pay was terrible,” he explained. “So I quit and enrolled in Flatiron.”

Deciding On Flatiron School

Tristram was committed to switching into Software Engineering, drawn by several very valid factors. 

“The higher compensation, temporal flexibility, and the ability to build things were all reasons I was drawn to the field.”

As for his decision to go the bootcamp route to grow his Software Engineering skills, as opposed to a traditional university, Tristram cites the support of trusted friends. 

“I have two friends that had gone to coding bootcamps in 2013 and pushed me to do the same. I needed the confidence to commit and [they] helped me see that I could be a good Software Engineer.” 

Although Tristram applied to several bootcamp programs, he says that Flatiron School was ultimately his first choice. 

“Flatiron School’s curriculum aligned with what I wanted to learn. I knew my aptitudes and interests aligned more with front end development and I hoped to gain a good grasp of React, ” he explained. “Flatiron was my top choice and, gratefully, I was admitted.”

Bootcamp Experience

Tristram enrolled in Flatiron School’s full-time Fullstack Web Development* program in July 2018. Joined by a cohort of other learners, he committed to studying 8 hours a day, Monday through Friday, at the school’s flagship campus in New York City. The transition into full-time studies, Tristram recalled, was abrupt. 

“I didn’t have time to complete all the pre-work and only had a very small base of knowledge before starting,” he said. “That made the curriculum much harder to master at such a fast pace.”

Despite a bumpy beginning, by the end of the program Tristram had built upon his initial interest with a new suite of development skills – supported by classmates and instructors throughout the course’s 15 weeks.

“I loved the final few weeks when we built our capstone piece. I loved the freedom to build, learn, and work through problems. But, my favorite part of the program was the people,” he said. “It made all the difference to be surrounded by other individuals as motivated, bright, and desperate as I was to make such a drastic career pivot. The instructors, I often say, were more talented in the art of teaching than my professors in college.”

Job Search

Tristram graduated from Flatiron School in October 2018 and jumped straight into the job search, focusing primarily on making connections. 

“I felt like networking in my area was the best way to land a job,” he said. “I messaged software engineers on LinkedIn and asked to meet them for lunch. One engineer recommended I join a public Slack workspace for JavaScript developers.”

It was through that recommendation that Tristram ultimately landed his first professional Software Engineer position. 

“The workspace had channels for different topics including meetups and job postings. I went to those meetups and applied to all job postings. I ended up getting a job at a startup that posted on that channel. They didn’t want to deal with the hundreds of applications they would have gotten if they had posted on a big job board.”

Working In The Field

When we spoke with Tristram in July 2023, he was currently working as a Senior Software Engineer at Vizient. Almost 5 years out from graduation, he says that he is loving his new career. 

“Reality is even better than I had imagined, I love what I do. I build things all day with almost absolute autonomy and never work weekends. I work from home, have a really cool team, and feel like I make a difference in my field.”

His advice for other Flatiron School students hoping to pursue a similar path is to focus on acquiring knowledge and skills. 

“LEARN! Read the docs first, then look for answers. Be humble and question your assumptions. And when you’re looking for a job,” he added, “prove that you know more than is likely assumed.” 

Reflecting on where he began his journey, Tristram’s thoughts center on the importance of pushing yourself past what you think is possible. Much like summiting a mountain, the hardest part of the climb is often simply believing you can make it to the top.

“I’m most proud of the moments when I took on a project that seemed beyond my abilities and pushed through my doubts to find success. Those stories remind me to trust my resilience more than my doubts.”

Ready For A Change, Just Like Tristram Jones?

Apply Now to join other career changers like Tristram Jones in a program that sets you apart from the competition. 

Not ready to apply? Try out our Free Software Engineering Prep. Or, review the Software Engineering Course Syllabus that will set you up for success and can help launch you into a new and fulfilling career.

Read more stories about successful career changes on the Flatiron School blog.

*Fullstack Web Development program is no longer available. For prospective students interested in this course of study, visit the Software Engineering course page to learn more.

11 Best Websites to Practice Coding for Beginners in 2023

Indeed’s Best Jobs of 2023 ranked America’s most highly prized careers based on demand, pay, and potential for growth. These careers included:

  • Full-stack developer (#1)
  • Data engineer (#2)
  • Back end developer (#6)
  • Site reliability engineer (#7)
  • Director of data science (#25)

That means half of the top ten best jobs in America require coding skills‌. But, if you don’t have coding skills, where do you go to learn them?

At Flatiron School, we help pave the way for your transition into the tech industry. Our comprehensive programs are designed to provide you with the foundational knowledge you need to develop the coding and programming skills that are in such high demand. Our programs help students discover their full potential and pursue the career of their dreams.

But maybe you’re just ready to dip your toe in and explore your options? There are several coding for beginners resources online.  
So whether you’re looking to learn a new coding language or try out programming for the first time, it’s worth looking into coding practice sites for beginners.

11 Best Coding Practice Sites

Coding is not a spectator sport. It’s great to watch tutorials and read books on how to code, but to truly develop your programming proficiency, you must write the language yourself. Here are some of the best places to practice your coding skills.

1. Coderbyte

As you begin to develop your coding skills, you may be unsure what to practice first. It helps to work on real-world problems other coding professionals have faced—and Coderbyte has exactly that. With over 2,000 challenges on front and back end development, data structures, and algorithms that professionals have faced in their interviews, you’ll be able to hone your skills on examples that really matter.

Pros of Coderbyte

‌Coderbyte lets you use over 30 different programming languages and has a library of over 3 million solutions you can learn from.

Cons of Coderbyte

Coderbyte has a user interface that’s often complex for new users to navigate, so it might take some time getting used to this site.

2. Pluralsight

If you’re seeking a comprehensive learning platform that allows you to learn at your own pace, go with Pluralsight. You’ll develop a strong skill set in Python, JavaScript, HTML, and CSS, just to name a few. You can also receive learning recommendations based on what you’re focusing on.

Pros of Pluralsight

The platform provides a personalized learning experience as you can customize your training sessions with multiple features, including multiple language support.

Cons of Pluralsight

Users have minimal interaction with course instructors and industry experts, which makes it difficult to gain valuable feedback.   

3. Edabit

Unlock over 10,000 interactive coding challenges with Edabit. This free platform provides courses that are simple and practical. You can also access beginner tutorials to make the most of your learning experience. Plus, the challenges are ranked by difficulty, so you know exactly what level you’re at in your programming expertise.

Pros of Edabit

Learners gain access to a code editor that’s built into the platform. That way, users can create a code without having to switch to another application.

Cons of Edabit

You don’t gain a certificate for completing any of the tutorials. Also, some users have stated that the platform used outdated programming languages. 

4. CodinGame

Wanna play a game? CodinGame lets you practice your coding through fun games and code challenges. With single-round matches and both solo and multiplayer modes, this platform gives you a chance to practice coding the fun way.  

Pros of CodinGame

There are over 25 available programming languages.

Cons of CodinGame

Some users take issue with the size of the timers displayed on the programming tests. Unless you look carefully for the timer, you may miss the opportunity to submit your questions on time. 

5. CodeChef

Competition can be the best motivator to learn, and CodeChef offers exactly that. This platform lets users measure their skills by practicing more than 3,000 problems. You can compete against other coders, which creates great coding practice for beginners. But don’t worry—the competition is friendly, and participants often write posts and tutorials to help each other learn.

Pros of CodeChef

CodeChef users will be pleased to know that there is an active, supportive community that encourages growth. 

Cons of CodeChef

Users report that some practice problems lack clarity.

6. Project Euler

Project Euler offers a chance to solve challenging math problems with script. Over 1 million users have solved at least one problem on the site.

Pros of Project Euler

The site offers 111 programming languages.

Cons of Project Euler

If math isn’t your strongest subject, Project Euler may not be for you. The math-oriented programming languages get quite complex as you progress through the challenges.

7. TopCoder

Join a community of 1.7 million technical experts at TopCoder. On the learning side, they have an abundance of weekly challenges and explanations, along with challenging competitions that help you rise to the coding occasion.

Pros of TopCoder

The site is one of the most established platforms with an active user base.

Cons of TopCoder

Some users have experienced difficulty navigating the program’s user interface. Also, if you submit a support request, it may go unnoticed as their support system lacks efficiency.

8. One Month

Learning coding and web development in a span of 30 days with One Month. You can select from a variety of basic courses that cover HTML, Python, SQL, Ruby, and more! You also get to create real-world projects.

Pros of One Month

This user-friendly resource is great if you’re just looking to learn the fundamentals of coding and web development.

Cons of One Month

If you decide to switch to another programming platform, just note that there are no refunds available.

9. Geektastic

With detailed solutions to their multiple-choice and peer-reviewed coding challenges, Geektastic has a wealth of resources for programmers and a growing community of over 26,000 developers.

Pros of Geektastic

In addition to their interactive challenges and competitions, coders that rank high enough might even be allowed to join the review team. Members of this team get paid to review coding submissions for clients seeking a solution to their own coding projects.

Cons of Geektastic

Some users have raised concerns with how the challenges are scored, stating that they don’t reflect a candidate’s programming skills well. 

10. Geeks for Geeks

Made by developers for developers, Geeks for Geeks offers coding content for programmers of all skill levels, including beginners. Exercises in data structures, machine learning, web development, and much more are available.

Pros of Geeks for Geeks

Competitive challenges offer interactivity and a space to share coding solutions.

Cons of Geeks for Geeks

Geeks for Geeks primarily provides information in English, which means non-English speakers could run into trouble with the resources available. The website also has limited multimedia resources, mostly relying on text-based information.  

11. HackerEarth

What’s great about HackerEarth is that users can create and customize their coding assessments for technical positions. 

With HackerEarth, you’ll join a community of 7.6 million developers, participate in several programming challenges and customize your tests for a specific role.

Pros of HackerEarth

Not only does the website offer support in multiple languages, but it also includes AI proctoring to ensure exam results are accurate and reliable. 

Cons of HackerEarth

You might run into trouble navigating to specific problem types because the website has troublesome indexing and prioritization. 

Blogs to Help You Learn

They may be less interactive than competitions and online courses, but plenty of coding for beginners blogs are available to help new students gain programming proficiency. Here are some of our favorites.

1. The Crazy Programmer

This blog isn’t designed to give hands-on coding experience, but there’s a wealth of programming knowledge on pretty much everything else. From useful books and articles to tutorials and Q&As, The Crazy Programmer is a great blog to follow for those just learning to code.

2. The Blog

If you’re looking for courses or content that will grow your coding skills, The Blog will help you look in the right places. Written by a community of programming professionals, this blog is devoted to grading the most useful coding content so readers know they’re relying on quality sources. 

The blog touches on a wide range of topics, though, so those looking for resources on a specific language may find their content hit and miss.

3. Better Programming

As its name suggests, this blog is devoted to improving your programming. With posts on a range of topics in web design and coding, Better Programming features content from multiple industry pros on both introductory and advanced content. There’s truly something for everyone. As with, those concentrating on a specific topic may want something more focused.

Flatiron School: The Ultimate Coding Solution

What makes us different from coding websites? Here at Flatiron School, we work tirelessly to help students gain the foundational coding skills they need to begin a career in the tech industry. Combining flexible program options, industry-leading education, and up to 180 days of Career Coaching upon graduation, Flatiron School gives our students the jumping-off point they need to begin a rewarding tech career.  

Our programs contain a mixture of lectures, group work, instructor guidance, and community support to both equip our students with technical skills and prepare them to work effectively on a team. No matter what level a student begins at, Flatiron School’s Software Engineering program can take you from a complete beginner to industry-ready in as little as 15 weeks. 

If you’re committed to a career in tech, we’ll teach you the skills you need to succeed. 

Apply today to get started. Not ready to apply? No problem – test out our material with Free Software Engineering Prep Work or download the course syllabus.

If you’re an employer looking to bring new talent to your team, check out our tech training solutions and see how you can invest in your company’s growth. 

The Abstraction of Parameters

This article on the abstraction of parameters is part of the Coaching Collective series, featuring tips and expertise from Flatiron School Career Coaches. Every Flatiron School graduate is eligible to receive up to 180 days of 1:1 career coaching with one of our professional coaches. This series is a glimpse of the expertise you can access during career coaching at Flatiron School. 

While programming, you may want to have the same thing happen more than once but at separate times in the code. You can copy and paste the code from the first instance, but then you have repeating code throughout your project.  

While a practical solution, doing this adds many lines of code for you or others to parse through to find a bug should one occur. 

To help minimize code size, stick to DRY (Don’t Repeat Yourself) code.  Using functions with parameters and arguments allow you to reuse that same code over and over without adding all the lines of code each time.

What is a parameter?

A parameter is kind of like a variable that belongs to a specific function. Just like a declared function waits to be invoked or used somewhere in the code, the parameter waits to be given a value. It just sits there in the function until it is utilized and given a value.  

When declaring a function you must also declare the parameter that is attached to it.  To declare the parameter all you need to do is give it a name in the parentheses of the function you have declared. The syntax looks something like this in JavaScript:

function myExample(myParameter){

return myParameter


When giving a parameter a name you can name it anything you want to (as long as it doesn’t repeat the name of another variable or function in the same scope). However, it is helpful to others reading your code (and as a reminder to yourself) if you give the parameter a name that represents the value it is given. 

For instance, if you have a function that converts Fahrenheit to Celsius, then the value you want the function to change will always be the Fahrenheit temperature. So, calling the parameter “Fahrenheit” would be ideal.

function convertToCelcius(fahrenheit){

return (fahrenheit – 32) * 5 / 9


In this case, the parameter called Fahrenheit will always represent the temperature to be converted to Celcius when the convertToCelcius function is invoked and given an argument.

What is an argument?

Functions exist in two states. 

The first state is the declaration, or architecture of code that will happen when the function is used. 

The second state is the invocation of the function. This is the signal that the code in the declaration of the function should go through its coded steps. The parameter exists in the declaration version of the function and the argument exists in the invocation of the function. The argument is the value that is given to the function and, thus, assigned to the parameter of the function. 

In the previous example, the argument would be provided for that function similarly to this:


This signifies to the code that the steps in the previous function example should go through its steps with the parameter (in this case called Fahrenheit) equal to 78. So, when you invoke the function like this, the code for that one time the function performs its steps is essentially the same as this: 

return (78 – 32) * 5 / 9

Notice that the parameter was replaced by the argument that was given to the invocation of the function. That’s because the parameter is essentially a stand-in for the argument that is passed in. This is what makes the function dynamic and reusable with different values.  

How Are Parameters and Arguments Linked?

The parameter of a function is like a container that can hold different things in it. Let’s say you have a favorite glass that you like to drink out of for every meal. On that glass, there is a label of ‘drink’. For breakfast, you have eggs and toast and your ‘drink’ glass you fill with orange juice. After breakfast, the ‘drink’ glass is empty so you can use it again for lunch (after rinsing of course). For lunch, you have a ham sandwich and fill your ‘drink’ glass with milk. Afterward, it is empty again and can be used for dinner and so on.

For each meal, the glass stays the same and always has the label ‘drink’. What changes is what the glass holds. If the meals represented a function, ‘drink’ would be a parameter in that function. Whatever it is filled with represents the argument for each meal (or the invocation of the meal function).

In Conclusion

Using parameters and arguments in your function allows you to reuse the code in the function for different purposes. This will keep your code sleek and minimize the lines you must trace back to find bugs in the code. It also shows employers that you can develop dynamic code for use in multiple places in an application.

About Joe Milius

Joe Miius is a Software Engineering Technical Coach at Flatiron School. He has previous teaching experience and has been helping Flatiron School students understand coding concepts for 2 years. He loves problem-solving and takes on each new problem or question a student presents with vigor and curiosity.

Jon Brundage Jr.: TV Production to Software Engineering

Jon Brundage Jr., a June 2021 Software Engineering graduate from Flatiron School, rethought his initial career choice during the COVID pandemic.

He shares his journey from TV Production to Software Engineering below.

Pre-Pandemic Career Path

Jon Brundage Jr. began his career with a degree in Media Studies and spent more than a decade in the field. But, like many others in the media, the 2020 pandemic threw a wrench in his plans. 

“I came from a twelve-year career in freelance television production working as a director of photography and camera operator,” Jon said when we interviewed him earlier this year. “When the pandemic hit, I had a lot of downtime to reassess what I was contributing to the world.”

While the world stood still, Jon used his time to take a tally of his current occupation. Through that contemplation, he came to the conclusion that it was time to pivot paths.

“[TV] Production is fun, but it is very physically demanding and requires a lot of time on the road. My wife was also pregnant with our son, and I knew I did not want to be a parent who was always away,” he explained. “So, between wanting to be more meaningful and intentional with my career and wanting more balance between life and work, I decided to make a change.”

Pivoting To Tech

Having decided to make a switch, Jon quickly settled on Software Engineering, citing the field’s versatility and demand. 

“I knew that software engineering would open a lot of doors to explore my next role,” he said.
“There are so many different types of companies and organizations that [need Software Engineers] and I was very attracted to the idea that my skills could be transferable to a wide swath of industries and employers.”

But, as a husband and soon-to-be father, Jon didn’t want to take the traditional 4-year degree route. To get to his goals faster, he started looking into bootcamps. 

“I asked some friends and family who worked in tech where I should go. Flatiron School [was mentioned by] my best friend who has been a software engineer for years, as well as my brother who is an accomplished graphic designer,” he said. “After some initial research, I knew it was the right choice for me to have a solid foundation to start a new career.”

Bootcamp Experience

Jon enrolled in Flatiron School’s Software Engineering Live program in March 2021, an accelerated, intensive course. Students in the program study full-time – 8 hours a day, Monday to Friday – for 15 weeks. Learning new Software Engineering skills at the break-neck pace, Jon said, was difficult to adjust to at first.  

“The most challenging part of the program was the gear switching,” he explained. “You spend two weeks learning something new, practice and test on it for another week, and then start all over. By the third phase I was used to it, but it’s overwhelming for the first few weeks.” 

What pulled Jon through the beginning difficulties of the course was the phase one instructor that helped him adapt to the material. 

“My favorite part of the program was my phase one instructor, who completely laid the foundation for my success in the program,” he said. “[He] explained this new world of Javascript in a way that was very accessible and had so much patience for all of my questions. He took this very big, intimidating process and gave me the tools to feel empowered from day one and I will be forever grateful for all his tutorage.”

Job Search

Jon graduated from Flatiron School in June 2021 and jumped straight into the job search, focusing primarily on making connections.  

“I put a lot of energy into networking. I asked friends and friends of friends if they knew any Software Engineers and if they’d have time to chat over coffee or Zoom,” he recalled. “I’ve always thought face-to-face networking is the biggest bang for your buck in job hunting, to this day.”

His original perception of Software Engineering being an in-demand skillset ultimately turned out to be true when a recruiter reached out to him with an opportunity. 

“I was extremely lucky in my job hunt. My current company actually found me and, after a few interviews, they brought me on as a part-time contractor. After a few months, I became full-time staff.”

Working In The Field

When we spoke with Jon in June 2023, he’d been working as a Creative Technologist at Schema Design for just under two years. His experience working in the field, he said, has been overwhelmingly positive. 

“I am thoroughly enjoying my new career. I work for a design firm and my role is fairly client-facing, which has a good amount of overlap of soft skills from my previous career,” he said. “My projects and stacks change every few weeks or months, so I’ve gotten my hands on a ton of technologies in the last year and a half. I’m learning new skills every day and constantly asking myself ‘How can I do this better?’.”

His position has also allowed him to expand his development skillset – building on the foundation he developed while at Flatiron School. 

“My company specializes in data visualizations so from the start of my job, I’ve learned some really cool frameworks and libraries. I’ve built sites in React, Vue, and Svelte, and some pretty cool interactive experiences with d3 and Three.js. [I rebuilt] the company website from scratch a few months back in NUXT3, which I find to be an amazing framework. It offers universal rendering so you get the flexibility of single-page applications, while also the performance and SEO of a static site. You can check it out at”

Reflecting On His Journey

Looking back on where he began three years ago, Jon emphasizes the importance of believing that you can actually make a change. 

“My biggest takeaway from Flatiron School was that I am capable of learning new tricks. I’d been in my former career for over a decade and worried that I wouldn’t be able to adapt to a new setting,” he recalled. “It took a while to believe in myself and get over impostor syndrome, but eventually, you do eventually feel like a real Software Engineer.”

His advice for current and future Software Engineering students is to lean into the uncomfortable nature of change. 

“Learn to be comfortable with not knowing. So much of software engineering is getting a problem or task you haven’t solved before and figuring out how to tackle it. Be confident in your ability to learn new skills, and know that this feeling of not knowing exactly what you’re doing means you’re on the right track. It isn’t forever and you will see tangible growth in even a few months from where you’re at right now.”

Ready For A Change, Just Like Jon Brundage Jr.?

Apply Now to join other career changers like Jon Brundage Jr. in a program that sets you apart from the competition. 

Not ready to apply? Try out our Free Software Engineering Prep. Or, review the Software Engineering Course Syllabus that will set you up for success and can help launch you into a new and fulfilling career.Read more stories about successful career changes on the Flatiron School blog.

Version Control With GitHub: A Guide

This article on version control is part of the Coaching Collective series, featuring tips and expertise from Flatiron School Career Coaches. Every Flatiron School graduate is eligible to receive up to 180 days of 1:1 career coaching with one of our professional coaches. This series is a glimpse of the expertise you can access during career coaching at Flatiron School. 

Have you ever been working on a project and gotten to a point where you wanted to rewind? Perhaps start over from a previous point and go in a different direction? Hitting undo until you get there would work, but then you’d lose all the work that you had. Wouldn’t it be nice if you could go back but still keep all your work? Well … there is for coding!

What is Version Control?

Version control is a system to keep track of each change that is made to the code in a project. 

Many systems can be used for version control. In the Flatiron School Software Engineering program the focus is on using Git and GitHub. Git is the most widely used version control system and is used in conjunction with GitHub. 

Git commands run locally to track each version and change made to a project on your computer. GitHub stores all those changes so that other people can review the changes.

Why Is Version Control Important?

The importance of version control is not just to show you know a new technology but also to show you can manage larger projects in an organized way.

Using version control will be crucial because you will have many people collaborating on the same project and keeping track of all the different code coming into the project in an organized way is essential. It will allow your managers to review your code before integrating it and it will allow your contributors to apply your code to theirs. 

Showing employers that you can organize your code and be able to compartmentalize code into workable sections that can be integrated or reverted will show them that you have the foundations to work in a collaborative environment.

Git Basics

While completing the labs in the Flatiron School Software Engineering program you will become automatic in the basics of Git version control. 

Each submission will be prefixed with git add . , git commit -m “Completed”, git push. These are very good commands to get used to using, and even better to understand what is happening with each command. 

The git add . command takes note of every file that has been changed in the directory and puts them into the staging area. Take note that the period at the end of the command is what signifies ‘all’ the changed files. 

The git commit -m “Completed” command takes those staged files and designates them to be tracked by an identifier.  This allows each newly committed version to be reviewed or reverted back to.  Then, finally, the git push command sends the committed files to the software holding each version, in Flatiron School’s case it is GitHub.

Beyond the Basics

Once you’ve got the basics, it’s helpful to familiarize yourself with additional commands. The deeper Git knowledge you have, the more applicable you’ll be in larger projects with multiple contributors. 

There are several commands you will want to explore to get a greater sense of compartmentalization in Git. They are git branch, git checkout, git merge, and git pull. These commands will help you store commits into a specific section of a project that you are working on.

Git Branch and Git Checkout

There are two ways to use the git branch. The first is to bring up a list of branches that are associated with the project you are working on. The second way includes an argument after the command and creates a new branch that can be worked on. 

For instance, the command git branch new-branch will create a new branch of the project called new-branch.  You can then start working in that branch with the command git checkout. Git checkout also requires an argument to move into whichever branch you want to work on. 

An example of this would be git checkout new-branch. This command would have you working in the branch created by the command git branch new-branch. This will compartmentalize all the code you are working on for a particular feature of an application or website. 

If you have multiple contributors to the project, then the other contributors can review the code before applying it to the main branch of the project. It also allows you to revert the project to a previous state if the new code creates an error. This is extremely helpful when a project has been deployed and you want to integrate a new feature. If the new feature breaks the application, you can return to the main branch to the commit before the integration.

Git Merge and Git Pull

If you are working on a branch of the project that does not have the most updated code of the project you are not going to know if your code will conflict with the updated code. This is where git merge and git pull help. They allow users to see how new code interacts with previous code and how the new code can be integrated with the deployed branch of the project.

To integrate the new code into the project’s main branch, you will want to ensure you are currently in the main branch.  You can check this by running the command git branch. This will give you a list of branches and the one with a * next to it will be the branch you are currently on.  When at the main branch you can take all the new code from another branch. Then, incorporate it into the main branch with the command git merge new-branch.  The argument that the git merge command takes is the name of the branch you want to integrate with the current branch you are on.

In the case that another contributor merged code on the repository stored on Git Hub and you do not have that code in your local directory, then you want to use the command git pull.  This command will take all the code that another contributor added to the repository and integrate it into the branch that you are currently working on.

Final Thoughts

The practice of version control in Git will help you prepare for a professional role. It also will allow an easier transition into the workflow of the position you land. Even in your professional experience, it would benefit you to take the git commands mentioned here and expand on the multitude of git actions that you have access to (  This will help keep your team’s code organized and manageable.  It will also make it much easier to find bugs and fix them.  Being more efficient in your process is a benefit to everyone.

About Joe Milius

Joe Miius is a Software Engineering Technical Coach at Flatiron School. He has previous teaching experience and has been helping Flatiron School students understand coding concepts for 2 years. He loves problem-solving and takes on each new problem or questions a student presents with vigor and curiosity.