14 answers
Updated
1274 views
What skills should I start learning in high school if I want to become a software engineer in the future?
Senoir at high school
Login to comment
14 answers
Updated
Jake’s Answer
First, make sure to focus on your Math courses and give them your best effort. If your high school offers it, try taking some courses in Python, Java, C+, or JavaScript at a local junior college. This can give you a great advantage. You can do it!
Updated
Joe’s Answer
Hey Henry,
It's great to hear that you're thinking about your future and considering software engineering!
It's never too late to get started.
For me, by the time I was a senior in high school, I had already had the opportunity to take courses in graphic design, web development, and computer networking. I had already taught myself how to create simple games on the TI-83 graphing calculator. I was able to figure out how to use dial-up internet for free by hacking around with some "free email" software. I had a personal webpage where I would learn and use JavaScript and HTML for fun in my free time. Do you see yourself in any of that curiosity, ingenuity, or initiative? If this is you, then keep being curious and keep learning whatever is in front of you on your way to achieving your goals. If this doesn't sound familiar, but you're interested in software engineering because of the 'future-proof' aspect of it, there are plenty of necessary roles aside from actual software engineering required to turn good ideas and business needs into out-the-door solutions. Data Governance, System/Data Analysis, Project Management, just to name a couple.
It's great to hear that you're thinking about your future and considering software engineering!
It's never too late to get started.
For me, by the time I was a senior in high school, I had already had the opportunity to take courses in graphic design, web development, and computer networking. I had already taught myself how to create simple games on the TI-83 graphing calculator. I was able to figure out how to use dial-up internet for free by hacking around with some "free email" software. I had a personal webpage where I would learn and use JavaScript and HTML for fun in my free time. Do you see yourself in any of that curiosity, ingenuity, or initiative? If this is you, then keep being curious and keep learning whatever is in front of you on your way to achieving your goals. If this doesn't sound familiar, but you're interested in software engineering because of the 'future-proof' aspect of it, there are plenty of necessary roles aside from actual software engineering required to turn good ideas and business needs into out-the-door solutions. Data Governance, System/Data Analysis, Project Management, just to name a couple.
Updated
Wong’s Answer
Hi Henry. If you want to become a software engineer in the future, you need to start building the right skills. First, start learning how to code. Programming is the main skill every software engineer needs. You can begin with beginner friendly languages like Python or JavaScript. These languages are used in many areas of technology, from websites to data analysis. You can practice by doing small projects, like building a simple website or creating a small game. There are also many free websites and tutorials online that make learning fun and easy.
Next, you need to build problem solving and math skills, understanding algebra, logic, and basic statistics will help you write better programs. Math trains your brain to think in patterns and sequences, which is exactly what coding requires.
It's also important to build soft skills. Software engineers often work in teams, so communication, teamwork, and time management are essential. Practice explaining your ideas clearly to others, both in writing and in speech.
Technology is always changing, so a good software engineer keeps learning new things. Be open to exploring areas like app development, artificial intelligence, or web design. The more you experiment, the better you'll understand what you enjoy most.
Next, you need to build problem solving and math skills, understanding algebra, logic, and basic statistics will help you write better programs. Math trains your brain to think in patterns and sequences, which is exactly what coding requires.
It's also important to build soft skills. Software engineers often work in teams, so communication, teamwork, and time management are essential. Practice explaining your ideas clearly to others, both in writing and in speech.
Technology is always changing, so a good software engineer keeps learning new things. Be open to exploring areas like app development, artificial intelligence, or web design. The more you experiment, the better you'll understand what you enjoy most.
Updated
Sindhura’s Answer
Hi Henry, high school is a perfect time to start your journey to becoming a software engineer. Try learning an easy programming language like Python or JavaScript, and practice solving problems one step at a time. Build small projects like apps or games to try out your skills and learn more. Look into basic computer science concepts to understand how things work behind the scenes. Also, remember that being a good engineer means working well with others, so practice teamwork and communication as you go.
Updated
Karin’s Answer
Hi Henry,
In school, focus on your math and physics classes. Take AP classes if you can. If you have any computer classes or clubs or things a like robotics club, that's where you want to be.
I don't know what year you are in, but if you have access to any dual enrollment classes, you can start to learn coding at your local Community College.
There are also lots of courses online, some of them for free, e.g. freecodecamp. Even YouTube has complete classes with coding projects. And then there are paid platforms like Coursera, Udemy, Udacity etc. Pick something you find interesting, e.g. Python, and start learning and building stuff.
I hope this helps! All the best to you!
KP
In school, focus on your math and physics classes. Take AP classes if you can. If you have any computer classes or clubs or things a like robotics club, that's where you want to be.
I don't know what year you are in, but if you have access to any dual enrollment classes, you can start to learn coding at your local Community College.
There are also lots of courses online, some of them for free, e.g. freecodecamp. Even YouTube has complete classes with coding projects. And then there are paid platforms like Coursera, Udemy, Udacity etc. Pick something you find interesting, e.g. Python, and start learning and building stuff.
I hope this helps! All the best to you!
KP
Updated
Kyle’s Answer
Hello Henry, great question and it's good to ask these questions while considering your future! My experience is in developing simulation software that has CAD (computer assisted drawing) elements, so my answer will reflect what I've found useful in my own work.
Like other answers here, mathematics is great to focus on. In particular, it is very useful to know Boolean Algebra which is a core concept for software development. I see that W3Schools (search on Google) has a great article on this topic in their Programming Concepts page.
Although not necessary for general programming, I've found it very useful to know Calculus and Linear Algebra for my work. These are topics that you can encounter in school, so make sure to try your best in these classes and take the most advanced ones if you can! A related topic to these is called Numerical Methods. Specifically with Calculus where we often consider derivatives and integrals, we can't always work with well defined functions but rather with measured data that we'd like to use or learn from. This is where the topic of Numerical Methods allows us to approximate the derivatives or integrals in the most efficient way and with the least amount of error. It is a core piece of knowledge that I use in my own work currently, and it might be a class worth registering for in College/University if you're interested.
Something that is very current nowadays is leveraging AI and LLMs. In my experience, it is better to leave these topics until you've built a strong software development skill base. These tools can be useful, but they are not perfect. Strong software engineers have the knowledge and experience to use AI tools, but correct them when they are wrong. Using AI tools without that knowledge and experience can cause frustration and negatively impact the success of any project.
The last piece of advice I have is to try programming projects outside of classes. There are websites like Instructables that have many robotics style projects if that interests you, or if you can get access to a Raspberry Pi mini-computer, their website has loads of neat projects that are sure to get you more programming experience.
Wishing you the best,
Kyle
Explore Boolean Algebra, Calculus, and Linear Algebra concepts.
Leave AI tools alone for now, they'll be helpful later on.
Find and complete a programming project that interests you from 'Instructables' or 'Rasperry Pi Projects'
Like other answers here, mathematics is great to focus on. In particular, it is very useful to know Boolean Algebra which is a core concept for software development. I see that W3Schools (search on Google) has a great article on this topic in their Programming Concepts page.
Although not necessary for general programming, I've found it very useful to know Calculus and Linear Algebra for my work. These are topics that you can encounter in school, so make sure to try your best in these classes and take the most advanced ones if you can! A related topic to these is called Numerical Methods. Specifically with Calculus where we often consider derivatives and integrals, we can't always work with well defined functions but rather with measured data that we'd like to use or learn from. This is where the topic of Numerical Methods allows us to approximate the derivatives or integrals in the most efficient way and with the least amount of error. It is a core piece of knowledge that I use in my own work currently, and it might be a class worth registering for in College/University if you're interested.
Something that is very current nowadays is leveraging AI and LLMs. In my experience, it is better to leave these topics until you've built a strong software development skill base. These tools can be useful, but they are not perfect. Strong software engineers have the knowledge and experience to use AI tools, but correct them when they are wrong. Using AI tools without that knowledge and experience can cause frustration and negatively impact the success of any project.
The last piece of advice I have is to try programming projects outside of classes. There are websites like Instructables that have many robotics style projects if that interests you, or if you can get access to a Raspberry Pi mini-computer, their website has loads of neat projects that are sure to get you more programming experience.
Wishing you the best,
Kyle
Kyle recommends the following next steps:
Updated
Jeff’s Answer
1. Core Technical Skills
This is the hands-on "how-to" part of software engineering.
Learn a Programming Language (or Two): This is the most important first step. You don't need to learn ten, but getting comfortable with one or two will teach you the logic of coding.
2. Foundational Concepts
These are the "big ideas" behind how good software works. You'll study these in-depth in college, but getting familiar with them now is a huge advantage.
Data Structures: This is just a fancy term for ways to organize data. Think of a to-do list, a dictionary, or a family tree—these are all ways to structure information. In programming, common ones are arrays (lists), hash maps (dictionaries), and trees.
Algorithms: This is another fancy term for a set of steps to solve a problem. If you're sorting a list of numbers from smallest to largest, the specific method you use is an algorithm. Understanding algorithms is about learning how to solve problems efficiently.
Object-Oriented Programming (OOP): This is a way of designing your programs by modeling real-world "objects." For example, in a game, you might have a Player object and an Enemy object, and each object would have its own data (like health) and behaviors (like attack()). Java and C++ are built on this idea.
3. Academic & Soft Skills
These non-technical skills are just as important as coding. Many engineers will tell you they are more important for long-term success.
Problem-Solving: At its heart, software engineering is pure problem-solving. It's about taking a large, complex challenge and breaking it down into small, manageable pieces. The best way to practice this is...
Math! Pay special attention in your math classes. You don't need to be a math genius, but the logical thinking you use in math is exactly the same thinking you use in programming.
Algebra teaches you to work with variables.
Calculus (if your school offers it) is great for thinking about rates of change and systems.
Communication & Teamwork: You will almost never build software alone. You'll be on a team. Can you clearly explain a complex technical idea to someone who isn't technical? Can you write documentation that other people can understand? Strong writing and verbal skills (practice in English class!) are priceless.
Persistence & Curiosity: You will get stuck. Your code won't work. You won't know why. The most important skill is not giving up. It's about being patient, learning how to use Google to find answers, and sticking with a problem until you figure it out.
Your High School Action Plan:
Take the Right Classes: Prioritize math every year. Take any computer science or programming classes your school offers (like AP Computer Science). Don't sleep on English/writing classes.
Start Coding: Pick Python or JavaScript and find an online tutorial (like freeCodeCamp, The Odin Project, or CS50 from Harvard) and stick with it.
Build a Small Project: Just make anything. This will be your best teacher.
Get Curious: When you use an app or website, ask yourself, "How does this work? How would I build that?"
You've already taken the most important step by asking this question. Good luck!
This is the hands-on "how-to" part of software engineering.
Learn a Programming Language (or Two): This is the most important first step. You don't need to learn ten, but getting comfortable with one or two will teach you the logic of coding.
2. Foundational Concepts
These are the "big ideas" behind how good software works. You'll study these in-depth in college, but getting familiar with them now is a huge advantage.
Data Structures: This is just a fancy term for ways to organize data. Think of a to-do list, a dictionary, or a family tree—these are all ways to structure information. In programming, common ones are arrays (lists), hash maps (dictionaries), and trees.
Algorithms: This is another fancy term for a set of steps to solve a problem. If you're sorting a list of numbers from smallest to largest, the specific method you use is an algorithm. Understanding algorithms is about learning how to solve problems efficiently.
Object-Oriented Programming (OOP): This is a way of designing your programs by modeling real-world "objects." For example, in a game, you might have a Player object and an Enemy object, and each object would have its own data (like health) and behaviors (like attack()). Java and C++ are built on this idea.
3. Academic & Soft Skills
These non-technical skills are just as important as coding. Many engineers will tell you they are more important for long-term success.
Problem-Solving: At its heart, software engineering is pure problem-solving. It's about taking a large, complex challenge and breaking it down into small, manageable pieces. The best way to practice this is...
Math! Pay special attention in your math classes. You don't need to be a math genius, but the logical thinking you use in math is exactly the same thinking you use in programming.
Algebra teaches you to work with variables.
Calculus (if your school offers it) is great for thinking about rates of change and systems.
Communication & Teamwork: You will almost never build software alone. You'll be on a team. Can you clearly explain a complex technical idea to someone who isn't technical? Can you write documentation that other people can understand? Strong writing and verbal skills (practice in English class!) are priceless.
Persistence & Curiosity: You will get stuck. Your code won't work. You won't know why. The most important skill is not giving up. It's about being patient, learning how to use Google to find answers, and sticking with a problem until you figure it out.
Your High School Action Plan:
Take the Right Classes: Prioritize math every year. Take any computer science or programming classes your school offers (like AP Computer Science). Don't sleep on English/writing classes.
Start Coding: Pick Python or JavaScript and find an online tutorial (like freeCodeCamp, The Odin Project, or CS50 from Harvard) and stick with it.
Build a Small Project: Just make anything. This will be your best teacher.
Get Curious: When you use an app or website, ask yourself, "How does this work? How would I build that?"
You've already taken the most important step by asking this question. Good luck!
Updated
Rebecca’s Answer
Thank you for your question. I am glad to know that you have interest to be come a software engineer. Firstly, you need to start learning different programming languages and practise.
Below are my suggestions:
1. Choose a simple programming language to start, e.g. Python, JavaScript, Scratch, etc.
2. You can find out the language structure and syntax online
3. Start doing some simple programming
4. After you familiar the language, you can use it do some simple projects, e.g. control toy car, robotic arm, etc.
5 . Learn another programming language
6. Attend the information session hosts by Computer Science department of colleges and find out the entry criteria. Work hard to meet the entry criteria.
Hope this helps! Good Luck!
May Almighty God bless you!
Below are my suggestions:
1. Choose a simple programming language to start, e.g. Python, JavaScript, Scratch, etc.
2. You can find out the language structure and syntax online
3. Start doing some simple programming
4. After you familiar the language, you can use it do some simple projects, e.g. control toy car, robotic arm, etc.
5 . Learn another programming language
6. Attend the information session hosts by Computer Science department of colleges and find out the entry criteria. Work hard to meet the entry criteria.
Hope this helps! Good Luck!
May Almighty God bless you!
Updated
David’s Answer
Begin with the basics by learning programming fundamentals with beginner-friendly languages like Python or Java. Improve problem-solving skills through coding challenges on sites like LeetCode or HackerRank. Understand logic, algorithms, and data structures, as they are essential in software engineering. Get familiar with version control, like Git, and work on simple projects for practice. Strengthen math and analytical thinking, as they are important for coding. Most importantly, learn to think like a programmer by breaking problems into steps and finding efficient solutions.
Teklemuz Ayenew Tesfay
Electrical Engineer, Software Developer, and Career Mentor
517
Answers
Ethiopia
Updated
Teklemuz Ayenew’s Answer
To become a software engineer, start by building a strong foundation in mathematics to develop problem-solving and logical thinking skills, while learning programming languages like Python, C++, or JavaScript. Focus on mastering data structures, algorithms, debugging, version control, and basic software design principles.
Develop soft skills such as communication, collaboration, critical thinking, adaptability, and time management to work effectively in teams and handle real-world projects. Gain practical experience by solving coding challenges on platforms like LeetCode, HackerRank, CodeChef, Codeforces, Exercism, CodeCombat, and CoddyTech, building personal projects to showcase on GitHub, trying virtual simulations on Forage or Parker Dewey, participating in hackathons and coding competitions, contributing to open-source projects, and writing technical blogs.
Network actively in programming communities on Reddit, Stack Overflow, and LinkedIn to ask questions, share knowledge, and find mentors. By combining continuous learning, hands-on practice coding, project-building, and networking with professionals, you can steadily progress from a beginner to a competent software engineer.
Develop soft skills such as communication, collaboration, critical thinking, adaptability, and time management to work effectively in teams and handle real-world projects. Gain practical experience by solving coding challenges on platforms like LeetCode, HackerRank, CodeChef, Codeforces, Exercism, CodeCombat, and CoddyTech, building personal projects to showcase on GitHub, trying virtual simulations on Forage or Parker Dewey, participating in hackathons and coding competitions, contributing to open-source projects, and writing technical blogs.
Network actively in programming communities on Reddit, Stack Overflow, and LinkedIn to ask questions, share knowledge, and find mentors. By combining continuous learning, hands-on practice coding, project-building, and networking with professionals, you can steadily progress from a beginner to a competent software engineer.
Updated
Amit’s Answer
To become a software engineer, start by focusing on one main programming language like Python or JavaScript. Master the basics such as variables, if/else statements, loops, functions, and lists or arrays. Practice by creating small projects like a number guessing game, a to-do list, a simple quiz, or a study flashcard app.
Then, learn some web development basics. Use HTML and CSS to build a simple personal website, and add some interactivity with JavaScript. Start using Git and GitHub to save your code and track changes, as this is a common practice among developers.
Improve your problem-solving skills by breaking big problems into smaller parts, trying simple coding puzzles, and practicing debugging instead of quitting when your code doesn't work. Communication is also important, so learn to explain your program in simple terms.
As you advance, remember you don't need to know everything. Focus on being able to:
- Code in one language
- Build a few small projects independently
- Use GitHub effectively
- Stay curious and continue learning
Then, learn some web development basics. Use HTML and CSS to build a simple personal website, and add some interactivity with JavaScript. Start using Git and GitHub to save your code and track changes, as this is a common practice among developers.
Improve your problem-solving skills by breaking big problems into smaller parts, trying simple coding puzzles, and practicing debugging instead of quitting when your code doesn't work. Communication is also important, so learn to explain your program in simple terms.
As you advance, remember you don't need to know everything. Focus on being able to:
- Code in one language
- Build a few small projects independently
- Use GitHub effectively
- Stay curious and continue learning
Updated
David’s Answer
Hi Henry, Read and re-read everyone's posts! (then put all them in an LLM and summarize them.) Everyone had great answers, problem solving, learn a language, start small, build on what you have..... the list is accurate and thoughtful. Besides traditional coding - learn "prompt coding" via your favorite LLM. Answer these questions - is learning a passion ? IT changes all the time, you will learn and relearn things over a career. Do you like change and can you adapt ? IT has seen monumental changes and you will re-invent yourself many times over your career. Being comfortable during change and being adaptable are key skills for longevity. (For the record - technology induced change may mean stress - as IT professionals, this is the career we signed up for.) Future things to consider - college and degree selection (technical - comp sci or IT minor and business). Remember in IT, if you choose programming, you can switch to cloud or cyber or AI or something new which is not invented yet. Finally - what ever path you choose, always have a Plan "B" .
Updated
Leslie’s Answer
It's great that you're thinking about this now because Computer Science degrees are very competitive. It's a good idea to take challenging math courses, like calculus or the highest ones available at your school. If computer science classes are offered, take those too. You can also learn a lot on your own with free downloads to start coding. Python, R, C++, and Java are all excellent choices. Udemy offers useful online courses. If you can, join summer programs at local universities. Having coding experience will help you explain why you want to major in computer science on your university applications.
Updated
Anand’s Answer
Start by focusing on Python, SQL, and JavaScript. Once you're comfortable with these, move on to HTML and CSS. Understanding the basics of language syntax helps you pick up new languages like Java or Go more easily. The more languages you know, the more versatile you become, giving you a wide range of tools to use.
Practice coding regularly and improve by reading other people's code.
Besides coding skills, learn to communicate effectively. Whether you work for a company or run your own, collaboration with others is key.
Practice coding regularly and improve by reading other people's code.
Besides coding skills, learn to communicate effectively. Whether you work for a company or run your own, collaboration with others is key.