The Story of Me Becoming A Front-End Developer in the Past Two Years

Prologue

It all started in the summer of 2015. At that time, I didn』t know quite much about programming. I had written some python toy code, and I almost got full grade on my C programming course. But honestly speaking, I quite knew the fact that I actually didn』t know anything at all. And I was quite sure that I DON』T even like programming, because I was not able to get any good feelings from coding. I thought that coding was just running the stupid black shell with some shitty code.

At that time I was especially concerned about my future, until I read some posts on the Chinese Quora, Zhihu, about some topics about front-end development, like 「What is HTML/CSS/JavaScript?」, 「What is Front-End development?」, 「What are the books that you would recommend for front-end beginners?」. I decided to take a try since it didn』t sound that boring. And I chose the book Head First HTML, CSS and XHTML (I would still recommend that one for total beginners). It opened the door of the new world to me.

I suddenly got immersed in that book. But right at that time we were having the coming final exams. So I only allowed myself to read that book after I got back from the library late at night. Looking back, me lying on bed reading the book after I got back, that was the happiest time I』ve ever had in my life.

I then realized that I had totally been wrong about my prejudice towards coding. And everything started to make sense to me after I built some dummy colorful html pages(with simple css styles). I knew why I wrote those code and I knew exactly what every single line of code does. That felt so right.

I then proceeded to read the books, DOM Scripting: Web Design with JavaScript and the Document Object Model, and Professional Javascript for Web Developers by Nicolas Zakas, which equipped me with some basics of JavaScript and DOM manipulation. And I also wrote several blog posts. They seem dummy to me today, but at that time I was really proud of myself. Sadly, I had to start to prepare the TOEFL, so I stopped everything related to it.

After I passed TOEFL, I went back on track. It felt so good to do something you actually like again. I began to write some toy code, and tried to implement some plugin-like website effect, like simple drag and drop (no sorting) with vanilla JavaScript. And I built one or two little games with HTML5 canvas, which made me feel quite good because I got to see my code literally running on a website, and a real website.

I then started to learn Backbone.js and some basic React.js in the following time. They at first didn』t make much sense to me at all, because I didn』t get the meaning why you literally write so much code only to get a Hello World example. And the APIs were just so difficult to remember. But luckily I found some super-useful tutorial on youtube, so that I could get some sense by watching it over and over again. Yes, it was that hard to get out of your comfort zone. But once you are used to the new paradigm, you are already in another new world.


Getting the First Internship at DaoCloud

In the mid of April in 2016, after I passed the GRE, I asked myself, why don』t get yourself an internship? And I seemed not able to find a good reason why not to do so. Thus I immediately began refactoring my projects, writing the first edition of my resume, modified it for countless times, and reached out to companies with it, asking if they have any related open position for internships.

I was lucky. Without any previous experience, I got, like almost ten companies giving me feedback that they wanted to know more about me and set up an interview. At first, honestly, I was extremely nervous. But very soon I got totally comfortable with the interviewers, and even numb, because they were kind of always asking the same questions, like 「Could you explain closure to me in JavaScript」, 「How do you think you could improve your code performance」, and 「How to make a element horizontally and vertically aligned center in CSS?」. Looking back, I think making decisions merely dependent on talking, is rather arbitrary and irresponsible. If I were a interviewer, I would always ask people coding, rather than talking through the interview.

I got turned down by two companies I was quite interested in, for different reasons. But I also got a few offers, one of which was from DaoCloud, which I really like (Maybe it』s their website design and logo were awesome), and I accepted it shortly afterwards.

In the mid of July, I arrived in Shanghai, alone. My first impression of this big city wasthe smell of the cold air coming from the air conditioner at the subway, and countless people crossing the road on the pavements at Wu Jiao Chang. I got in the group DaoVoice, where we(six people or so) built a IM platform for custom service.

My first two weeks were totally DISASTER. It was the first time that I saw tons of lines of code in one codebase. And I didn』t know anything about Angular.js,so I got to learn from scratch. I couldn』t make any sense from the official document because I thought reading that is too painful to me and reading it alone still cannot make me capable of handling our codebase. I spent hours locating the bug but failed, let alone how to fix it. And then I asked my team leader, who is a really good front-end developer, and I remember it took him less than one minute to locate the bug, fix it with one line of code, and get it merged to the master branch.

Things began to be better when I was assigned the first feature of the project. It was a complex feature list but could be separated to a few smaller ones. That was the first time I got the chance to really know how our code was organized, how we leveraged our own UI component library, what was the code pattern we commonly use, and what were those bootstrapping file are doing.

I suddenly realized that you don』t need to be an Angular expert before diving into the code. You just find what you need when you actually need it. And during that time I really realized the power of StackOverflow and Google and was surprised by how much they were helping me with my daily workflow. And I became increasingly familiar with all the tech stack we were using, including Angular.js, Sass, Gulp, etc.

The rest of time went very quickly. I became used to the daily work and also began to try new things like writing unit test and learning Docker. But it was still not easy for me to come up with code with high-quality on my own. For this I』m forever grateful for my colleagues helping me out with some stupid questions and reviewing my code and gave me suggestions afterwards.

