How to Achieve Portfolio Optimization With AI

Here’s a fact: Employers are seeking candidates with hands-on experience and expertise in emerging technologies. Portfolio optimization using Artificial Intelligence (AI) has become a key strategy for people looking to break into the tech industry. Let’s look at some of the advantages of having an AI project in a portfolio, and how portfolio optimization with AI can be a possible game changer in regards to getting your foot in the door at a company.

The Pros of Having AI Projects in a Portfolio

For people seeking to transition into the tech industry, having AI projects in their portfolios can be a game-changer when it comes to landing coveted roles and advancing their careers. By showcasing hands-on experience with AI technologies and their applications in real-world projects, candidates can demonstrate their readiness to tackle complex challenges and drive innovation in any industry. Employers value candidates who can leverage AI to solve problems, optimize processes, and deliver tangible results, making AI projects a valuable asset for aspiring tech professionals.

Achieving portfolio optimization with AI by integrating AI into portfolios is quickly becoming a cornerstone of success for tech job seekers. However, portfolio optimization with AI involves more than just adopting the latest technology. It requires a strategic business approach and a deep understanding of Artificial Intelligence. Below are details about Hackonomics, Flatiron School’s AI-powered budgeting hackathon

The Components of Flatiron’s AI Financial Platform Hackathon

Identifying the Right Business Problem

The Hackonomics project revolves around cross-functional teams of recent Flatiron graduates building an AI-driven financial platform to increase financial literacy and provide individualized financial budgeting recommendations for customers. Identifying the right business problem entails understanding the unique needs and challenges of a target audience, ensuring that a solution addresses critical pain points and that the utilization of AI delivers tangible value to users.      

AI Models

At the core of Hackonomics are machine learning models meticulously designed to analyze vast amounts of financial data. These models will enable the uncovering of valuable insights into user spending patterns, income sources, and financial goals, laying the foundation for personalized recommendations and budgeting strategies.

Software and Product Development

As students develop their Hackonomics projects, continuous product development and fine-tuning are essential for optimizing performance and usability. This involves iterating on platform features (including UI design and SE functionality) and refining AI algorithms to ensure that the platform meets the evolving needs of users and delivers a seamless and intuitive experience.

Security and Encryption

Ensuring the security and privacy of users’ financial data is paramount. The Hackonomics project incorporates robust security measures, including encryption techniques, to safeguard sensitive information from outside banking accounts that need to be fed into the platform. Additionally, multi-factor authentication (MFA) adds an extra layer of protection, mitigating the risk of unauthorized access and enhancing the overall security posture of our platform.

Join Us at the Hackonomics Project Showcase on March 28

From March 8 to March 25, graduates of Flatiron School’s Cybersecurity, Data Science, Product Design, and Software Engineering bootcamps will collaborate to develop fully functioning AI financial platforms that analyze user data, provide personalized recommendations, and empower individuals to take control of their financial futures.

The Hackonomics outcomes are bound to be remarkable. Participants will create a valuable addition to their AI-optimized project portfolios and gain invaluable experience and skills that they can showcase in job interviews and beyond.

The judging of the projects will take place from March 26 to 27, followed by the showcase and awards ceremony on March 28. This event is free of charge and open to prospective Flatiron School students, employers, and the general public. Reserve your spot today at the Hackonomics 2024 Showcase and Awards Ceremony and don’t miss this opportunity to witness firsthand the innovative solutions that emerge from the intersection of AI and finance. 

Unveiling Hackonomics, Flatiron’s AI-Powered Budgeting Hackathon

Are you interested in learning about how software engineering, data science, product design, and cybersecurity can be combined to solve personal finance problems? Look no further, because Flatiron’s AI-powered budgeting hackathon—Hackonomics—is here to ignite your curiosity.

This post will guide you through our Hackonomics event and the problems its final projects aim to solve. Buckle up and get ready to learn how we’ll revolutionize personal finance with the power of AI.

Source: Generated by Canva and Angelica Spratley
Source: Generated by Canva and Angelica Spratley

Unveiling the Challenge

Picture this: a diverse cohort of recent Flatiron bootcamp graduates coming together on teams to tackle an issue that perplexes and frustrates a huge swath of the population—personal budgeting.

Hackonomics participants will be tasked with building a financial planning application named Money Magnet. What must Money Magnet do? Utilize AI to analyze spending patterns, income sources, and financial goals across family or individual bank accounts.

The goal? To provide personalized recommendations for optimizing budgets, identifying potential savings, and achieving financial goals through a dynamic platform that contains a user-friendly design with interactive dashboards, a personalized recommendation system to achieve budget goals, API integration of all financial accounts, data encryption to protect financial data, and more.

The Impact of AI in Personal Finance

Let’s dive a little deeper into what this entails. Integrating AI into personal finance isn’t just about creating fancy algorithms; it’s about transforming lives through the improvement of financial management. Imagine a single parent struggling to make ends meet, unsure of where their hard-earned money is going each month. With AI-powered budgeting, they can gain insights into their spending habits, receive tailored recommendations on how to save more effectively, and ultimately, regain control of their financial future. It’s about democratizing financial literacy and empowering individuals from all walks of life to make informed decisions about their money.

