The flying architect and the running programmer

Source: Internet
Author: User
Tags hp ux

There's a lot of talk about programmers and architects, and I want to say it from a different perspective.

Find a way

When I first entered the software industry as a programmer, my ideal was to become an architect. The English name of the architect is Architect, originally intended to be an architect, because the software industry refers to the concept of many architectural industries, so borrowed the word. I was in school when I know the architect of the term, many software books are translated, and now do not know who was the first to translate Architect into the architect. Anyway, since then, the term architect is particularly large and remote for my students who are just going out of school, naturally as a career goal.

Unfortunately, after I entered the first company, this is a private IT service enterprise, I found that there is no architect this post. I am in a team of dozens of people, the undergraduate just graduated is an assistant engineer, master just graduated from junior engineers, and then intermediate, senior engineer. And then it becomes the project manager, the team is a project manager, below a few senior engineers, then a bunch of junior and assistant engineer. To my disappointment, I obviously felt that my career development goals in the future were not the direction of the team project manager at the time. But I think I leave the architect this goal is early, at that time estimated the fastest also to 10 years, the first to write the program well, I am not likely to work here for 10 years, after a change.

In fact, a year later I changed a company, after the job and disappointed, found that there is no architect this position. Not only the position of the architect, even the engineers are not at the beginning, middle and senior, all software engineers, and then the leader, section chief, Minister, and then the general manager. Posts such as section Chief and Minister are state-owned, and managers are more like private companies, and this is a company that is transitioning from a state to a corporate system, so the position is mixed with peculiar features. I also wanted to be early, to focus on the front of the matter, write a good procedure to do things, as to whether there is an architect this position in the future.

Here the engineers, although not graded, but there is also a group of people in the mouth of the cattle, surnamed Chen, we call Chen General, the actual does not assume any management responsibilities. Worked for more than more than 10 years, focusing on IBM AIX and HP UX minicomputer and Oracle database tuning. We often travel on a long-term customer site development, implementation, support on-line, Chen General do not travel. When he showed up, it was like I was going to hang up the database, and then came to the scene to fire, analyze the magnetic array IO, catch SQL tuning what (the application system is centered around the database). By discovering performance bottlenecks from the bottom up, and then recommending program optimization, I felt that he was the best fit for some of my imagination about the role of architect, but I always thought it was almost something I couldn't say. Anyway, I was looking forward to seeing what a real architect was like and how they worked.

After working in the second company for a few years and working for almost 5 years, I still didn't find the answer, and I felt that the programmer's technological development path was a bottleneck in the current company. Once again, I think the former private and state-owned companies have no architect position, and this term from abroad, then foreign companies should have it? Try to interview a few foreign companies, unfortunately, the oral English is too poor to pass the interview, and I that period of time from Guangzhou moved back to Chengdu. Frankly, Chengdu at that time the programmer employment Environment than Guangzhou, a bit depressed job search, simply rest for half a year, think clearly about the next five years I should go?

It is in this unemployed half a year, I suddenly found that in addition to state-owned enterprises, private IT services (outsourcing) enterprises and foreign companies, there is a kind of company and they are very different. This is the Internet company, but unfortunately Chengdu at that time there are almost no internet companies in this side of the research and development. And while I'm waiting, an emerging, fast-growing Internet e-commerce company is setting up a research and development center in Chengdu, and it's time to join in.

Run

After entering the Internet company, not only has the architect position as well as the structure division team, has the direction and can rest assured to make a program to run. Keep writing programs, optimizing code, pursuing better, more concise code, refactoring over and over, solving one problem after another. I used to compare programmer-specific and code-related work in previous articles to fencing and practicing code skills similar to the sword-training process. Many programmers dream of one day to become a master, the face of the enemy, draw sword, instant strike, the sword into the sheath, the enemy fell. Just like the online system suddenly appears big problem, you turn on the computer, check a few lines of log, knock down a few lines of code, minute system recovery.

Well, it's actually in the movies. As the scale of the system expands, the problems that programmers need to solve and the way they solve them are completely different. Previously read an article said, into the large-scale distributed era, the local code optimization is not the most important, unlike 20 years ago hardware constraints on the size of the software. More importantly, the process of collaboration between the procedures, the communication path is concise and clear.

A good programmer of course can write good code, in my first seven or eight years of writing programs, in my spare time to do some exercise-type projects. In the pre-Github era, Google was able to access and maintain more than 100,000 lines of amateur work on Google Code. Later, after the rise of Github to migrate, and constantly practice refactoring to optimize the maintenance of their own proprietary tool library, the deletion of a lot of redundant code and a lot of new, there are still tens of thousands of lines left. This process lasted for seven years, with a basic yearly refactoring optimization and a 118-day continuous commit time on Github (recently saw someone hit 365 days with a real admiration). Now over the past two years to look back to the code, can not say that it is perfect to no longer optimize, just feel that continue in my fencing is limited, and the greater value is now no longer part of the optimization.

At this point I have the overall system design work in the team, focusing on local code optimization is actually driving the details rather than the essence. Senior programmer-born architect, individual combat ability is very strong, like "attack on the giant" in the Halliwell, with the ability to fight the Giants. But when you are confronted with hordes of giants, the role of individual singled-out is always limited. It's not just a change of name from programmers to architects, sometimes it also means shifts in skills and perspectives. On the ground for seven or eight years of programmers, in the face of hordes of giants hit, deeply felt that the killing of light giants should not be the purpose, the real purpose is to reach the other shore. Choose the right path, firmly forward, clear or bypass the giant of the track, to reach the destination.

Flight

Senior programmers, who spend most of their time working with code every day, have an obstacle when they need to turn into architects, borrowing a line to say:

You have become a sword, and the Tao Heart is not clear, only can not chop and code of love.

Developing features, solving bugs, and optimizing code are the skills of a senior programmer and the basic skill of ground combat. An architect also needs to master the skills of other dimensions, perhaps like a three-dimensional mobile device, so that you can fly in the air when needed to see the whole world, but also hit the ground to launch a strike. More than an aerial dimension, the past in the ground to practice mastery fencing, flying in the air is still effective, it takes time to learn, adapt to the new dimension of the skills.

It's not an easy skill to master, and that's exactly what I've written. The skill upgrade from one point to another point, requires an ascending dimension of the learning process. So there's a lot of discussion about whether architects want to write code or not, and I think it's the conclusion that you have to draw your sword when you need to draw your sword, without worrying about whether the sword will rust if you don't draw your swords every day. When the sword is refined, he always feels that every time he draws a sword, he will kill (only to deal with the problem), but sometimes he can only cut vegetables (a small problem in the way), as long as it helps achieve the goal. Like "Mars Rescue" mark to go home to grow potatoes, as long as the beginning, solve a problem, solve the next problem, solve the next problem, and so solve enough problems, you can go home. In the sky, the architect is to see in the high place what is in the way home on the road to the necessary problems, landing as an attack on the process of the program to kill one by one of its members.

Now ask me, do you still have a sword? The sword is still in hand, it should be out. Do you still practice swords? Practice, practice the air out of the sword, the operation has not yet become, but the Tao Heart has been clear.

Write some words, draw some pictures, "wink" everything has changed. Feel good, scan two-dimensional code attention.

The flying architect and the running programmer

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.