My coding journey

Hong Tran
9 min readMay 19, 2020

--

Today marks one year since I started coding and I would say it has been a joy more than a challenge for me to pursue this path. And till this point, I still take what Steve Jobs said as a direction: “Everybody in this country should learn how to code because it teaches you how to think”. Learning programming should be learning how to think and whatever you learn has to become yours. Another realization about the myth and debate whether you need a college degree is that degree does not matter, what matters is whether you have spent 10,000 hours to reach to the tipping point and what you can bring to the table. Who does not want to go to a proper school and to have a long time to deep dive and master his skill? Not having this privilege means you have to put thousands times of effort and do not let this stereotype of ‘having a CS degree’ discourage you to unlock your potential.

I still remember clearly the days I went to Starbuck to take online classes (from Lambda school) and to do assignments in 8 hours straight, always ordered a normal coffee plus a big cup of water, sometimes yogurt or banana, then picked a table that has a plug near by. Day after day like that in 3 months, Starbuck had become my second home. Sometimes I forgot my laptop charger there and will just leave it for the next day. I wish I had been able to stay at my real home to have a more stable environment but since I had to commit 3 hours for my internship at the office, I would have to hang around to save time. Nevertheless, that was the time I was most determined, most committed, the time I got most of a-ha moments. Everything was new to me. The day I learnt about Git, I almost cried because I had completely no idea what that thing is. At that moment, my little ego was crushed, never ever in my life I had no idea what I was doing :) However, I never doubt myself for entering this whole new world, I always saw that I could catch up concepts and logics very fast and find it very rewarding to see what happens eventually. Coding is a challenging, scary yet exciting thought process, starting from what I need to achieve then “how do I get there” and cooling down to“does it work?”. Coding actually helps me to structure my thoughts better and especially to sharpen my problem solving skill, which were reflected through my internship. I started with Web development and my very first project was as a User Interface developer developing a landing page for a platform using HTML and CSS. It was also my first experience in a full-stack team, my very first time to hear the terms such as ‘Frontend’, ‘Backend’. I was extremely hungry to complete the page within 2 days to show my team and was also aggressive to compete with other UI guys. Despite the music from Starbuck, rainy or sunny day, I with my earbuds, just code, just standup with teams, just debug and just build, with over 100% of my energy. I then learnt more about JavaScript and React and felt like from now on the world became more dynamic. I started being more curious about how Facebook build this feature or how the other app made that. My second project was building user on boarding for another platform, including signup, login and create profile. I was in a team of 3 Frontend guys to make this, at first, it came out very ugly and buggy, and there were lots of back and forth about how the on boarding journey should be as well as which step should go first. Although we were in different time zones, all of us were totally in and stayed until we fixed those annoying bugs. It was fun debugging. Working in projects, I realized a bigger picture that whatever each of us is doing is contributing to final result, and that communication as well as collaboration are as important as writing code. The scope of projects I was involved in growing bigger with Data Science and Machine Learning being added. These projects are sprints which we only had 1 week to finish up so they are more intensive and we are pushed to learn much more through doing. End of summer was the end of my Frontend portion and also the closing of Summer Hacker Program.

However, my curiosity for Backend and the rest remained so I wrote this reflection as a mark for my decision of continuing the full-stack program to learn more of Backend and Computer Science. I chose Node.js over Java since the language seems fast, robust, simpler and more elegant even though later on I wish I had taken Java. Backend portion expanded my horizons a lot and it makes lots of sense to me. Designing database schema was something I am so confident about and could get it right away. The feeling of controlling architect of an application is great too. My lab project was my first time stepping out of my comfort zone since we worked with real clients for a real world problem and very much we had to research ourselves from choosing tech stack to implementing every feature on UX design. The goal of this project was to build a dashboard for local organization to keep up-to-date level of waters on wells through data from sensors installed there. To architect a server from scratch, we spent lots of time for database design as well as for brainstorming how to feed data and update the dashboard real time. During this time, I got my first interview for developer position and the memory is still there that how I much I was embarrassed when I could not answer the question “what’s the difference between double equal and triple equal in JavaScript” so I swore to never forget this again. This experience taught me a huge lesson of building a strong fundamental. Once you understand the fundamental, you can go up much higher and faster.