Crafting an Intuitive Technical Solution Through Collaboration

As the teams embark on this journey, the significance of Hackonomics becomes abundantly clear. It’s not just about building an advanced budgeting product. It’s about building a solution that has the power to vastly improve the financial health and wealth of many. By harnessing the collective talents of graduates from Flatiron School’s Cybersecurity, Data Science, Product Design, and Software Engineering bootcamps, Hackonomics has the opportunity to make a tangible impact on people’s lives.

Let’s now discuss the technical aspects of this endeavor. The platforms must be intuitive, user-friendly, and accessible to individuals with varying levels of financial literacy. They also need to be up and running with personalized suggestions in minutes, not hours, ensuring that anyone can easily navigate and understand their financial situation. 

Source: Generated by Canva and Angelica Spratley
Source: Generated by Canva and Angelica Spratley

Embracing the Challenge of Hackonomics

Let’s not lose sight of the bigger picture. Yes, the teams are participating to build a groundbreaking platform, but they’re also participating to inspire change. Change in the way we think about personal finance, change in the way we leverage technology for social good, and change in the way we empower individuals to take control of their financial destinies.

For those participating in Hackonomics, it’s not just about building a cool project. It’s about honing skills, showcasing talents, and positioning themselves for future opportunities. As participants develop their AI-powered budgeting platforms, they’ll demonstrate technical prowess, creativity, collaborative skills, and problem-solving abilities. In the end, they’ll enhance their portfolios with AI projects, bettering their chances of standing out to potential employers. By seizing this opportunity, they’ll not only revolutionize personal finance but also propel their careers forward.

Attend the Hackonomics Project Showcase and Awards Ceremony Online

Participation in Hackonomics is exclusively for Flatiron graduates. Participants will build their projects from March 8 through March 25. Winners will be announced during our project showcase and awards ceremony closing event on March 28.

If you’re interested in attending the showcase and ceremony on March 28, RSVP for free through our Eventbrite page Hackonomics 2024 Showcase and Awards Ceremony. This is a great opportunity for prospective students to see the types of projects they can work on should they decide to apply to one of Flatiron’s bootcamp programs.

How to Continue Learning After Graduating from a Software Engineering Bootcamp

A software engineering bootcamp provides structure, curriculum, and periodic assessments to make sure you’re learning effectively. However, it can be difficult to learn consistently once you graduate from a bootcamp, since you’ll have to define your own goals and schedule. You’ll also need to find ways of holding yourself accountable.

In this post I will share strategies on how to effectively continue learning after graduation. At the close of the post you will find links to several resources to improve specific software engineering skills. 

How to Continue Learning Effectively

A lot of the strategies discussed below may be familiar to you since you’ve likely deployed them during bootcamp. They will be equally effective in your postgraduate journey. 

Set Goals

Bootcamps set concrete goals spread out over an entire program. Every student is expected to learn foundational skills. But once you graduate from a software engineering bootcamp, your goals will likely vary from your peers. For example, you may want to look for front-end roles over back-end roles. Or, the types of companies you want to work for may be different from those of your peers. It’s important to define what your goals are to effectively plan out your job search strategy and learning schedule. Make decisions about the types of roles you want to land, as well as what you want to continue learning about. 

Determine Your Baseline

Bootcamps are effective because they are heavily focused on practice. Practice does not end once you graduate. You will especially need to focus on interview practice and coding assessment practice. You should continuously apply whatever you are learning post-bootcamp to gauge your skill levels and identify areas of improvement.

For software engineering job readiness, use services like Pramp, Meet A Pro, or Interviewing.io for mock job interviews. These platforms usually allow you to get detailed feedback from your interviewers (unlike real job interviews). Interview practice is crucial for success. If you don’t use one of the services mentioned above, find a friend to practice with. Prep answers to commonly asked software engineering job interview questions. Also, prep answers to general interview questions

Make a Plan and Stick to It

Continuous software engineering skills development is key to your success. Once you have identified the skills you want to learn or sharpen, create a schedule for learning and practicing. For example, one of our alumni wanted to learn Java on his own while also practicing the skills needed for job interviews. The following is a schedule snapshot of one of his weeks:

Sample schedule image of gmail calendar
Source: Mike Diaz

Be Consistent

Mastering new skills requires consistent effort and self-reflection. Regular practice and review are key to solidifying your understanding and developing intuition.

Establishing a consistent study and practice routine is crucial for building good learning habits. Setting dedicated study and practice times throughout the day helps train your brain to focus effectively. It also ensures you are making consistent progress towards your goals.

Take Notes

Make note of new concepts you are learning and write down questions about the concepts that you find difficult. This is especially helpful when learning complex and complicated concepts like data structures, algorithms, and system design. Writing out the processes by hand will improve your retention and understanding since it will force you to think through every step.

Use Active Recall and Spaced Repetition

