Skip to main content
42 answers
44
Updated 2387 views

what are the best ways to start learning and building skills to eventually be a software engineer?

I am a high school junior that is interested in being a software engineer. What are the steps to take to become a software engineer as a teenager, and to develop skills fast.

Thank you comment icon Hello Vivi, The best way to start learning is starting with core concepts and logics of programming. Once you understand that you will be able to learn any programming languages you like easily. You can also use Chatgpt/Gemini or Udemy courses to teach yourself and do projects. Sirisha Jujjavarapu
Thank you comment icon Helpful and practical advice. Thank you for sharing this perspective. Anuj Gupta

44

42 answers


0
Updated
Share a link to this answer
Share a link to this answer

Vidhya’s Answer

You're asking a fantastic question! Becoming a software engineer is all about building skills one step at a time. Here's a simple path to help you begin and develop over time: Start by learning a programming language, then study data structures and algorithms. Create real projects like small websites, simple apps, games, or automation projects. Also, learn the tools that real engineers use. You can do it!
0
0
Updated
Share a link to this answer
Share a link to this answer

Vinayak’s Answer

Starting your software engineering journey is super exciting! The best way to begin is by picking one popular language, like Python or JavaScript, and mastering core basics like loops, functions, and data structures. Instead of just watching tutorials, make sure to get hands-on experience by building simple, everyday apps. Don't worry when things break; learning to debug your own code is a massive part of growing as a developer. As you gain confidence, you can level up by building bigger projects and learning how databases store information. You can also explore online resources to learn about AI, using tools like ChatGPT for helpful hints when you get stuck—just make sure you don't rely on it to do the actual coding for you!
0
0
Updated
Share a link to this answer
Share a link to this answer

Anjali’s Answer

Hi Vivi, Great question. This is awesome that you are looking to get a head start on software engineering ! To build skills fast as a high school junior, the best approach is to choose one foundational language—like Python or JavaScript—and gradually shift to building real, independent projects. Start by building simple projects and push your progress to a GitHub profile to act as your digital resume. Progress to write a program that solves a problem, like school assignment tracker. You can do it! Best of luck on your coding journey!
0
0
Updated
Share a link to this answer
Share a link to this answer

R Ulises’s Answer

That's a great question! Here are some key skills you might want to focus on learning:

- Problem-solving
- Defining clear requirements
- Choosing a programming language. I recommend starting with Python because it's easy to learn. Once you're comfortable, you can move on to more complex languages.

For resources:

- There's a lot of free content online. FreeCodeCamp.org is a great site with many well-explained courses.
- Work on solving real-world problems. Pick an idea or an existing system and try to understand its design patterns.
- Learn about AI coding tools. It's important to get familiar with basic AI concepts and how they can assist you.
- Practice using a debugger. Often, you'll need to figure out why something isn't working. This is true for AI code as well.
- LeetCode is still useful for understanding concepts, even though the focus is shifting a bit due to AI.
- Improve your understanding of data structures. This will help you move from data to code and from requirements to systems.
0
0
Updated
Share a link to this answer
Share a link to this answer

Rezwan’s Answer

Start by creating a small web project to get a feel for HTML. This will be your first step into the world of web development. Next, add some style using CSS, which will make your project look nice. Once you're comfortable with HTML and CSS, dive into JavaScript to make your site interactive and fun.

As you become more skilled with these tools, challenge yourself by learning a popular programming language like Python, C#, or TypeScript. Start with the basics and create small, simple programs to build your confidence.

When you're ready, explore basic computer algorithms, especially those often seen in job interviews. Learn them well and understand the patterns behind them. This will give you a strong foundation and boost your confidence in programming. Keep going, and enjoy the learning journey!
0
0
Updated
Share a link to this answer
Share a link to this answer

Titash’s Answer

In addition to all the great answers already posted here, I wanted to add that, as with many fields, "learning how to learn" is key. What I mean by that is it's fine if you start by learning, say, Java, but eventually most of your work involves, say Python (to choose two random examples). The specific language or context matters less than you challenging yourself and learning how to analyze and design for specific requirements in a software solution, and becoming comfortable with coding structures, patterns, good practices and so on.

