1st-hand & in-depth info about Alibaba's tech innovation in AI, Big Data, & Computer Engineering
A senior Alibaba programmer shares his insights on professional development
Mr. Li Yunhua serves as senior staff engineer at Alibaba’s Game Business Group. Being a well-experienced practitioner in the IT industry, he wants to share his thinking on how to achieve the exalted status of a guru-level IT professional:
What I have to say applies regardless of whether you’re a developer, tester, or in O&M; hopefully, my words will lend you some clarity on your journey of self-improvement.
Some people think that the simplest, most straightforward and effective way to the top is to become a mentee of someone who can mete out special treatment and difficult assignments that help them improve their skills.
This is misguided for several reasons. First off, most professionals at the mentor level are extremely busy and therefore unlikely to be able to make much time for you. Secondly, any ‘special treatment’ may make others feel discriminated against. If the mentor provides special training for the entire team to avoid such a situation, it brings in heavy time costs since prepping and delivering study materials takes several hours.
However, when time permits and where online research fails, a mentor can be useful in instances involving pre-researched issues that are truly hard to grapple with and don’t take too long to discuss. One may even turn to teammates who have a better grasp on the subject matter or bug.
In short, the first step towards becoming an IT guru is self-reliance, rather than expecting or feeling entitled to guidance from a senior.
Sure, writing operational codes requires a variety of skills, and forms the foundation of every programmer’s expertise, but simply mastering the techniques does not make one an exceptional IT professional. The principle is best exemplified through the basic premise of most combat video games — smaller group kills help the rookies gain experience points, but soon enough the game becomes more complex and requires players to defeat more complicated challenges to level up.
In the same way, one must constantly improve their IT skills and face new trials. The ability to write good operational codes is an important starting point for IT career development — but it is by no means a guarantee of success.
Most people are inclined to blame work for their inability to schedule time for self-study. Though a demanding workplace may eat into one’s free time, it poses a challenge that can be overcome with smart planning. After all, if so many before us could rise up above their ranks with the same set of responsibilities, it’s definitely not out of the question. Examine self-limiting beliefs and thoughts that impose unnecessary conditions; pull out chunks of time in your regular schedule and allocate them to self-development; streamline how you run your errands, and outsource what takes you too long to do, even if it costs a little extra.
If you start thinking by how much each minute of your time is worth, you’ll find yourself being more disciplined about Netflix time or sleeping in on weekends.
Go beyond the limits of what you’ve been assigned, and you’ll find that your efforts help you rise above the crowd with ease. A memory that sticks out in my mind is of the time when I read and absorbed all the code (about ten thousand lines) for a project instead of sticking to just my share. Once everyone realized I’d studied the entire version, they began consulting me for product discussions, testing issues, and external support for the boss. If there was something I didn’t know the answer to, I’d look at the code or research it, ultimately becoming an expert for that system.
Familiarize yourself with more operations and codes, including the ones you’re not responsible for and the ones you didn’t write. This allows you to make more accurate analyses in the demand phase, troubleshoot much more efficiently, and design better solutions. Words like ‘systematic’ and ‘comprehensive’ may seem vague, but they are indispensable qualities of IT gurus. To this day, there are programmers who have plenty of experience with Java but still do not have a grasp on concepts like stop-the-world and optimization that come in handy from time to time.
There are no perfect things in the world, and there will always be parts of systems and businesses that are irrational and in need of improvement. Identify these areas, then formulate and propose solutions to them to your supervisor. As long as you think thoroughly, you’ll be able to assess these problem areas; if you think there aren’t any, then it means that you’ve yet to reach the next level of critical thinking.
When I was sent over to 9game to take over a simple backend system, I worked with the frontend team every day — adding, deleting, and changing data. Though it may look meaningless to an outsider, we conducted processes for decoupling (splitting each background into two for improved scalability and stability), system reliability (switch to dual system), and optimization (taking a 5-hour interface to 5 minutes). Our group of five took on more systems, eventually becoming responsible for a total of six.
Invest time in learning more about related technologies, and look at how other outstanding companies in the industry work. These will clue you into what works and what doesn’t, and will help you ascertain which practices to follow, and which to discard. There’s too many repetitions in the code, should we introduce design patterns? This version’s development quality isn’t high enough, how should we introduce and integrate efficient test programs? The current system size is too vast, should we reconstruct and decouple them into three systems? Asking yourself questions like these during the course of your work will push you to not only improve products and services, but refine your skills and overall work ethic.
Most of my peers did indeed follow the principles of ‘do more’ and ‘do better’, but when it came to implementation, almost everyone encountered the same problem. It seemed that learning could be efficient only when they practiced it in real life, but with few opportunities to do so, they often felt stymied.
Sure, JVM garbage collection knowledge hardly ever comes into play since operations recovery remains a priority during lag, and knowing Netty but not being able to participate in Netty development makes it difficult to master Reactor’s asynchronous mode. Of course, verifying high-performance MySQL on DBA-managed online databases with easily configurable test environments makes it difficult to verify the technologies, and immediately demystifying sub-database implementation where the framework encapsulates the DAL layer isn’t exactly a cakewalk.
However, all of these concerns are not insurmountable.
In my personal experience, nothing beats the cycle of learning, trying, and teaching.
The first step is to master the knowledge. Google terms, watch videos, read blogs, or even better, read whole books, and then search specific queries and techniques online.
Once you have this down, write out test programs by yourself. Practicing what you have learnt gives you a deeper understanding of how things work. Writing programs to test JVM garbage collection, creating reactor mode demos, building MySQL environments, and writing simple sharding implementations for comparison are suitable methods for gaining in-depth practical knowledge.
Teaching completes what learning and trying cannot achieve; to really master a subject, we must be able to explain it to others clearly. Doing so involves making learned knowledge systematic and refined, and makes us aware of a richer range of perspectives brought by the ‘pupils’ as well as our own blind spots.
The dream of becoming an IT guru is glamorous, but as is the case for anything worth having, there’s a price to pay. The path requires a lot of sacrifice and investment of time and energy. Certain periods yield results more immediately, while some are marked by an uphill battle, or what some may find even worse — tedium. The methods I’ve followed are time-tested, but are ineffective without passion, grit, and a persevering interest in technology.
(Original articles by Li Yunhua李运华)
First-hand and in-depth information about Alibaba’s latest technology → Search “Alibaba Tech” on Facebook