Active recall, also known as active retrieval or practice testing, is a learning strategy that focuses on retrieving information from your memory instead of passively absorbing it. By actively struggling to retrieve information, you engage your brain in a deeper way and foster deeper connections to the learned information. 

Spaced repetition refers to the process of revisiting things you’ve learned or practiced in an increasing cadence to make sure the concepts stick in your mind. In the case of programming, you’ll end up using various foundational concepts over and over again. However, for certain uncommon concepts such as graph traversals, you’ll have to be mindful of revisiting them and practicing so you don’t forget how to apply them.

Use Analogies and Metaphors

Using analogies and metaphors can help unlock a deeper understanding of problems and strengthen information retention. A vivid imagination fuels this process, as it allows you to connect abstract concepts to concrete experiences. When taking notes, actively rephrase ideas in your own words and forge connections with your personal knowledge by drawing on past experiences or relevant examples.

Track Your Progress

Tracking your problem-solving and learning journey can be a powerful motivator. It can also help foster accountability and inform future planning. Use a spreadsheet to maintain a running log of solved challenges and completed projects for a clear picture of your progress. Conclude each day with a review, adjusting your tasks for the following day. This practice can sharpen your focus, streamline your workflow, and help eliminate unproductive indecision.

Try Different Perspectives

When you get stuck on a problem, try approaching it from a different perspective. There are usually multiple ways of solving a coding problem. When using websites like Leetcode, make sure to read up on alternate solutions from the discussion section to learn new concepts, frameworks, and approaches.

Don’t Forget to Rest

Your brain requires rest to embed information into your long-term memory. Not thinking about a problem you’re stuck on also engages your diffuse mode of thinking, which can help provide you with a creative breakthrough. Make sure you get plenty of sleep, as it’s crucial for long-term memory formation and mental health. Account for rest in your day-to-day life in order to sustain motivation and prevent burnout.

If you want to learn more about the above strategies and why they work, check out the book A Mind for Numbers by Dr. Barbara Oakley.

What to Practice

The specific areas you focus on after graduating from a software engineering bootcamp will depend on your personal goals. I’ll share some useful resources for specific skills to help you get started. 

JavaScript concepts:

Books:

Front-end practice:

CSS Games:

Back-end practice:

Data structures and algorithms:

Whiteboarding

Visualizers:

Mock interview services:

Mock interview examples:

Hopefully, these guidelines and resources will help you make solid plans for your post-graduate life. If you are new to software engineering and curious to learn more about Flatiron’s program, check out our Software Engineering Bootcamp page. You’ll find information on how to apply, details on upcoming course start dates, and a link to a free syllabus download.

System Design Overview for Bootcamp Grads

Students in software engineering bootcamp programs usually build small-scale projects that require, at most, a few weeks of work. These projects don’t have to account for long-term considerations such as maintainability, scalability, and security. But when companies build applications they have to take into account several factors.

System design is the process of designing an application or service while taking into account user needs along with the product and business requirements. There are various types of systems that you may have to design as a software engineer. But the following three are the most common ones you’ll likely work on, especially earlier in your career:

  1. Application: A full application that addresses user needs, such as a URL shortener. It’s not common for an individual to design, develop, and maintain a full application at a company (unless it’s a very early-stage startup).
  2. Application feature: A specific feature addition or modification to an existing application, such as designing the feed for a social media application. Individual contributors are generally expected to work on these. 
  3. Microservice: An application that’s not user-facing and is only used to facilitate the functioning of the overall system. For example, you may be asked to design or suggest a key-value store suitable for an existing system.

You need to consider both functional and non-functional requirements when designing any system. Let’s explore the differences between these two types of requirements using a URL shortener service such as Bit.ly as our example.

System Design Overview: Functional Requirements

Functional requirements define what a system is supposed to do or the specific features it must provide the users. 

A URL shortener service may have some or all of the following functional requirements:

  • Shorten URLs: The system must be able to take a long URL as input and generate a short URL.
  • Redirect: When users access a shortened URL, the system must redirect them to the original long URL.
  • Customization: Allow users to customize the shortened URL or provide an option to generate a random one.
  • Analytics: Track the number of times each shortened URL is accessed and provide analytics for users.
  • Expiration: Provide an option to set an expiration date for shortened URLs.

System Design Overview: Non-Functional Requirements

Non-functional requirements define the qualities or characteristics of the system. These include performance, reliability, and usability, rather than specific functionalities. 

A URL shortener service may have the following non-functional requirements:

  • Performance: The system should generate shortened URLs and redirect users quickly to ensure a seamless user experience.
  • Scalability: The system should be able to handle a large volume of URL-shortening requests and redirections efficiently, especially during peak usage times.
  • Reliability: The system should be highly available and reliable, with minimal downtime or service interruptions.
  • Security: Ensures that the system is secure and resistant to attacks, such as URL manipulation or injection.
  • Usability: The user interface should be intuitive and easy to use, allowing users to quickly shorten URLs and access analytics without confusion.