As we all know, AI is completely changing how many things are done today, and software is certainly no exception. It is impossible to say how much a given software engineer's job in the future will involve writing code to solve problems directly versus writing code to prompt AI coding agents or code to create a harness to manage the AI agents that write and execute tests for software and so on. So in this uncertain situation, I think it's good to focus on your general software skills and familiarity more than anything and not worry if the specific language or environment you choose does not happen to be the one that matters for your career going forward. Hence "learning how to learn." Most likely, you (and all of us) will have to adapt no matter what, so you want to just be as ready for that as you can.
0
0
Updated
Share a link to this answer
Share a link to this answer

Sabarinath’s Answer

Building a strong foundation in computer science fundamentals and understanding the software development lifecycle is essential for long-term success in technology-driven careers. I recommend focusing on mastering one programming language deeply, while also developing working knowledge of SQL to effectively retrieve and analyze data. Add exposure to key AI tools to understand how intelligent systems are designed and applied.
Equally important is cultivating a habit of continuous learning—regular reading within your areas of interest will keep you informed and intellectually agile. Alongside technical skills, prioritize the development of analytical thinking, problem-solving aptitude, and strong communication abilities. Skills such as articulating ideas clearly and participating effectively in group discussions will significantly enhance your professional impact and career growth.
0
0
Updated
Share a link to this answer
Share a link to this answer

Sandeep’s Answer

Hello Vivi,

The best way to start is by learning one programming language, such as Python or JavaScript, and building small projects with it. Projects teach you much more than just watching tutorials.

As you improve, learn problem solving skills, data structures, and basic algorithms. Sharing your projects on GitHub/Bitbucket can help you build a portfolio and show your progress over time.
0
0
Updated
Share a link to this answer
Share a link to this answer

Neha’s Answer

Hi Vivi, begin by learning programming logic and try a few courses on Udemy to get the basics. These courses will also give you some problems to solve. Once you're comfortable, start applying your skills to small everyday projects. This will help boost your confidence!
0
0
Updated
Share a link to this answer
Share a link to this answer

Anuradha’s Answer

To become a software engineer, dive into learning by doing. Start with a versatile language like JavaScript or Python, focus on the basics, and create real projects. Enhance this with online courses, coding challenges, and build a portfolio on GitHub.

1. Master the Basics (Choose One Language)
Stick to one language and learn core concepts like variables, loops, arrays, and object-oriented programming. JavaScript is great for web applications, while Python is excellent for back-end development and data tasks.

2. Use Structured Learning Platforms
Take guided courses to stay on track. Free resources like freeCodeCamp and roadmap.sh offer structured paths. Practice daily challenges on sites like Codewars or LeetCode to improve problem-solving skills.

3. Create Real-World Projects
Tutorials are helpful, but real learning comes from writing your own code. Start with simple projects like a to-do list or calculator, then move to more complex ones like a full-stack app with user login.

4. Learn Engineering Tools
Software engineering is more than coding; it's about using the right tools. Learn Git and GitHub for code management and basic SQL for handling data.

5. Join the Community
Programming is a team effort. Share your work and learn from others. Review code on GitHub to discover new techniques, and join forums like the r/learnprogramming Reddit Community to ask questions and gain insights.
0
0
Updated
Share a link to this answer
Share a link to this answer

Thomson’s Answer

As a high school junior interested in software engineering, start by taking AP Computer Science Principles or AP Computer Science A in your senior year to learn software design, algorithms, and programming basics; if your schedule is already finalized, begin self-learning Python and core software design concepts since Python is beginner-friendly and widely used in AI and modern development. Focus on mastering one language first (preferably Python) by learning fundamentals like variables, loops, and data structures, then apply them through consistent practice and small projects. Building projects early—such as simple apps, games, or websites—is critical because hands-on experience and a GitHub portfolio demonstrate real skills beyond coursework. At the same time, improve your problem-solving skills using platforms like LeetCode or HackerRank to strengthen logic and algorithmic thinking. Join coding clubs, hackathons, or competitions to gain collaboration experience and exposure to real-world problems. Explore different fields like web development, AI, or mobile apps to discover your interests and direction within software engineering. Strengthen your foundation in math and logical thinking, as they are essential for advanced topics like algorithms and system design. To develop skills quickly, follow a consistent routine of learning concepts, practicing coding, and building projects every day, since repetition and hands-on work are the fastest ways to grow.
0
0
Updated
Share a link to this answer
Share a link to this answer

