top of page

Everything I know as a Software Engineer (pre-2024)

  • Writer: Hoang Nguyen
    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.

Recent Posts

See All

Comments


bottom of page