Everything I know as a Software Engineer (pre-2024)
- Hoang Nguyen
- Dec 10, 2024
- 4 min read
Updated: Dec 14, 2024
Pre-Knowledge (1997-2015)
Growing up in Hanoi, I fostered a love for math and logic. My curiosity led me to explore concepts like fractal geometry and solve IQ puzzles quickly. My family and I regularly watched Road to Mount Olympia and tackled the logic rounds together. While school provided the basics, I often had to review these topics independently to understand them fully.
How to understand derivatives and integrals: I learned to solve math problems involving derivatives and integrals, but it took extra effort to truly understand the underlying concepts.
How to approach geometry logically: I practiced solving geometry problems by applying logical strategies and recognizing patterns.
University Phase (2015-2019)
At the University of Massachusetts Amherst, I learned essential computer science concepts and wrote my first lines of code. The program allowed me to revisit math and apply it practically.
How to apply calculus and linear algebra: I revisited these math subjects and saw how they connect to fields like physics, finance, and programming.
Learn about object-oriented programming: I learned to design data structures using interfaces and inheritance in Java.
How to debug code: I gained experience writing unit tests and debugging with Eclipse tools, using Data Structures and Algorithms in Java (4th Edition) as a reference.
How to understand computation principles: While I took the CS250 course on computation, its concepts were not directly applicable to my later work.
How to program with abstraction: I developed skills in abstract thinking and applying it to programming.
Learn to understand computer systems: I learned about virtualization, concurrency, and security using resources like Operating Systems by Remzi Arpaci-Dusseau.
Learn to design algorithms and solve problems: I practiced algorithm design through courses and the Algorithm Design book.
How to solve coding challenges: I completed over 200 Leetcode questions, sharpening my problem-solving skills.
How to use SQL for databases: I learned to manage databases and write queries for data retrieval and manipulation.
How to work with core technologies: I gained experience with Java, JavaScript, and SQL.
Job 1: Break Diving (2019)
At Break Diving, a non-profit organization, I helped build a social network platform and experienced a larger codebase for the first time.
How to write tests using frameworks: I learned to write unit and integration tests to ensure code quality.
How to practice Scrum: I participated in daily stand-ups and followed Scrum methodologies to manage tasks.
How to communicate effectively: My manager’s guidance improved my communication skills, helping me collaborate better with the team.
Side Quest
How to prepare for coding interviews: I practiced Leetcode problems to enhance my skills beyond QA tasks, aiming to build features in future roles.
Job 2: Foxconn (2019-2022)
At Foxconn in Milwaukee, I worked on AI integration projects for industrial factories, collaborating with diverse teams.
Here is what I learned with Optimo:
How to program in Python: I expanded my language skills by developing applications in Python.
How to build web applications with Flask: I created backend services and APIs using the Flask framework.
How to design scalable systems: I learned to build systems that scale vertically to handle increased workloads.
How to use NGINX and load balancers: I configured NGINX for web serving and implemented load balancing strategies.
How to use Redis for caching: I implemented Redis to optimize data retrieval performance.
How to handle message queues: I learned to use RabbitMQ and Redis for asynchronous task processing.
How to integrate AWS services: I used AWS S3 for storing assets and AWS RDS for MySQL database hosting.
How to collaborate with cross-functional teams: I worked closely with DevOps, data science, frontend, and product teams.
And here is what I gain from IAI Institute:
How to program in Java and Spring: I built backend services using Java and the Spring framework.
How to use the Vue.js framework: I developed frontend components using Vue.js.
How to manage databases with MySQL Workbench: I handled MySQL databases effectively.
How to test APIs with Postman: I used Postman for developing and testing APIs.
How to write effective tests: I practiced writing unit tests with mocks to ensure code reliability.
How to deploy with Kubernetes: I used the Kubernetes Java client to manage and allocate resources.
How to use Celery for background tasks: I queued and distributed tasks to Celery workers for scalability.
How to deploy AI models: I deployed AI models to both cloud and offline environments.
How to handle deployments and on-call duties: I learned about deployment processes, regular releases, and client feedback management.
Job 3: Advance BizQ
At Advance BizQ, a subsidiary of Advance AI, I worked on financial services projects.
How to master Django frameworks: I learned to build robust applications using Django and its libraries.
How to manage PostgreSQL databases: I performed data migrations, validations, and optimizations using PostgreSQL.
How to distribute tasks with Faust: I used Faust to handle distributed tasks efficiently.
How to use Apache Kafka: I implemented event-driven development with Kafka.
How to develop serverless applications: I created applications using Google Cloud Platform and Google App Engine.
How to migrate NoSQL to PostgreSQL: I ensured data integrity during migrations.
How to measure performance with Postman: I tested and validated API performance.
Side Projects: Real-Time Quiz App
I created a quiz app allowing multiple users to compete simultaneously.
How to use Django for rapid development: Leveraged Django’s features to build the app quickly.
How to implement websockets with Django Channels: Enabled real-time communication.
How to use bots for engagement: Added bots to simulate users for single-player mode.
Side Projects: Trail Runner Studio
I built this app to plan trail races and manage nutrition.
How to use Overpass API: Retrieved custom routes with specific queries.
How to visualize routes with Mapbox: Displayed routes interactively.
How to calculate elevation gains: Integrated Google Elevation API for elevation data.
How to find similar routes: Developed algorithms to suggest similar trails.
How to integrate OpenAI: Suggested exercises using AI models.
How to connect with Strava API: Estimated race completion feasibility through Strava data.
This journey reflects my continuous growth, learning new technologies, and building projects driven by curiosity and passion.
Comments