Rachana’s Answer

Hello Vivi,

Pick one beginner‑friendly language (Python or Java, Sql) and work through an online course that teaches programming fundamentals, then practice a lot by solving small problems and building tiny projects (games, tools, simple apps).
As you progress, learn data structures/algorithms and put 3–5 real projects on GitHub so you build both skills and a portfolio that shows you can do software engineering work.
0
0
Updated
Share a link to this answer
Share a link to this answer

Jordan’s Answer

Find something you love and start using AI tools to bring your idea to life. Learning by doing is a great approach, and AI like Gemini can really help you. Even as a professional, I keep learning and creating. You can do it too!
0
0
Updated
Share a link to this answer
Share a link to this answer

Gavin’s Answer

Start creating things right away. The best way to grow as a developer is by making real projects, not just watching tutorials. Try building a mobile app, a web app, or a simple game. It doesn't have to be perfect; it just needs to be yours. Each bug you fix and each feature you add teaches you something valuable that a course can't.

Don't wait until you feel "ready" to start. Put your projects on GitHub from the beginning, even if they're not perfect. GitHub is like a living portfolio, showing colleges and employers that you consistently build things. Learning Git early makes you a more professional developer since version control is a daily tool for every engineer.

The software field is huge, with areas like web development, mobile apps, data science, game development, and AI. To find what you enjoy, try a bit of everything. Build a website one month, then an iOS app the next. Notice what you enjoy doing the most. That's your clue to what excites you.
0
0
Updated
Share a link to this answer
Share a link to this answer

Teklemuz Ayenew’s Answer

Starting your journey in software development can be exciting and rewarding. Begin by focusing on the basics and learning through practice. Pick a language like Python or JavaScript and dive into core concepts such as variables, loops, and functions. Spend about 1 to 2 hours a day, 5 days a week, working on simple coding challenges on websites like W3Schools, Exercism, Coddy.tech, SitePoint, and TutorialsPoint.

As you get comfortable with the basics, start applying your knowledge to small projects on weekends. Create useful tools like a study tracker for organizing homework, a habit tracker for daily routines, or an expense tracker to manage your money. Learn how to use GitHub to save your code, track changes, work with others, and show off your projects. Follow structured learning paths from roadmap.sh. This helps you build strong skills, stay motivated, and get ready for college where you can explore software engineering in more depth.
0
0
Updated
Share a link to this answer
Share a link to this answer

Yamuna’s Answer

That's awesome to hear! Thinking about your future early on is something to be proud of. Starting as a high school junior gives you plenty of time to learn and grow at your own pace. I suggest beginning with the basics of coding by picking up beginner-friendly languages like Python or JavaScript. As you get better, you can explore more languages.

It's also smart to start using GitHub early on. It helps you save your projects, track your progress, and create a portfolio that shows what you're learning. Try building small projects like a simple website, game, or app. Each project will boost your skills and confidence.

Keep learning consistently, stay curious, and enjoy the process. Strengthening your math, logic, and problem-solving skills is also important since they're key in software engineering.

If you stay dedicated and keep practicing, you'll build strong skills over time and create a bright future in the tech industry.

Good luck!
0
0
Updated
Share a link to this answer
Share a link to this answer

Rishav’s Answer

Hi Vivi,

Here's a friendly step-by-step guide for you:

1. Get into the habit of writing down tasks in steps. This will help you think things through better.
2. Dive deep into learning an Object-Oriented Programming Language. Once you get the hang of it, languages like Java and Python will be much easier.
3. Choose a coding language to start with, like Java or Python. If you're interested in AI, Python is a great choice.
4. After learning Java or Python, you'll be ready for backend development. To handle the visual side, learn HTML and JavaScript. They're really useful!
5. Now that you know both backend and frontend, you'll need to learn SQL for storage.
6. With all your skills, think of a simple problem and try to solve it. This is super important and will teach you about things like networking ports, logging, and APIs. For example, you could try building a Library Management system.
0
0
Updated
Share a link to this answer
Share a link to this answer

Rahul’s Answer