architectural characteristics
Source: Love Sharma

This article does a great job of explaining various non-functional requirements if you want to explore more.

When Should You Design Complex Systems?

Although it’s important to consider various requirements, tools, and technologies when designing systems, it’s equally important to not over-engineer systems. You’ll generally have some requirements guidelines when working on a team that maintains a product or service with existing users. System design interviews also have fairly good requirements (or at least the interviewer will nudge you towards desired requirements).

However, when you are developing a product or feature from scratch, it’s important to prototype quickly and gather feedback before tacking on a bunch of non-functional requirements. For example, Levels.fyi used Google Sheets as their backend in the beginning to scope out their idea before scaling it. If you design a large-scale system without considering user needs, you’ll end up with a beautiful, scalable system that no one uses.

In general, it’s better to start with simple design, tools, and technologies before designing for scale. 

System Design Overview: Foundations

System design study resources cover tons of topics, such as scalability patterns, load balancers, and caching. But they are usually geared towards people who already have some experience with application development. 

If you’re just starting out, it’s important to be aware of a few key concepts and ideas. We’ll be covering the following topics in the remainder of this article:

  • Relevant computer components
  • Single machine problems
  • Distributed systems

Relevant Computer Components

relevant computer components

You’ll encounter various terms like Content Delivery Networks (CDN), load balancer, cache, proxy, database. All of these terms refer to a computer or a network of computers running specialized applications.

The central processing unit (CPU) is often considered the “brain” of the computer. It mainly executes instructions and performs calculations required to run programs and processes.

Random-access memory (RAM) is the computer’s short-term memory. It is usually significantly faster than long-term storage. Temporary data and program instructions for the CPU are stored on the RAM.

Storage devices provide long-term, persistent storage for data, programs, and system files. Unlike the RAM, storage devices retain their data even when the power is turned off. They also have a much higher capacity than RAM.

The components are prioritized based on the type of application being run on a computer. For example, a database will likely have a much higher storage capacity than a server that processes user requests. 

Single Machine Problems

request response cycle

You have probably designed and built a system like the above in your bootcamp program. It’s a standard structure that allows you to serve millions of users. But notice that all the requests and responses are being handled by a single server. And all of the data is being stored on a single database.

Single machines can cause issues down the road. The following are some of the issues that may crop up:

  • Performance limit: A single server can host a limited number of CPUs, RAM, or storage. If you have a lot of requests, a single server simply won’t be able to handle them.
  • Expensive component upgrades: More powerful CPUs and larger capacity RAM or storage devices can become very expensive. It’s often more efficient and cheaper to get additional systems.
  • Scalability limit: The above two issues limit the scalability of the system. The server will either stop serving requests or it’ll be too expensive to upgrade it.
  • No redundancy: If either the server or the database fails, it will cause a service outage for all of our users.
  • Low availability: Availability refers to the proportion of time that a system is functional and working. If we have to upgrade the server or the database, we would have to suspend our service. 

So how can we solve these issues? That’s where distributed systems come in.

Distributed Systems

A  distributed system is a network of multiple independent computers (often referred to as nodes or hosts) that work together to achieve a common goal. You’ll have to configure how these computers communicate with each other when designing systems. 

Although distributed systems address the issues with single machines, they introduce issues that need to be taken into account when designing systems. 

Engineer Arnon Rotem-Gal-Oz described several fallacies of distributed systems (i.e., we can’t assume the following statements are true in a distributed system):

  • The network is reliable
  • Latency is zero
  • Bandwidth is infinite
  • The network is secure
  • Topology doesn’t change
  • There is one administrator
  • Transport cost is zero
  • The network is homogeneous

You’ll learn several system design patterns to address these fallacies but they aren’t often stated explicitly in study resources.

Now that you understand the foundations of system design, you can start preparing for system design interviews. You’ll find several resources in the linked article that will provide guidance on what to study.

Interested in Learning About Software Engineering Educational Opportunities?

Are you a software engineering enthusiast considering a career transition to the field? See what Flatiron School’s Software Engineering Bootcamp can do for you. Flatiron’s graduates have been hired by such companies as Apple, Microsoft, and Goldman Sachs, to name a few. Gain the skills needed for a software engineering career in as little as 15 weeks.

Amelia Freeman: From History Major to Software Engineer

The path Amelia Freeman took to software engineering was anything but linear. Her career pursuit was driven by a persistent curiosity and a desire to create. After studying history and working in recruitment, she found herself drawn to the world of code. Inspired by a coding class in college, she decided to make a bold career change and enrolled in Flatiron School’s immersive Software Engineering program.

Before Flatiron

Amelia’s experience in recruiting equipped her with valuable communication and interpersonal skills, but she yearned for a more technical and independent career. “I wanted to do something that involved less talking to people and more working with code,” she shared. Living in Germany for a year and a half solidified her desire for a change, and she saw Flatiron School as the perfect launchpad for her software engineering aspirations.

During Flatiron

