Fishing boats in Beidaihe

Recently, I've spent most of my time daydreaming and wondering what I'm really suited for. Looking back on my college years, I realize that I did everything superficially without any continuity, which makes it very difficult for me to find a job now. I worked on both web and Android, but didn't master either, so every time an interviewer asked me which one I preferred, I was usually vague and hesitant. This is definitely a big lesson. If I were to give advice to juniors, it would be to find something you truly like; it's okay to be slow, but you must keep paying attention to a certain technology over the long term, so you can continuously improve.

Back to the topic. Before April this year, my plan was to learn all the mobile internet technologies I could before graduation, mainly PHP, Android, and iOS, thinking that after graduation I would go to an internet company to engage in this so-called 'mobile internet era'. However, in April this year, I began to grow very tired of my previous startup team constantly changing their requirements, which delayed the project again and again. At that time, the biggest feeling I had was that I didn't want to constantly revolve around 'user needs' in the future, nor did I want to revolve around these so-called 'project managers'. Although every development has a project manager, anyway, at that time I made up my mind to stop playing with applications.

This also affected my summer internship opportunities. At that time, I faced three choices: Tencent's PHP development engineer, Lenovo's server department OS Team, and a hardware testing team at Red Hat (I forgot the specific details). After thinking it over, I chose to go to Lenovo's server department. Actually, if I had chosen to write PHP at Tencent, it would still be easy for me to find a PHP job now.

After arriving at Lenovo, I learned that the so-called OS Team doesn't optimize based on Lenovo servers, but rather takes the Beta, RC, GA OS versions provided by various OS vendors and performs certification on their own servers. In fact, it's testing whether these OS functions work well. But the most valuable things there were two points: one is deciding which test items can prove that an OS works well, and the other is analyzing where the issue lies when problems occur during testing. It is precisely for these two reasons that OS engineers are held to high standards and need a lot of experience. The main engineers on the OS Team are all over 30 and had basically worked at corresponding OS vendors before. So I thought that if I didn't go to an OS vendor to learn, I wouldn't make much progress.

However, during this process, I did gain a lot of experience that others cannot easily obtain, such as the composition of servers. As a software engineering person, I can now directly assemble a server and also simply analyze some hardware faults of machines. Most importantly, the two OSs I participated in were VMware's ESXi and Citrix's XenServer. Through this process, I was exposed to enterprise-level virtualization software for the first time, started reading materials on my own, and gradually came to understand it. Actually, whether it's cloud computing or big data, the most basic platforms are implemented through virtualization. So what is the core of virtualization? I think it's networking and storage.

Alright, after writing so much, my thoughts are gradually becoming clearer. Personally, I still really hope to stay in the server industry, learn the platforms on top of it, such as OpenStack and so on, and I still very much want to do development work, because after not coding for a while, I really feel insecure. I hope that in the end I can do what I want to do.

Source: http://www.jianshu.com/p/3388e900a635