Great question and good career choice.
A few considerations, the course work around CSA and CSP will help you learning the basics of programming. As part of the above courses you will also be able to learn a language. For a well rounded Software Engineer, they will need to have knowledge about the process for software development (SDLC) and the technology. If you have the opportunity I would advise you to build something now (like say a website for a school club, game). This will help you learn all the basics around the technology. For the process part, my suggestion is to enroll in one of the online courses around the different software development process / methodology (Like Waterfall, Agile etc.). This will give you a good feel of "how" the actual work is executed. The final portion of this which I always encouraged my son - There are a lot of technology related podcast, subscribe to some of the, nothing better to hear it from the leaders to see which way this ever-changing field is evolving. All the best on your journey.
0
0
Updated
Share a link to this answer
Share a link to this answer

Sharadha’s Answer

The best way to start is not to learn “everything about software.” It is to pick one lane, one language, and one project path, then build from there. People do break in through self-teaching, bootcamps, or a CS degree, but the common denominator is consistent practice and proof of skill—not the label on the path. If you want to move faster, the biggest accelerators are simple: daily coding, fewer courses, more building, and public proof of progress. The main trap is over-learning and under-building.
0
0
Updated
Share a link to this answer
Share a link to this answer

RAHUL CHOUDHARY’s Answer

Hi Vivi, starting at your age is a big plus because you have lots of time to learn before you start working. Try coding to create projects you love. This way, you'll learn quicker and enjoy what you're making!
0
0
Updated
Share a link to this answer
Share a link to this answer

Xavier’s Answer

Pick one language like Python or JavaScript, learn the basics, and immediately start building your own small projects. That's where the real learning happens. Don't worry about memorizing everything. Instead, focus on getting comfortable with Git, figuring out how to read error messages, and solving problems. At the end of the day, being an engineer isn't about how many tutorials you watch, it’s about proving you can build stuff that actually works. Best of luck to you!
0
0
Updated
Share a link to this answer
Share a link to this answer

Tiago’s Answer

Hi Vivi,

First of all, practice is very important. Start coding things you like or need. You can code a game, a personal blog, softwares to help you with your homework or to help you with everyday tasks. Coding every day will give you a lot of challenges and experience.

Second, focusing on fundamentals will help you in the long run. Learn algorithms and data structures. Study sorting algorithms, binary trees, dynamic programming, graphs. Exercise your problem solving skills. Programming contests like olympiads, ACM ICPC, TopCoder, CodeForces can be fun if you like competitions. They can also help you with CV and in interviews in the future.
0
0
Updated
Share a link to this answer
Share a link to this answer

Kavita’s Answer

Hello! It's fantastic that you've already decided to become a software engineer while still in high school. Many people are still unsure at this stage, so you're ahead of the game. To begin your journey, try learning a simple programming language like Python, Java, or SQL. Websites like W3Schools offer easy-to-follow lessons and tools where you can practice what you learn. As you get comfortable, you can explore tools like GIT or SVN, which help manage and share your code. You can also dive deeper into SQL to write more complex queries. Keep going, and you'll build a strong foundation for your future in software engineering!
0
0
Updated
Share a link to this answer
Share a link to this answer

Rolivhuwa’s Answer

The fastest way to start is also the simplest: pick one language and start building things with it. Python is the friendliest first language, and JavaScript is great if you want to see results in a browser quickly. Don't agonize over the choice. The fundamentals carry over, and your first language won't be your last.
Skip the trap of watching endless tutorials without writing your own code. You learn by building, not by passively following along. After a beginner course, the real growth comes from making your own projects: a small game, a website, a tool that scrapes a sport's scores, anything you actually want to exist. You'll get stuck constantly, and figuring out how to get unstuck is the skill that separates engineers from people who finished a course.
For free, high-quality structure, three resources are worth more than most paid bootcamps: Harvard's CS50 (an excellent intro to computer science), The Odin Project (full web development path), and freeCodeCamp. Pick one and finish it rather than sampling all three.
Put everything on GitHub as you go. It becomes your portfolio, teaches you the version control every real job uses, and gives you something concrete to show. A handful of finished projects beats any certificate.
A couple of things that compound: learn the underlying computer science, not just syntax, since data structures and algorithms are what technical interviews test. And you're in San Francisco, which is a genuine advantage. Look for high school coding clubs, hackathons, and programs like Girls Who Code, and as you get older, summer internships. Being a teenager who already ships projects makes you stand out more than you'd think.
You've got a real head start by asking this now. Pick a language this week and build something small. That first step matters more than picking the "perfect" path.
0
0
Updated
Share a link to this answer
Share a link to this answer