The program’s intensity surprised Amelia, but she met the challenge head-on. “The days were long, and the work was challenging,” she admits, “but I just continued to work and work, and in the end, I felt very accomplished with what I had learned and the work I had done.” This perseverance, a core value at Flatiron School, is what helped Amelia push through any obstacles she encountered during the program and emerge on the other side as a confident developer.

After Flatiron

Amelia’s dedication paid off. After 68 days, she landed her dream job as a Junior Consultant at Agineo in Germany, fulfilling her desire to work in the country she once explored. “I am most proud of my new job in Germany,” she beams. “It was a dream to work in Germany, and I’m proud I made it happen!”

Ready For A Change, Just Like Amelia Freeman?

Apply Now to join other career changers like Amelia in a Software Engineering program that sets you apart from the competition. 

Flatiron School’s immersive programs can equip you with the skills and confidence to pursue your tech dreams, no matter your background. Join a supportive community of learners and instructors, and unleash your potential to thrive in the tech industry. 

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

System Design Interview Overview for Software Engineers

If you have looked into the software engineering interview process, you may have come across something called a system design interview. These interviews tend to be very different from the usual coding interviews.

In this post we will look at why interviewers hold system design interviews, the expectations they have for job candidates, and how to prepare for this type of interview.

But first, we need to understand what functional and non-functional requirements are in a software system and how they should be considered in the design process.

Functional and Non-Functional Requirements

Let’s say you’re building an app where users can post and share images. What functions can users perform on the app?

A user can register and sign in on the app. They can post, share, and comment on images. All of these functionalities are user-focused.

Functional requirements define the specific functionalities, features, and capabilities that the app must provide to meet the needs of its users.

But in addition to these functionalities, the app needs to perform well, be reliable, and securely store user information. Non-functional requirements describe the qualities and characteristics of the system that are not directly related to specific behaviors but are critical for its overall effectiveness.

It’s critical to consider both functional and non-functional requirements when designing and building software.

What is System Design?

System design refers to the process of designing an application while taking into account both the functional and non-functional requirements. It involves making high-level decisions and choices regarding the structure, components, interactions, and behavior of the system.

The System Design Interview Process

In system design interviews, you will generally be asked open-ended questions with vague requirements. You’ll have to collaborate with your interviewer to figure out which qualities and characteristics to prioritize while designing your system.

Unlike coding interviews—where you may have to do algorithm challenges or build apps to specifications—system design interviews have no correct solutions. You will have to justify all of your design decisions in the context of the functional and non-functional requirements while also comparing alternatives.

A typical system design interview will usually follow this format:

  • The interviewer asks the candidate to design a system
  • The candidate then does the following:
    • Clarifies requirements
    • Does back-of-the-envelope calculations
    • Establishes scope of the design
    • Defines a data model
    • Proposes a high level design
    • Defines the APIs for the system
  • The candidate and interviewer discuss details, trade-offs, and extensions

Generally, the interview is 45-60 minutes long so you won’t have time to dive deep into every aspect of the system. This is why it’s important to communicate with your interviewer about the areas you should be focusing on. For certain problems, they may ask you to focus more on the data model and what kind of database you’d use. For others, they may ask you to define your APIs in detail and describe how they would communicate with each other.

Interviewers are generally looking to assess the following skills:

  • Fundamental system design concepts
  • Requirements clarification and analysis
  • Well-reasoned decisions
  • Trade-off considerations
  • Collaboration
  • Communication

These aren’t in order of importance since different interviewers may prioritize different skills based on the job description, role level (IC3 will get easier problems than IC6), and their own experiences.

System Design Study Resources

A system design interview may seem impossible to study for since there are so many topics that can be covered. But thankfully, there are some fundamental concepts that will help you to get through most of the junior to mid-level interviews. Once you’ve got those down, you can read up on real system design on company blogs or research papers.

Below are some additional resources to help you learn how to excel in the interview:

For practice problems:

You should ideally try designing and building some complex systems yourself to see how all the pieces fit together. Starting with simple data pipelines or simple microservices may be helpful.

But the free resources (except for the books) mentioned above should give you a solid system design foundation which will allow you to understand most of the system design interview questions and walkthroughs you may encounter.

It takes time to get really good at designing systems. You will learn new concepts, tools, and techniques throughout your career which will influence your unique way of designing systems. 

For your interviews, focus on understanding the fundamentals, prepare in advance, and do practice interviews on sites like Pramp or Interviewing.io. Best of luck!

Interested in a Software Engineering Career?

Flatiron School’s Software Engineering Boot Camp can provide you with industry-ready skills in software engineering in as little as 15 weeks. You can try a free software engineering lesson, download the course syllabus to see what you can learn, or apply today.

Andrew Smit: Band Director to Software Engineer

Imagine the vibrant hum of a bustling classroom filled with instruments and eager young musicians. Now, picture the quiet focus of a coding desk, lines of code weaving digital symphonies. This is the remarkable journey of a former band director who found his rhythm in the world of software development thanks to Flatiron School.