After the lab project, I had to stop my online course to take some part time jobs for my legal status. That was not an easy decision but I was not scared either, I was confident about my ability to self-taught and I later on consider this as a tipping point when my programming intuition started being cultivated. The universe opened a new door for me to be code coach for kids. It felt like I was actually learning stuff now. I needed to learn Python and Java very quick to help kids build projects. As a coach, I demanded myself to answer any question relating to syntax or Computer Science (CS) basics, new goal set and challenge accepted. I have learnt a lot through coaching by explaining CS, syntax and logic in the easiest-to-understand way and by articulating my thoughts. One of my professors used to say “You remember 10% what you listen to, 70% what you say and 90% what you do” and this case was definitely a good example for number 2. This coaching journey also brought me closer to these friends-Google, Stack Overflow, freeCodeCamp. A friend of mine told me “one of the skills of a developer is to be able to search for knowledge on their own, simply because there are so many things you need to know and these things tend to be available online already” and I cannot disagree more. In this coaching job, I was exposed more to classic CS games such as Guessing a number, Tic Tac Toe, 2048, Hangman, Apple Catch and had a chance to bring my skill of breaking down logic of a game to the table. Pygame was great for both me and my students, for both graphic and applying more high level concept such as Object Oriented Programming. I and my students, we had not only fun but also a tons of learning, I could not ask for more. Other than being a coach, I was also an instructor in which I was responsible of inspiring kids to learn programming and of teaching them how to learn. I have been so grateful for these opportunities because I got to share what I love and spread it even more. Above all, through code coaching and instructing, I get to fulfill my mission of getting young people to be exposed to programming at early age, a privilege I did not have. Besides jobs, a friend motivated me to solve more code challenges on Hackerrank and Leetcode, to practice solving and mocking interviews on pramp and so I started picking up more knowledge about data structure and algorithm in which CS50 helped me a lot. Developing algorithm has been a thing I am so keen on, it connected my solid fundamentals in math with my joy in thinking and my interest in solving problems. I was flying on the moon when I went beyond solving code challenges to apply an algorithm into real applications I was developing. Talking about algorithm, Grokking Algorithms is one of my favorite books, it’s just very intriguing to me, especially the illustrations. My next interview I was being asked about stack and queue and the interviewer recognized that I explained well and showed that I actually understood them, he made that day of mine. I finally got an intensive technical interview with VP of engineering and engineering managers in a big company. Even though I did it in a library room, I rocked it and I enjoyed discussing the challenges with them too, nothing was intimidating or scary to me at all. I was very sure that I would get an offer and I did. I cried in happiness after receiving the phone call, it was literally a dream comes true but still felt like out of imagination. Highly confident in my ability, I got crushed my stereotype and judgement of not having a ‘real’ Computer Science degree, I never dared to imagine one day I would have a chance to work like a software engineer, with other and senior software engineers. I ended up not being able to take it due to visa issue but it meant a lot to me, that one day I can become a software engineer.

Not just coding, I have been curious about engineering and designing too. With my original thinking and lots of imagination, I like the idea of building things. You start with zero, you start to think more about the problem, you then design something, figure out how it works, implement it and test it, these come in with experiment and iteration. Till you get to the point where your thing actually solves the problem, you say ‘wow, I did it’. Building a game, a web application or a actual object, they all have these elements in the process of building. At the starting point things tend to be very ambiguous and uncertain while at the mid point you may be frustrated some times but if you are persistent enough to get to the end, it’s all worth it. Couple of things I learnt through building are: one, thoughts are more important than tools, if you have thoughts, you can always find tools to build; two, collaboration is the key, building alone won’t lead to innovation, different perspectives force us to think harder; three, start small and iterate from it, there is not much to go around to have a perfect plan and then adjust it in reality; fourth, you have to actually try it to see what comes out, before that, do not listen to anyone; fifth, stick to it, if you are truly passionate about something, be the first one to bring something to the table and the last one to stay on that table when everyone else left; sixth, work on something that matters to you, you will never have to worry about giving up.

JavaScript, Python, Java or any other languages, once you know one, and then a next one, you can learn anyone, even faster. But, languages are not important as problem solving skill, and nowadays, problem solving skill are not even important as building and making stuff to solve real world problems. Building already proves you can code and the more you build, the better you code. Building also shows you are much more than a coder, you have good thoughts and ideas. And don’t just build, launch too, get feedbacks from real users. That’s when you learn the most.

I alway wish that I was exposed to programming and engineering earlier because I would have started building earlier that way, but probably 4 years of undergraduate would be too long too me. I am jus kind of person who favors learning by doing and dislike class environment. You can learn much more by doing, by googling, by your own and from people you work with. Your passion will give you some hints to go, never afraid, stay hungry, stay curious and keep building!

--

--

Hong Tran
Hong Tran

Written by Hong Tran

“Life begins at the end of your comfort zone!”

No responses yet