Sanjeev’s Answer

Hi Vivi,
Great question. A lot of people think that software engineering is all about writing code. It is actually a lot more than that. It is a process of designing, building, testing, deploying and maintaining systems. It also includes problem solving, system design, quality assurance, and improvement of the software. Since you're in high school, it's a good time to pick programming that will help you in the future.

Simple coding is ok but if you really want to succeed, you'll need to do more than that. You'll need to get involved, practice, use AI tools to learn and practice as much as possible. So one site you could try is codecademy.com. This site allows you to start the courses that you are interested in for free and then deep dive into what you like. Your plan should be to pick up one language well. Python is good and is extensively used in Data Science which can offer you various career opportunities. There are also roles for testing software and software lifecycle management. I would also recommend that you view Apple's upcoming WWDC event on Jun 8th, download their developer app and view all the wonderful information that Apple shares. You should also look into Swift language if that interests you. This will allow you to create apps for the Apple ecosystem. Google and Microsoft also have their own platforms and it's worth checking out.

My advice is try Codecademy.com and start practicing your skills. Next try the AI tools to practice your code and see how it helps you. It is important to know as much about AI as possible because that's the future. Get involved in testing software and reporting bugs to understand how Software lifecycle works. Again, Apple offers it's public beta's to everyone for testing for free. Create a portfolio over the next year on small projects that you can learn and create. Another big thing is API which stands for Application Programming Interface. This allows software applications to connect to each other. PostMan is a great tool to explore API. You will also need to understand developer tools like Fiddler.

So pick up a language and explore other things and get involved. This is the best way to move forward. I hope this helps.
Thank you comment icon That's awesome to hear. Software engineering is a great field with lots of opportunities. I think from my experience, what I have learned that helped me was learning a program like through Code Academy, Khan Academy or youtube videos and then practicing with a project I updated as I went along. Another thing that software engineering is that understanding how you like to develop tools. As you may learn to code one way, but you may have a different way of developing which works better for you and make it your own. Software engineering takes a good bit of learning and being able to understand the value that people want and being able to think of a solution that helps meet that goal. Julian Bugarin
0
0
Updated
Share a link to this answer
Share a link to this answer

Alekhya’s Answer

That's great to hear! Start by building a strong foundation and getting hands-on experience.

1. Pick one programming language to learn well. Python is a good choice because it's easy for beginners and widely used. Once you're comfortable, try exploring Java, JavaScript, or C#.
2. Learn the basics of computer science, like variables, loops, functions, data structures, algorithms, and object-oriented programming.
3. Consistently work on projects. Create simple things like calculators, to-do lists, websites, games, or automation scripts. Projects teach you more than just following tutorials.
4. Practice problem-solving with coding challenge websites to improve your logical thinking and coding skills.
5. Get familiar with version control using Git and GitHub to manage your code and show off your work.
6. Join coding communities. Participate in school clubs, hackathons, online forums, and open-source projects to learn from others and work together.
7. Develop good learning habits. Focus on understanding concepts rather than memorizing code. Being consistent is more important than being fast.
8. Create a portfolio. Keep your projects on GitHub and document what you learned. A strong portfolio can be more impressive than certificates.
9. Explore different areas of software engineering, like web development, mobile apps, cloud computing, AI, cybersecurity, or data engineering, to find what you enjoy most.
10. Be patient and keep building. Software engineering skills develop over time. Small daily improvements add up to big expertise.

As a teenager, your biggest advantage is time. If you spend just 30–60 minutes a day learning and working on projects, you'll be ahead of many students by the time you start college or apply for internships.
0
0
Updated
Share a link to this answer
Share a link to this answer

Muzaffar’s Answer

The best way to start is to treat this like training for a craft: learn core fundamentals (one language like Python or JavaScript, basic data structures, control flow, functions, and debugging), then quickly shift into building small real projects (to-do app, API, simple dashboard, automation script) so you learn by doing, not just watching videos; use Git and GitHub from day one, write clean readable code, and build the habit of finishing projects, documenting them, and improving them over time; once you’re comfortable, level up with CS basics (algorithms, databases, networking, and system design at a beginner level), practice problem-solving regularly (a few coding challenges a week), read other people’s code, and get feedback through communities or mentors; finally, build a portfolio of 3-5 polished projects, contribute small fixes to open source, and practice explaining your decisions clearly, because getting hired depends on both technical skill and communication.
0
0
Updated
Share a link to this answer
Share a link to this answer