Andrew Smit, a 2023 Software Engineering graduate from Flatiron School, is a dedicated individual with a passion for teaching music and a commitment to lifelong learning. After nine years as a public school music educator, Andrew embarked on a transformative journey at Flatiron School and successfully transitioned into a fulfilling career in Software Engineering. Let’s dive into Andrew’s story as he reflects on his motivations, challenges, and triumphs.

Before Flatiron: What were you doing and why did you decide to switch gears?

Andrew Smit spent nearly a decade as a dedicated band director, shaping young musical minds. “I was teaching 6-12 graders percussion, directing the high school drumline, and contributing to the team of band directors to help prepare concerts and teach music performance and literacy,” Andrew shared.

While passionate about teaching and music, Andrew sought a career change that could offer “more upward mobility for long-term growth, more time at home with my family, and new challenges.” The desire to leverage his existing skills in problem-solving, critical thinking, and working collaboratively with others led Andrew to the world of software development.

During Flatiron: What surprised you most about the learning process during your time at Flatiron School?

“You have to trust the process,” Andrew said, reflecting on his time at Flatiron School. Andrew underscores the significance of consistent effort, stating, “a little bit every day goes a long way, and before you know it, those little instances add up to something big.” 

From a technical standpoint, Andrew recalls being taken aback by the similarities across programming languages. “It’s surprisingly easy to pick up new languages if you focus on building a solid foundation.” The emphasis on foundational knowledge at Flatiron School laid the groundwork for a successful foray into the tech landscape.

Andrew graduated in June 2023, jumping into the job search while maintaining his attitude to hard work – that a little bit each day gets you to where you want to be. This philosophy, paired with the support of his dedicated Career Coach Peggy Osbourn, paid off. He landed his first role as a Web Developer at Square 205 and hasn’t looked back.

After Flatiron: What are you most proud of in your new tech career?

Post-Flatiron School, Andrew is putting his new development skills to use for a good cause, volunteering at Presto Assistant and contributing to a production-level codebase with other skilled developers – an achievement that he is particularly proud of. 

Andrew highlights the impact of this experience: “This not only gave me the ability to look at certain features, landing pages, and functionality and be able to say ‘I did that! I helped build that!,’ but it also gave me the confidence and skills to be more competitive in job interviews.” The tangible contributions made to his community stand as a testament to the practical skills he acquired at Flatiron School.

A Harmonious Future with Flatiron School

Andrew’s journey encapsulates the essence of growth, adaptability, and success. If Andrew’s story resonates with you, if the prospect of transforming your career harmonizes with your aspirations, it’s time to take charge!

Ready to compose your own success story?

Apply now to join other career changers like Andrew Smit at Flatiron School—a program that not only equips you with technical skills but fosters a community of growth, collaboration, and support. Read more stories about successful career changes on the Flatiron School blog, where each narrative is a note in the symphony of possibilities that await you.

Katie Behrmann: Educator to Engineer

Imagine the thrill of igniting young minds with the wonders of STEM, and then seamlessly transitioning to building and supporting the very technology that fuels that excitement. That was Katie Behrmann’s trajectory, a former STEM educator who, after Flatiron School, transformed her passion for teaching into a fulfilling career in software engineering. Her story echoes a familiar melody for many – the burnout of the education system and the lure of impactful problem-solving in the tech world.

In the ever-evolving tech landscape, Katie’s path from a dedicated STEM educator to a thriving tech professional is a tale of determination, passion, and growth.

Before Flatiron: What were you doing and why did you decide to switch gears?

Before her foray into the world of tech, Katie was an upper elementary/middle school STEM teacher, imparting foundational coding and robotics skills to her students. The spark to switch gears ignited during the pandemic when Katie transitioned to a Customer Support Specialist role at an EdTech startup. 

As she assisted users on the platform, she realized the potential of her technical skills in solving coding-related issues. This realization fueled her desire to deepen her knowledge of programming languages and computer science, ultimately leading her to pursue a career change. In her words, “I loved using my technical knowledge and skills to help users and knew that I could further those skills.”

During Flatiron: What surprised you most about yourself and the learning process during your time at Flatiron School?

Initially, Katie entered Flatiron School with concerns about balancing an educational endeavor alongside her full-time job. “I was worried about taking on another type of extra-curricular schooling outside of my full-time job,” she said “When I was a teacher, I was in a part-time grad school program that made me miserable.” However, the experience turned out to be a stark contrast to her past negative encounters with part-time programs. 

During her time in the program, Katie discovered a newfound excitement to learn, eagerly tackling coding challenges and expressing her creativity. “I was always excited at the end of my work day to solve coding challenges, build with code, and get creative,” Katie reflected. “I found the software engineering curriculum to be surprisingly fun and extremely well-structured.”

An unexpected revelation was finding herself thinking and dreaming in code—a testament to the immersive and engaging learning environment.

After Flatiron: What are you most proud of in your new tech career?

Post-graduation, Katie accepted a Technical Support Engineer role at Samsara and seamlessly translated her newfound skills into tangible contributions. “I was able to use my skills as predicted–not only in helping our users debug issues, but I was able to push feature changes to my company’s code [that] solved problems that many of our users had been contacting us about for years.”

