TITLE : Three Years in Tech Based Startups: Advice for Considering a Career in Startups (Based on South Korea)
How did I start programming ?
I've always had a keen interest in IT technology, hardware, and gaming.
Since the age of five, I've been playing console (like Nintendo) and online games (like Starcraft), and I've always been an early adopter, eagerly purchasing and trying out the latest IT gadgets.
These interests remain strong to this day. In high school, I set a goal for myself: to become the owner of a company like Apple, with both stylish hardware and software.
However, at that time, the perception of programming in Korean society wasn't very positive, so my parents really disliked it when I sat in front of the computer.
So I just attended a university that matched my grades and graduated. After completing my military service as an officer, a lieutenant ( as military service is a duty for men in Korea)
I was contemplating what career path to take. And I decided it was time to pursue my dream of working in IT Technology. So, from September 2019 to September 2020, I dedicated 10~12 hours daily to coding, obtaining certifications, attending academies, and reading books to study.
Finally in October 2020, I began my official career as a programmer when I joined the startup I'm currently working at.
Insights and Lessons I've Learned
1. Trends Change in the Blink of an Eye.
Have you ever heard that "Koreans are really sensitive to trends"? When I first joined the company at 2020, technologies like 'AI', 'MLOps', 'Kubernetes', 'Docker' were relatively new in Korea, and not many companies are familiar with them. But now, almost every DevOps or Cloud Engineer postition requires skills are about Docker, Kubernetes and they prefer who have experience in AI. Most companies are now eager to internalize AI technologies.
2. The Lifecycle of Today's IT skill is Short.
If I compare the code and libraries from a project I worked on in my first year using the latest technology to the versions I use now, I can see numerous changes in commands and library usages, and technical improvements have been made.
3. The Higher the Understanding of the Program or Service You Want to Create, the Higher the Quality.
Some programmers might think that simply writing code is enough, but if you start designing a program or service with an understanding of who will use it and in what environment, you can foresee potential exceptions and predict what features might be needed. This allows you to handle problems and crises more flexibly. One should strive to be an engineer, not just a coder.
4. Consistent Note Taking is Essential for Communication and Archiving
No matter how good your memory is, you must write things down. When you work on various projects, if you later need to revisit an old project or run or modify someone else’s code, the absence of documentation can cause immense stress and consume a lot of time.
There are probably more than a hundred other things, but these are some of the most common ones I wanted to share.
Advice for Aspiring Programmers
1. Focus on How to Solve real-world problems by Programming.
While it's important to improve your programming skills and learn new technologies, it’s equally important to understand how these skills can be used to solve real-world problems. This requires an awareness of societal issues, inconveniences, and trends. Go for walks, observe everyday life, do some shopping, and be aware of what interests you (but don't overdo it!). This helps you understand the perspectives of those who don’t work in this area.
2. If You're Unsure About Your Skills or Preferences, I Highly Recommend Startups.
Due to the nature of startups, you might be involved in a project from start to finish and get to work with a range of technologies close to full stack. Initially, this might make you feel like you’re not good at anything or lack depth, but that's up to you. It’s a great opportunity to discover what you’re good at and what you find enjoyable among the various aspects of a project.
3. Don’t Be Afraid to Start Coding from Scratch.
When you find that the code you have written for a certain function or service is fundamentally flawed and needs to be rewritten, don't hesitate. Trying to fix a fundamentally flawed structure by patching it up can lead to spaghetti code that is a mess and unsatisfying, both to you and others. Sometimes, starting from scratch is better for organizing your thoughts and gaining experience, and you’ll probably be much faster than the first time.
4. If Continuous Learning and Gaining New Knowledge Isn’t Fun and Feels Like a Struggle, This Field Might Not Be for You.
This is really important. As a non-major who spent a year in various study groups and meetups with others aspiring to be programmers, I noticed that those who were motivated by just finding a stable job or had difficulties in other job fields, often struggled with performance and learning speed once employed, if they managed to get a job in programming.
Thank you for readming my long post! I hope my experiences can be helpful to someone. I'll continue to post more about technology and my thoughts in the future