Yusufali’s Answer

If you want to become a software engineer, don't start with coding—start with problem solving.
The best software engineers are not the people who know the most programming languages. They're the people who can identify a problem, understand why it exists, and think through a logical solution.
For example, if you notice that students at your school struggle to keep track of assignment deadlines, think about:
• Why is this happening?
• What information do students need?
• How should it be presented?
• What would make it easy to use?
Before writing a single line of code, you've already started thinking like an engineer.
Once you have a solution in mind, start learning a programming language such as Python or JavaScript. As you learn, try building small versions of your ideas. You'll quickly discover what's practical, what isn't, and how to improve your solution.
One mistake I see in the industry is that many products are built because they're technically impressive, not because they solve a real problem. Great software is built with the user in mind.
So my advice is:
1. Observe problems around you.
2. Think through solutions logically.
3. Learn programming alongside solving those problems.
4. Build small projects and iterate.
5. Always ask: "Who is this helping, and does it make their life easier?"
If you focus on solving real problems and understanding the user's experience, the technical skills will follow naturally. The combination of problem-solving, communication, and programming is what makes a strong software engineer.
0
0
Updated
Share a link to this answer
Share a link to this answer

Mark’s Answer

Start small and build from there. I began with C++ and C#, which taught me the basics of programming. Today, learning Java is a great idea because it's still popular and has lots of libraries to explore. I got my degree in Game Software Engineering and then moved into business applications. This path worked well for me because I have ADHD, and focusing was easier when I was making small games with the Unreal or Unity Game Engines. Unity was my favorite, about ten years ago. Now, I work in DevOps and AI, where Python is popular if you're interested in that field. The key to mastering any skill is practice. Try different areas to see what you enjoy. Learn SQL to work with data, or explore HTML and React for front-end development. Check if your school can give you access to an AI model to try out. Being a good software engineer is all about finding solutions and exploring new possibilities. Good luck on your journey!
0
0
Updated
Share a link to this answer
Share a link to this answer

Jason’s Answer

This is a great question!

I always like to equate programming languages to hammers because it's a simple analogy that nearly everyone can relate to. Although hammers are a tool in all trade workers toolbelt the trade itself determines the type of hammer. Construction workers use a framing hammer, automotive or metal fabrication workers use a ball-peened hammer... etc...

Nearly all modern software engineering positions are going to require a considerable focus on OOP patterns however much has changes since the original Gang of Four, Design Patterns book was written in the 1990's. Most modern OOP programming languages include opinionated specifications for these patterns baked into the compiler.

However game development for example, even though OOP languages are industry standard focus on an entirely different skillset.

OOP is a highly sought after programming paradigm in most corporate or enterprise work environments due to its native ability to translate data to real world behaviors(objects). Additionally, most modern cloud native distributed systems will feature a heavy reliance on OOP fundamentals alongside other paradigms such as imperative or functional programming.

I would highly recommend spending time familiarizing yourself with the following books and reading materials

Reading Fundamentals
- Design Patterns: https://en.wikipedia.org/wiki/Design_Patterns
- Agile Software Development(S.O.L.I.D. Patterns):
- https://www.amazon.com/Software-Development-Principles-Patterns-Practices/dp/0135974445 or
- https://www.amazon.com/Agile-Principles-Patterns-Practices-C/dp/0131857258
- Clean Architecture: https://www.oreilly.com/library/view/clean-architecture-a/9780134494272/
- Working Effectively with Legacy Code: https://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052
- Test Driven Development: By Example: https://www.amazon.com/Test-Driven-Development-Kent-Beck/dp/0321146530
- Designing Data-Intensive Applications: https://www.oreilly.com/library/view/designing-data-intensive-applications/9781491903063/
- Database Internals: https://www.oreilly.com/library/view/database-internals/9781492040330/

Microservice & Cloud Native
- Microservices Patterns: https://www.oreilly.com/library/view/microservices-patterns/9781617294549/
- Building Microservices: https://www.oreilly.com/library/view/building-microservices-2nd/9781492034018/
- Fundamentals of Data Engineering: https://www.oreilly.com/library/view/fundamentals-of-data/9781098108298/