Katie’s impact extended beyond her initial role as she navigated toward a higher-paying job and earned a more senior title at Samsara. This career journey is a testament to her dedication and the practical skills acquired during her time at Flatiron School.

A Call to Aspiring Tech Enthusiasts

Katie’s transformation from Educator to Engineer exemplifies the boundless possibilities that unfold with the right education, determination, and support system. If Katie’s story resonates with you, if the idea of shifting from education to a dynamic tech career ignites a spark within, then it’s time to make a change.

Ready to take charge of your future?

Apply Now to join other career changers like Katie in a program that sets you apart from the competition. Read more stories about successful career changes on the Flatiron School blog, where each narrative is a testament to the transformative journey awaiting you in software engineering, cybersecurity, data science, or product design. Your coding odyssey begins with a single click—take it and let Flatiron School be your guiding star.

Demystifying AI and ML: An Intro for Bootcamp Grads

ChatGPT catapulted AI tools to the forefront of the public consciousness when it reached 100+ million weekly users last year. Several more apps like ChatGPT have since been launched, such as Bing Copilot and Bard. Although these services can be helpful for software developers, most of the time they’ll use other tools or work with technologies that are in a completely different category.

Over 70% of developers are already using or plan to use AI tools in their development process according to the 2023 StackOverflow survey. The same survey shows that the overwhelming majority of developers (75%+) have a favorable or highly favorable view towards using AI tools as part of their development workflow. 

In this blog post we will be going over what developers are using these tools for, which tools they are using, and how machine learning fits into the development process in companies.

Artificial Intelligence and Machine Learning

Before we dive into what kind of technologies and processes developers use in their day-to-day work, it’s important to understand the difference between artificial intelligence (AI) and machine learning (ML).

An image of three overlapping circles labeled deep learning, machine learning, and artificial intelligence

Artificial Intelligence

Artificial intelligence describes any computer program that performs tasks that require human intelligence, such as speech recognition, reasoning, perception, and problem solving. John McCarthy, a Turing Award-winning computer scientist and one of the founders of the AI field, said, “AI is the science and engineering of making intelligent machines, especially intelligent computer programs.”

Machine Learning

Machine learning is a more specific term that describes a field of study concerned with the development of algorithms and statistical models that enable computer programs to perform human-like tasks. The core idea behind ML is to use large datasets to identify patterns and learn from them to perform specific tasks. IBM has a good video on the differences between AI and ML that will provide further clarification.

You may also come across the term “Deep Learning” which is a subset of machine learning. We won’t go into it here but if you’re curious, 3Blue1Brown has an excellent video on how neural networks work.

AI in Software Engineering

Software engineers or developers work with AI based technologies in two key areas: development workflow and product feature development.

Development Workflow

Development workflow refers to the processes used to plan, develop, test, deploy, and maintain software products and services. Tools like GitHub Copilot can significantly speed up these processes since they can be trained on specific codebases on top of having insights from billions of lines of publicly available repositories. Having a tool that can provide suggestions and answer questions based on the current project and context can drastically improve the developer experience. In fact, over 70% of developers say AI coding tools will allow them to write better quality code, produce more code, resolve incidents faster, and collaborate more effectively according to a 2023 GitHub Survey

The AI tools used for improving developer experience are usually available off-the-shelf. These tools still need to be trained on the existing codebase for the best results but they don’t require a significant amount of developer work hours. Developers can quickly get up to speed on the basics of these tools and start incorporating them into their workflow to boost productivity since they don’t require any specialized skills.

Product Feature Development

Companies are constantly looking to improve their products by offering novel features. Product features that incorporate advanced ML algorithms can give companies a competitive edge by providing a better customer experience. 

For example, the following diagram gives an overview of how Netflix incorporated an ML model to improve search results for users:

a diagram showing a flowchart overview of how Netflix incorporated an ML model to improve search results for users

You can read about how this model works in the “Augmenting Netflix Search with In-Session Adapted Recommendations” research paper.

A team needs to have people with various skills in order to develop and maintain a system like this since the feature may require custom algorithms, infrastructure, and code. Working on these systems usually requires knowledge of machine learning and MLOps. 

Where to Go From Here?

If you want to build AI systems and not just use AI tools, you’ll need a solid theoretical foundation and practice building applications or creating infrastructure. Here are a few free courses to get you started on your journey:

Courses for Beginners:

Courses on AI Ethics:

Practical Courses:

These should be enough to keep you busy for a while and give you a solid AI and ML foundation for building your own AI/ML products or services. 

Ready to Learn Software Engineering Foundations?

Any ML role requires a foundational knowledge of software engineering. If you are not a bootcamp grad but are ready to start your journey as a software engineer, apply now to Flatiron’s program.

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.

You can also read more stories about successful career changes on the Flatiron School blog.

Logan Miller: Technical Consulting to Software Engineer