Besides, I made a few very good friends, had a lot of fun. Three months were just like a moment of blink. It』s time to go back to college to prepare for my application for my master degree in States.


Get Shit Done?—?Strikingly

In February, 2017, I started to think about looking for another intern for the rest of the time before I graduate. The advantage was that I had almost 5 months for this intern. I soon contacted Strikingly, by which I was turned down when I was looking for my first internship because I only got three months, and they require at least 4. The interviews went just as expected and I got the offer in 2 weeks.

I got back to Shanghai in the beginning of March. Actually the location of Strikingly is quite close to DaoCloud, so I got the chance to have some reunions with my previous colleagues, which was good. And that time I was totally not afraid of being myself in Shanghai, because I had already knew that place quite well.

As a new front-end developers at Strikingly we took an onboarding training program, through which there are two tasks and you have to implement them with the tech stack that people there are using, which includes React, Redux, Flux, Morearty, etc. The training process again pained me. I seemed not able to handle something from scratch with the tech stack that I』m not totally familiar with. But this feeling went away soon once you were familiar with the codebase. Sometimes it』s just not a matter that you are not good enough, you just need to consider the complexity of the codebase, the tech debt, the teck stack, and the code convention, etc. Reach out to your colleagues, ask nicely about your questions if you cannot solve it after doing research. I think most people will be kind enough to help you out. Say thanks after you get it done!

People at Strikingly are awesome. They have different backgrounds, come from different countries, speak different languages, but the one thing in common is that they are all talented and always willing for help. I got TONS of pressure from my team leader, also the CPO of the company. I was asked to update the progress of each feature/bug that was given to me (in the worst case I had almost ten tasks at the same time). And he』s also strict, picky, and seemed not very friendly, like always yelling and criticizing your bad code smell:D

But rethinking about that, I actually learned quite a lot from him. I learned how to locate the bug and fix it much more quickly, which saved my ass debugging from then on. I learned that the developer should never easily turn to some hacking approach to the tricky problems. I learned how to manage my time so that everything is under control. I learned how to abstract things and put my shoes in different levels, users, developers, etc. I learned how to even code in different thinking levels, from single lines of code, to a function level, to a file level, to a codebase level, and ultimately to the level of a product, a brand. I also learned a bit of sense of product from him, like how is a good product stand out from a normal one. He is acknowledged as one of the most talented guys in Strikingly but also the hardest one. At last, I got his word of recognition, saying 「Good job, and thank you for your great work done at Strikingly」. That meant a world to me.

At Strikingly, I also developed a super good friendship with some of my colleagues who are of my age and are also front-end developers. Honestly, before that, I rarely touch code after work, and I kinda have grown increasingly tired of coding the similar business logic day after day. And it was they who gave me a whole new perspective on how coding could actually inspire people and teach you. I learned a lot of from them about modularization, coding style, and the importance of reading the source code of awesome projects and how you can learn from professional people. We are still in very good connection and they are still inspiring me everyday, even though I』m thousand miles away from them. Thank you, guys.


Life at States Until Now

In August, 2017, I came to the States to pursue my master degree. Everything is new and fancy, as what the counselor at the graduate orientation said, 「the honeymoon phase」.

But very soon I got into this second phase, called 「self-questioning」. I got tons of homework assignments and projects that constantly dragged me from coding my side-projects to the annoying math calculations. And I found it super hard to switch from these two modes. You would possibly find the code totally strange to you after you have eventually finished that course assignment, and vice versa. I』m still looking for a way to get used to that.

Another is that the pressure of finding internship opportunities for next summer. Everybody is burying his head in LeetCode, algorithms, and preparing interviews. It』s like since some time, you get this peer pressure thing that could drive you nuts.

Thanks to my previous experience as a front-end developer, I got this interview from Facebook, which is definitely the dream place for every software developers. I went through three rounds of interviews, had a great time with each of them, and learned quite a lot. They all asked me why I wanted to join Facebook. And my answer was always as simple as this: I want to do open source stuff. I want to contribute and prove my value. And by saying that, I mean it.

The offer arrived today and I』m beyond thrilled that my dream is coming true. Two years ago, I was just somebody who knew very little about programming, and now I get this offer by Facebook. That really gave me so much comforts and relief.

At last I want to say thanks. For all of these I should be especially grateful for all the people that have been accompanying me along the way. Frankly, I don』t have many 「good」 friends here like I did back in China. But there are my old friends who always care about how am I doing and willing to spend time to reach out and talk to me, be a good listener and hear me complaining all the things that didn』t appear nice to me. Forgive me that I cannot put every name of you here, but I will be absolutely forever grateful.

Reach me out at twitter @changyan33 and github @thomasyimgit

推薦閱讀:

前端工程師有必要學習SSH嗎?
sublime text3側邊欄和標題欄這幾個地方的字體,字型大小怎麼調整啊?
前端資訊周報 3.13 - 3.19: WebVR來了!以及如何優化scroll事件性能
h5和html5是一個東西嗎?

TAG:前端工程师 | 前端开发 | 前端入门 |