AI Assisted Development
- Beyond Vibe Coding: https://www.oreilly.com/library/view/beyond-vibe-coding/9798341634749/

LeetCode Exercises
- https://leetcode.com/discuss/post/4595959/oops-basic-to-advanced-topics-part-1-int-heyk/
0
0
Updated
Share a link to this answer
Share a link to this answer

Swati’s Answer

Hi! It's fantastic that you're already thinking about your career. Starting early can really help you reach your goals. You'll have lots of time to explore and discover what you love. Begin with the basics, like learning about Object-Oriented Programming (OOP). Get familiar with concepts such as variables, functions, data structures, and algorithms, and practice them. There are many websites where you can learn and test your code. YouTube is also a great resource for videos on basic programming concepts. Try learning about both front-end (user interface) and back-end development to see which one you enjoy more. Good luck, and keep your focus strong!
0
0
Updated
Share a link to this answer
Share a link to this answer

Afsheen’s Answer

Although I’m no longer a software engineer, my years of coding taught me that there’s no better time to start learning.

There are so many free resources online. Codecademy, for instance, helped me grasp the basics. The best way to improve is by building something you’re passionate about. I once created a website that was a dynamic resume with a Super Mario theme. It wasn’t perfect, but I learned a lot through the process.

I suggest joining communities, attending local events or conferences, and connecting with people who share your interests. You’ll learn a lot from others on the same path.

Don’t hesitate to use AI tools as learning partners. They can explain concepts, answer questions, review your code, and help you when you’re stuck. Just be sure to understand why something works, not just copy the answers.

The amount you can learn on your own today is amazing. Stay curious, build projects, and keep practicing. Every great software engineer started right where you are now.
0
0
Updated
Share a link to this answer
Share a link to this answer

Vinit’s Answer

Hi Vivi,

Moving fast doesn't mean rushing through tutorials. It means starting projects even if you don't feel ready. This discomfort leads to real growth. Great engineers learn by making mistakes and figuring out solutions.

Step 1: Choose One Language and Master It
Stick to one language and go deep. Avoid jumping between multiple languages. Start with Python. It's simple, powerful, and widely used in web development, AI, automation, and data analysis. Focus on:

- Variables, functions, loops, conditionals
- Data structures like lists, dictionaries, and arrays
- Basics of object-oriented programming
- Problem-solving skills

Excellent free resources:

- CS50 by Harvard on edX: Best introductory course
- Python.org official tutorial: Comprehensive and detailed
- freeCodeCamp: Structured, project-based learning

Step 2: Start Building Real Projects
Avoid getting stuck in endless tutorials. Break free by working on real projects. Here are some ideas:

- Create a personal portfolio website using HTML, CSS, and JavaScript
- Develop a simple to-do list or habit tracker app
- Build a weather app using a free API
- Make a Discord bot for a server you use
- Write a web scraper to collect data you're interested in

Each project should challenge you slightly beyond your current knowledge. This is where learning happens.

Step 3: Learn Git and Use GitHub
This step is crucial and often overlooked. GitHub acts as your professional portfolio before you have a resume. Upload every project, experiment, and idea. Recruiters and college admissions officers in computer science programs check GitHub profiles. Learn:

- Git basics like commit, push, pull, and branch
- How to write a clear README
- How to contribute to open-source projects, even with small fixes
0
0
Updated
Share a link to this answer
Share a link to this answer

Soham’s Answer

Hi there Vivi!
It’s great that you’re interested in software engineering this early. If I were in your shoes, I’d focus on building projects with the technologies and skills you’re learning now, because the fastest way to improve is by actually making things.

Try to find a problem in your daily life, or something you wish existed, and build a solution for it! That will help you develop practical skills much faster than only studying theory.

I’d also recommend joining local or virtual hackathons. They’re a great way to build collaboration skills, work under deadlines, and get experience that reflects the real software world, or at least a glimpse of it.

Finally, get a GitHub Student account. It gives you access to useful tools, resources, and opportunities that can help you keep growing.

Happy Learning!
0
0
Updated
Share a link to this answer
Share a link to this answer

Ankit’s Answer

Hi Vivi,