Logan Miller, a July 2022 Software Engineering graduate from Flatiron School, spent 5 years working as a pre-sales engineer for a technical consulting firm and another year in Iceland earning a Master’s degree before deciding to switch career paths into tech.

He shares his journey from consulting to tech – with a stop in Iceland – below.

Early Exposure To Tech

Logan Miller grew up around tech. From his early childhood, it was almost always nearby, either through family or the gadgets themselves, and credits this early exposure with his interest in the field.

“Many of my closest friends are in tech, my mom was in tech, and just growing up around computers and technology had a huge influence on me,” he said. “I was like 11 and started messing around with HTML.”

It wasn’t until he was pursuing a Bachelor’s degree in European History at university that an accidental class enrollment led him to pick up formal programming for the first time. 

“When I was a freshman at Pace University I somehow found my way into a senior-level game design class (don’t ask – I barely even know how it happened),” he explained. “It was pretty daunting when I found out we were going to have to actually program things in C++ considering I didn’t even know what javascript was. I leaned on pretty much everyone I knew to get through it – friends, mom, girlfriend’s dad – anyone who knew anything about coding was sure to hear from me at random hours with random questions.”

Technical Consulting By Way Of Iceland

After graduating, Logan worked as a technical writer and pre-sales engineer for a technical consulting firm in New York. He recalls having the opportunity to work with “impressive people,” but ultimately felt that the work lacked meaning.

“I spent a lot of time working on documents that were ten, twenty, ninety pages in length just skimming for compliance reasons,” he said. “I never really enjoyed what I was doing in a way that would make me, for example, actually want to work all day on a Saturday or something.”

It was the onset of the COVID-19 pandemic in 2020 that made Logan, like many others, rethink his career and path in life. Unsure of what to do next, he applied to the University of Iceland and was accepted. 

“I didn’t feel like my career was going the way I wanted it to and applied on a whim […] because it was essentially free,” he explained. “My intention with grad school in Iceland was to try a few different classes and see what stuck.”

Logan continued to work remotely for the US-based technical consulting firm while attending the University of Iceland. It was during his time in the land of ice and fire that his interest in computer science reignited. 

“Some of my friends [at the University of Iceland] were in computer science programs so I would see what kind of problems they were working on and languages they were learning. It was a lot of fun just messing around with logic and talking about the kinds of bugs and problems they ran into.”

Committing To Changing Careers

Logan left Iceland and returned to the states in July 2021 with his eye set on a career in software engineering. He highlights the field’s range of opportunities as one of the reasons he decided to pursue the field. 

“There aren’t a ton of career paths out there that allow you to land a job in almost any company or vertical, but you can find a Software Engineer who works for Whole Foods just as easily as one who works for the Department of Defense,” he said. “It allows for so much creativity and opportunity since you get people from all walks of life and interests working at places they enjoy.”

After testing the waters with a short online course in Python, Logan applied to Flatiron School’s Software Engineering program.

“I felt that I should take it seriously and make an investment into changing my career. I knew that I wanted to go all in and see how I compared to my peers in a high-paced environment.”

His Experience At Flatiron School

Logan enrolled in Flatiron School full-time and joined a cohort of other students. His classmates and the community they built together, he recalled, were his favorite part of the program.

“Hands down the best part of the Flatiron School program is the people that you spend each day with and watching them grow as programmers,” he said. “There is a real camaraderie with your cohort and you’ll be surprised at how often you’re spending late nights just talking, working, and hanging out with these people you never knew until a few weeks ago.” 

But, the accelerated course was not without challenges. The speed at which the program covered material was intimidating, Logan recalled, but manageable. 

“As long as you trust in yourself, study, and lean on your teammates and cohort instructor you will be totally fine.”

The Job Search

Logan graduated from Flatiron School’s Software Engineering course in July 2022 and jumped right into the job search. The next six months, he admitted, were difficult at times. 

“My job search [was] a rollercoaster. There will be a lot of ups, downs, hopeful moments, tragic defeats, and everything in between.”

Throughout his tumultuous job search, however, Logan had his Career Coach Tracie Mazzu to support and cheer him on.

“It’s nice to have a career coach on your side that can provide advice and a wealth of experience to help you get through everything,” he said. “I started off doubting how much I would get out of a career coach as it just seemed like an additional chore to do but once my coach helped me redo my resume it became abundantly clear that I didn’t know as much as I thought I did.”

Working In Tech

Logan accepted a Lead Developer role with My.Suit in December of 2022. So far, he has only good things to say about his new field. 

“I’m loving it. It’s awesome to be working with something that you enjoy and solving problems that no one else can. There is a ton of freedom and opportunity for you to explore and learn new things each day. The pay doesn’t hurt either.”

His takeaway from his Flatiron School experience is one of self-determination.

“Nothing in life will ever be handed to you. You need to take it and put in the time and effort to make whatever goals you have a reality. Just keep pushing and have fun!”

Inspired By Logan Miller’s Story?

Ready to take charge of your future? Apply Now to join other career changers like Logan Miller 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.