Positioning
Remember why you chose to be a programmer this career? Today the programmer's industry is in the development period, the remuneration package is higher than the traditional industry, so all kinds of programmer training institutions springing up, pipeline-like for all kinds of programmers only the company batch supply, such mass production seems to be a bit of programmers as factory workers.
But the programmer's work is actually closer to the craftsman, both the creative craft work, also has the modelling engineering work. Want to know what it is that you are a programmer? Just to get into a relatively high-paying industry, getting a job with a pay-above-average level? This is not going to be too far.
Many start-up programmers have just graduated from school, and remember that in Wu Doyi (@nwind), an engineer grew to share the material, so to speak:
From small to large education, we are accustomed to be arranged: "After-school homework is X1, X2, the day after tomorrow must be handed", "the compulsory course of this semester has XX, YY, must choose the elective course has ZZ, WW"
You've been through this for more than 10 years, but now you're not at school and you have to plan your future.
Do the programmers who have just entered the workplace still keep the habit, waiting for the supervisor to arrange the job to complete the task assigned by the supervisor? Well, it's just part of the job. If you work on a daily basis to accomplish a task that is scheduled, your own growth will be very slow, because the supervisor does not have so much energy to consider whether the task is suitable for personal growth and development. These tasks are the need for organizational development, not necessarily for personal development, but the organization pays you to get the job done, so this is a necessary part of the job.
Oneself is the manager of the career, want to clear their development path: what is the long-term ideal? What are the recent plans? And what are the tasks and lessons of today? What does today's task or lesson contribute to the realization of a near-term plan, and does the recent plan benefit the long-term ideal?
Why do you have homework besides the mission today? Homework is a school concept, not in the workplace. So leaving school to work in the workplace is self-arranged for themselves. The task comes from the supervisor's arrangement, and the homework comes from his own arrangement. Most of the time we only go to complete the task and never give ourselves homework, and waiting to be arranged and active arrangement, in the future will have a huge difference.
At first we may only have vague long-term ideals and less-than-clear plans for the near future, but be sure to have clear and clear assignments and lessons for today, even if your supervisor has not given you a schedule for a variety of reasons. The direction is not likely to be once, regardless of the neglect of walking. Need regular review, look up the road, because today's environment and the trend of change is very fast. In the course of walking and watching, it is clear that the recent planning and even the long-term ideal. And the supervisor on your way of career development, in addition to most of the time to arrange tasks for you, and occasionally may give you the opportunity to create, and when the opportunity arises when you can seize, all in today's lessons.
Learn
In the top of the wave, Dr. Wu wrote:
Domestic: When I was a child, I didn't work hard after college.
Abroad: After the university to work hard, soon more than the domestic students
This reflects our education as a student's mentality, feel that graduation from the school will not need to study hard. But the technology development and change that programmers face in this profession is far more than other industries, you need to keep on learning even if you just want to finish the task with quality and quantity.
And in the face of information and technology explosion of the era, but also to have selective learning. I went to college that, during the learning process like computer, love to help classmates DIY to install a machine or something, but also repeatedly toss the installation of operating systems. At that time, the characteristics of the Windows system is the more slowly, a year need to re-install and restore, but these toss in fact not belong to the programmer's Learning range (digression: Now with the MAC no longer waste energy to worry about the installation of the system).
Selective learning is about finding learning paths that are really relevant to your recent plans. If you are working in a post-employment company using Java as the main development language, you have been learning to use C or C + + programming exercises in universities. Let's assume that you have a good grasp of basic computer-related disciplines and knowledge, such as: Operating system, database, network, composition principle, compiling principle, algorithm foundation, data structure and so on. So in order to better accomplish the task, you need to learn the Java programming language, technology-related things.
I think the most efficient way to learn the language itself is to look at a classic introductory book in the field, for example, Java is thinking in Java, this is what I call the first dimension of the book, focusing on a technical field of clarity. With some practical programming and engineering experience in the language, you can look at some of the second-dimensional books in the field, such as:effective Java, theArt of Unix programming , which is a book focused on a specific field of experience.
And how do you learn to use a lot of open source frameworks like Java development? Micro Love CTO Zhang Tielei classmate has written a "technology of the authentic and wild way" in the introduction of how to use the real "authentic" approach to learn and quickly grasp these emerging open-source new framework and technology.
Borrow a picture from the original Zhang Tielei, each open source framework or technology-related information can be organized into the above pyramid chart. Tutorial and API Reference levels of information help us develop quickly, while Spec and Code help us understand this technology in depth. While other related technical books and articles are actually as a supplementary reading, good technical books and articles should have specific experience or practice not covered in official materials to be worth reading. More details of the study suggest that you look directly at the above text.
Introspection
George Hermaye (George heilmeier,1936-2014), an American engineer and technology manager. He is one of the main inventors of liquid crystal display technology. His most famous thing in the field of scientific research is his "Haier Meyer series of questions":
What are you doing? Don't use terminology to articulate your goals.
How is this going to be done now? What are the limitations of the present practice?
Who cares? What innovations do you have in your approach? Why do you think your method can succeed?
If your approach succeeds, how can it change?
How much do you need to pay for your method? How much resources do I need to spend? How do I evaluate the process and the end?
I think the use of learning and growth in the same way, because the current technical direction and route too much, even if the route is still a lot of confusion, sometimes we want to learn a new technology or introduce a technology in the project, you can try to apply "Haier Meyer series problems" from the province.
- What is your goal in learning this technology?
- How does this technique work now? What are the limitations?
- What is the innovation of this technology, and why it can be successful, and who cares if you introduce this technology into your project?
- If it succeeds, what changes will it bring to us?
- How much resources (time, money) do I need to take to assess the cost, risk, and profitability of this technology?
Programmers sometimes learn a little bit about the new technology and think about how to apply it to real projects. Use the above questions to ask yourself, if there is no answer, stating that you do not have sufficient control of the technology, it is not enough to apply to the actual project.
Multidimensional
Some programmers wrote for two years that the code felt too dull to think about whether it could be managed, like a technical director or something. Li Huilai also wrote an article "the best strategy from mediocrity to excellence", the best strategy mentioned is: "Multi-dimensional to create competitiveness." From technology to management seems to be a multi-dimensional development path, is that it?
However, Li Huilai teacher that article strategy has a premise is to be in a dimension to do enough to highlight, with 100 points as a full evaluation, in one dimension needs to reach 95 points. This dimension, which is sufficiently prominent, is actually the dimension that you are now living on, also known as the basic dimension, which is the foundation for the development of other dimensions.
So, if you really want to be on the programmer's path from the beginning to the mastery, choose this dimension as the basic dimension, you need to constantly in this dimension to the refinement. There is a book called the "Programmer's Way of cultivation: from the small to the expert" and the theme of this article is very similar, but the writing dimension is closer to the details. The Chinese version of the book was first published in 2004, and the English version may be two years earlier, already more than 10 years old. I checked the Watercress book review, a total of three versions add up to more than 2000, can be seen in more than 10 years to read a few people really.
The best reviews for this book are from Ward Cunningham:
The beauty of the book: it embodies its philosophy in such a humble way.
The philosophy of this book will permeate your consciousness and blend with your own philosophy.
It does not preach, it just tells what is feasible.
But there are more things in the narrative that we sometimes call "nameless qualities" (quality without a name)
I read it once in the first year of work and I read it again in the sixth year of work and felt a lot of empathy; I recently thought of this book while thinking about the subject, and then read it again; this time I finally learned how to study a book, write full of reading notes and comments, Found a lot of truth and path in this book are explained in detail, and the magic is that in the past more than 10 years, in addition to some of the examples mentioned in the book technology is somewhat outdated, other aspects remain the golden rule, worth tasting. The book covers some of the problems that a programmer really faces:
- Struggle with software decay
- Avoid the pitfalls of repetitive knowledge
- Write flexible, dynamic, adaptable code
- Prevent the programming by coincidence
- Make your code "bulletproof"
- Capturing the real needs
- A ruthless and effective test
- Make your users Happy
- Build a pragmatic team
- Ubiquitous automation
When these problems fall down and you are in the programmer's position, presumably then you will feel the "nameless quality", then you have to go through the programmer from the beginning to the mastery of the road.
According to the 10,000-hour theory even if you are in a field for more than 10 hours a day, the fastest estimate to master a field also takes three years, here is not a break or unexpected disturbance, so it may actually take five years. It takes time to grow, and you don't have to feel too far and weak. Keep improving every year, month, and day.
The Programmer's career path