It's great that you know what profession you want to pursue. To begin your journey in Software Engineering, start by learning the basics. First, understand data structures and problem-solving techniques. Choose a programming language you enjoy and start with simple problems, gradually working up to more difficult ones. Once you feel confident, try creating small projects to apply what you've learned.

Good luck!
0
0
Updated
Share a link to this answer
Share a link to this answer

manoj’s Answer

Embarking on the path to becoming a software engineer is an exciting adventure where you build skills step by step. Here's a helpful guide to get you started:

1. Pick a foundational programming language that excites you. Python is fantastic for AI and machine learning, while Java or .NET are key for web development. If you're interested in designing websites, explore React, Angular, or JavaScript for frontend development.

2. Dive into understanding data structures and algorithms. They're like the building blocks of coding.

3. Start coding and try creating a small project. It's a fun way to see your progress and learn by doing.

4. Get comfortable with version control tools like Git and GitHub. They help you manage and share your code.

5. Learn the basics of system design and how applications work. This will give you a broader view of how everything fits together.

Remember, every step you take is progress. Keep practicing and enjoy the journey!
0
0
Updated
Share a link to this answer
Share a link to this answer

Prakriti’s Answer

Hi Vivi ,
Start small. Pick one area that is of interest to you. Say for example, you like how the UI of a website looks like. Choose a programming language to learn more on the skills. Then start building very small functionality at a time. Most importantly love what you do. That makes the journey easier. Best of Luck !
0
0
Updated
Share a link to this answer
Share a link to this answer

Kimberly’s Answer

The best way to start learning software engineering is to focus on the basics first: choose one programming language, learn how to solve small problems with it, and practice consistently every week. Build simple projects as soon as possible, because that is how you turn theory into real skill and learn how code works in practice. Alongside coding, get comfortable with problem-solving, debugging, and using tools like Git, since those are core parts of the job. Over time, keep increasing the difficulty of your projects so you can strengthen both your technical skills and your confidence.
0
0
Updated
Share a link to this answer
Share a link to this answer

Lincoln’s Answer

Hello,

You're asking a fantastic question about where to begin.

Here are some steps to help you improve:

1. Learn object-oriented programming. It's essential for organizing data in objects that you can use in different places.
2. Pick a programming language to build your problem-solving skills.
- Python: It's great for handling the behind-the-scenes logic of an application, moving data from a SQL backend to the front end.
- SQL: This is crucial for managing data in many applications, using stored procedures and functions to get the data you need.
- React or JavaScript: These are perfect for building the front end, what users see and interact with on websites or apps.

Think about the types of problems you enjoy solving, and start from there.

Good luck!
0
0
Updated
Share a link to this answer
Share a link to this answer

Jumanah’s Answer

Start by learning the basics of system design, solution design, and best practices in your tech area.

Decide if you want to focus on front-end (user interface) or back-end/infrastructure/data engineering. Then, learn the most current tech stack for that field, like React and NextJS for front-end work.

Keep up with trends since things will change by the time you finish your studies. Learn to use tools like Claude and AI to automate tasks. Include 2-3 projects in your portfolio, highlighting the tech stack you used.
Thank you comment icon Thank you for the advice, Jumanah. Mckenzie
0
0
Updated
Share a link to this answer
Share a link to this answer

Anuj’s Answer

Learn Python or JavaScript: Start with one language on platforms like freeCodeCamp or CS50x.

Build Projects Immediately: Don't get stuck in tutorial hell. Build simple games, websites, or automation scripts to apply what you learn.

Use GitHub: Store your code there. It tracks your progress and builds your future resume.

Leverage AI Tools: Use Gemini's Guided Learning mode to break down complex coding concepts step-by-step, or practice with coding quizzes.

Join Communities: Participate in high school hackathons (like Major League Hacking) to learn from peers rapidly.
0
0
Updated
Share a link to this answer
Share a link to this answer

Steve’s Answer

Software Engineering is a great field and is very exciting. I would say, find something you like to do with software and learn. For example, you can build a utility that help you organize your music or books or may be a game. There are also emeging tools with AI that can help you learn. You can do something with AI then you can ask AI questions to learn; how was it done, why it was done this way but not another way, how it can be done in another programming language. So, AI can accelerate learing. It is also great to plan to pursue collage education in this field and related emerging changes.
0