Skip to main content
4 answers
5
Updated 1234 views

How to prepare to become a good software engineer?

What types of Data Structure should I practice? How can I prepare for interview such as technical session and behavioral session?

Thank you comment icon To become a good software engineer, you need to balance technical mastery with professional habits: 1. Foundations First: Master Data Structures and Algorithms and Big O Notation. This allows you to write efficent, scaleable code rather than just "working" code. 2. Depth over Breadth: Pick one language (e.g., Python, Java, or JavaScript) and learn its internals and paradigms deeply before chasing the next "shiny" framework. 3. Real-World Practice: Build original projects (not just tutorials) and host them on GitHub to prove you can handle version control and documentation. 4. Engineering Mindset: Prioitize clean, readable code and automated testing. A great engineer writes code that other humans can easily maintain. Clarence

5

4 answers


1
Updated
Share a link to this answer
Share a link to this answer

Joseph’s Answer

To be a good software engineer, you need to know how to use your tools well every day. If you want to work with data structures, a strong math background is important, especially in fields like Generative AI, which handle big data sets to get results.

AI isn't just about mysterious models; these models need well-organized data to work.

In Generative AI, text or images are turned into complex vectors. To manage these, you need special data structures like k-d trees or graphs for finding similar items, like the closest match to a given input.

The "T" in ChatGPT stands for Transformer. This system uses stacks and queues to control the order of tasks and manage how attention moves across words in a sequence.

Handling large language models requires knowing hash tables and heaps. This knowledge helps keep data retrieval fast, so response times don't get too slow.

Joseph recommends the following next steps:

Alison.com course "Applied Math: Practical Machine Learning with TensorFlow" if you want to see the math in action using code, this course bridges the theory with Google’s AI framework.
1
0
Updated
Share a link to this answer
Share a link to this answer

Anne’s Answer

Here's a friendly guide to some key data structures you might encounter, especially if you're preparing for coding interviews with companies:

- Hashmaps
- Priority Queues (Heaps)
- Arrays
- Queues
- Stacks
- Lists

For more advanced topics, consider exploring:

- Trees (focus on important concepts like Breadth-First Search and Depth-First Search)
- Linked Lists (including Circular and Doubly Linked Lists)
- Graphs (learn about Kruskal's and Prim's algorithms, and how to detect cycles)
- Tries

As a software engineer, your main job is to solve problems. You'll need to look at existing challenges, understand the tools you have, and figure out the best way to use them. This skill improves with practice and experience. To become a better software engineer, it's important to expand your knowledge of tools and learn how to use them effectively.

Besides technical skills, you'll also need to communicate well with others. Problems can be complex, so you should be able to discuss them clearly and understand different perspectives. It's important to explain technical ideas in simple terms so everyone can work together smoothly. Teamwork with other engineers is crucial, as many tasks require collaboration.
0
0
Updated
Share a link to this answer
Share a link to this answer

Chinyere’s Answer

Hi Benito!

That’s a great question! You already have an advantage because you are considering this already.

First, concentrate on the fundamental data structures that are most often seen in interviews and practical work: arrays, linked lists, stacks, queues, hash tables (which are important), trees (particularly binary trees and binary search trees), heaps, and graphs. You should also know how to sort, search, recur, and understand time and space complexity (Big O). Practice justifying the effectiveness of your solution and why it works rather than merely memorizing it.

Second, practice problem-solving aloud for technical interviews. Make use of resources such as CodeSignal, HackerRank, or LeetCode. Set a timeframe, describe your reasoning in detail, and develop clean code to mimic actual interview settings. If you're targeting larger organizations, go over the fundamentals of system architecture as well. Gain a high-level understanding of how databases, scalable systems, and APIs operate.

Third, use the STAR approach (Situation, Task, Action, Result) to create organized narratives for behavioral interviews. Prepare to discuss:
- A challenge you faced
- A time you worked in a team
- A mistake you made and what you learned
- A project you’re proud of

Interviewers are assessing more than just technical skills; they are also looking at communication, teamwork, ownership, and growth mindset.

Put more effort into creating actual projects than interviews. Make applications, add to open source, or construct anything that addresses a practical need. Projects add a unique touch to your career and show ambition.

Maintaining consistency in your problem-solving techniques, quality projects, and communication abilities will put you in a very strong position. Software engineering is more about careful preparation and persistence than it is about being a genius. You’ve got this.

Best wishes!
0
0
Updated
Share a link to this answer
Share a link to this answer

semi’s Answer

Master the fundamentals first: core programming concepts, clean code, and basic system knowledge. Build small, real projects consistently.
Practice arrays, strings, linked lists, stacks, queues, hash maps, trees, graphs, recursion, sorting, searching, and basic dynamic programming.
For technical interviews, practice timed problems and explain your thinking clearly. For behavioral rounds, prepare real stories about teamwork, challenges, and learning from mistakes. Communication is as important as code.
0