Read my programming, I am happy: Programmer Career Planning the first chapter select the market

Source: Internet
Author: User

Career planning, starting from the university, rarely consider this matter, senior year also learned a related course, at that time also only with the credit to repair the mentality. In the last year, I began to think about this problem, and recently read this book, "I am programmed, I am happy: The programmer's career planning", began to learn to plan his career. This book is not only suitable for programmers, but also for other professions.
Be prepared to follow the chapters to find useful, thought-provoking snippets and interesting exercises to add to your feelings.

In the book "Programmer's Way of practicing", Dave Thomas and Andy
Hunt talked about the contingency in programming : When you start a program, you probably have a sample program on hand that's copied from the Web, and it looks like the app is ready to use. To meet your needs, you'll have to make a few changes to the program--add some code, plus a little more. You don't even know what you're doing, just keep making minor changes until the program completely meets your needs. The problem, though, is that it's like building a house with cards, and adding a piece of paper house to the risk of collapsing. You have no idea how this program works, so every little change you make can cause your program to fail completely.

In the foreground development often encounter this situation, will add a variety of JS effect function, some not very understand, although can use as usual, but do not fully understand the words, out of the problem to solve more laborious. So use other people's things as far as possible to know it is also to know why.

If you think of your career as a business (in fact it's a business), then your "product" is made up of the services you provide. What are these services? And who are you going to sell them to? Will the demand for such commodities increase or decrease over the next year? How many blocks are you willing to drop on these choices?

It's an interesting metaphor to think of a career as a business. The road to Jane, million flow to the pope, the real analysis, we do whatever, there are traces to follow. I think the service I have is to sell my technical skills and sell them to companies, friends, clients and so on. Software industry talent demand is certainly still relatively large, but want to become a talent must undergo a certain degree of discipline to be able. The next year, two years, five years and 10 years, I think the sale of technology services will increase, so I would like to cast a bet will be my youth.

Practice
Based on today's market, you can enumerate as many technologies in the early, medium and late stages as possible in order from left to right. The far left is a new technology that is not yet stable, and the far right is the technology that will exit the market. Find the subtle associations between them as carefully as you can.
When you list all the techniques you can think of, mark out the techniques you think you're good at, then change the color to mark the ones you've done but aren't proficient in. What area is your mark focused on? Are they clustered or scattered? Is there a technique in the edge of this chart that you are interested in?
According to my own impression classification:

    • Mangodb,Golang, Spark, Nodejs, Swift, R, AngularJS, Redis
    • Java,C + +, C #, PHP,Tomcat, Jboss, Nginx,CSS3,html,HTML5, Object-c, Python, Ruby,Mysql,Oracle, Sql-server, JavaScript,jQuery
    • C,Delphi,VB
      Red Blue is the use of a little more technology, many other technologies have not touched, did not have to play a bit, understanding is not so profound. For the new technology, there is a certain curiosity, need a little touch.

discovering imbalances on the market
from the law of supply and demand, we can learn an important point-the growth of demand will exacerbate price competition. If you just want to do a stable job and follow along with your work, you will be involved in price competition with foreign developers, because your technology determines that you can only enter a balanced outsourcing market. If you compete in the mainstream technology market, you have to compete on a higher level, otherwise you will have to find the imbalance in the marketplace and find jobs that the outsourcing company can do. In both cases, you must find the motivation to work, improve your skills and sensitivity to respond to all changes.

Practice
Study the needs of today's technology market. Use job ads and recruiting sites to find out what is high demand and what is low. Login to the outsourcing company's website (if you are working in these companies, you can communicate directly with employees), compare the technology of these companies with the high demand work that you find. Record technologies that are high demand in the domestic market and do not flow into the outsourced market. Then compare the technology of these outsourcing companies with cutting-edge technology. Pay close attention to the two types of technologies that outsourcing companies have not yet dabbled in. Think about how long it will take to serve the market. This time lag is the stage of market imbalance.

In fact, a software engineer cannot only develop software, it should be an expert in this business area . Think about it, if you're a client, you know your business as a programmer, you don't have to make decisions about everything, you don't have to worry about which small details are going to go wrong, and you don't think it's easier to work. The same is true of the industry you work in.

Practice
1, arrange a lunch with the industry and ask how they work. Communication, think about what you will do if you do their job, or what you can learn from them. Consult the details of their daily work. Ask them how technology helps (or hinders) their work. Think about your work from their point of view.
2, select a magazine related to your company's industry. Try to read them, although some things you may not understand, but insist. List the questions you can ask your customer. Don't worry about the silly questions you ask, the client will appreciate your attitude of learning.
Find an industry website that you can login at any time. Whether you're browsing a Web site or reading a magazine, pay attention to big events and feature articles . What is the industry you are working on? What's the hot thing now? Whatever it is, introduce them to your customers. Ask them to talk about their opinions. Think about how these trends affect your company, your department, your team, and your own work.

The people around you will have a big influence on you and choose your circle wisely.
Find the best it people and work with them, and you'll find yourself surprisingly smart. What you write, and how you talk will become more and more intelligent. The programs and designs you write will be more elegant and graceful. You will be more and more creative, the problem will be solved.
Find a team and let yourself be the "worst". No need to switch jobs immediately, you can try to find a volunteer project to improve your ability by working with other programmers in the project. Check which programming team meetings you have and then go to these meetings. Programmers tend to do part-time work in their spare times to practice new techniques and improve their skills.
If you can't find such a programmer organization around you, use the network. Find an open source project you admire, and his designer is your goal for the next phase of development. Browse the pending list and official discussion area of the project, or write a feature or fix a big error. Your code will mimic the code style of the project, but make your code and design completely different from the rest of the project, even for the original programmer to recognize. After you feel that everything is in place, submit it as a patch. If you do a good job, the project will accept it. To do so repeatedly. If the project's design team disagrees with your point of view, add their feedback to your design and submit it again, or record the changes they have made. In the end, you'll find yourself a trusted member of the project team. You will be pleasantly surprised to learn that while these senior programmers are not around you, you have not even heard their voices, but you have learned a lot from them.

about candidates
Good programmers are qualified to offer conditions. The reason they look for change and diversity is because they like to learn something new, or because they know that they want to be a more mature and comprehensive programmer, they have to learn new technologies, work in new environments, and gain new experiences.

Practice
Learn a new programming language. This new language should allow you to change your way of thinking. If you're a Java or C # Programmer, try to learn a language like Smalltalk or Ruby that doesn't require a strong type of static programming. Or, if you've been doing object-oriented development, you can try a functional language like Haskell or Scheme . You don't need to be an expert to feel the difference between this new programming environment and the environment you were in.

Try Ruby

One of the factors that determines career planning is job-hopping, and parents will not agree with that view. a mature professional software developer needs to understand the industry from every angle: product development, IT support, internal business system development, and management. As a software developer, the more angles you see and the more technical challenges you have, the more you have the ability to face tough projects. For a programmer, working only in one company, strengthening a single business skill, will limit career development.

Parents attitude is not desirable, to a company, on the diligent work. If you can't persuade your parents, then make your own decisions. The programmer's life is "Hello World"---------

There are few generalists, so precious.
Being a generalist means that you don't just focus on one technology. There are many ways that we can play a variety of roles in our work. To visualize the concept of being a generalist, we can break down the IT profession into several separate parts. I think of five, but there must be more to see how you divide it:
-Layers of the career ladder
-Platform and operating system
-Code and data
-Systems and applications
-Business and it

Practice
List the things you can do to integrate your knowledge and abilities. Write down your expertise in each area. For example, if you have a list of platforms and operating systems, you can write Windows and. NET next to them. On the right side of your expertise, list one or more of the techniques you want to learn, probably Linux and Java (or Ruby, Perl).
Then quickly (within a week) find out 30 minutes to start researching a technology you want to learn. Do not simply read the relevant books and materials, hands-on practice. If it's a network technology, download a Web server installation package and install it yourself. If it's a business-related topic, find one of your clients and ask him to come out for dinner and talk.

The points that need to be studied are always there, arranged, digested.

become an expert
What kind of person can be called a professional in the software world? I looked everywhere in the recruiting world to find people who really had a deep understanding of Java programming and deployment environments. The person I want to look for is has handled 80% of the problems we may have in our work , and has enough knowledge to deal with the 20% issues that have not yet occurred . The people I need are not only able to handle high-level abstractions , but should also be aware of those high-end abstractions to achieve low-end detail . I need someone who can solve the deployment problem, or if they can't fix it, they should at least know who they're looking for to help.
The computer community is rapidly changing, and only such professionals can survive. You are. NET professionals, but this can never be your exception. NET out of all ignorance of the excuses, but to say, you are. NET, but it is a piece of cake for you when the IIS server needs to be restarted. Someone asked you how to use visual Studio. NET for source control integration, your answer is: "I'll show you." " due to dissatisfaction with the application performance, the customer proposed to quit the project, this time, you only need 30 minutes to solve the problem.

Practice
1. Do you use a programming language that is compiled and executed on a virtual machine? If you use it, take a moment to learn how the inside of the virtual machine works. Many books and websites are dedicated to Java. NET and Smalltalk for discussion. It's easier to learn these things than you think.
Whether you're using a programming language that relies on virtual machines or not, take the time to learn to write your source files. How do you beat the code to turn from readable text to commands that can be executed by a computer? What does it mean to write your own compilation program?
When you enter or use an external function library, where do they come from? What does it mean to enter an external function library? How do your compilers, operating systems, or virtual machines connect multiple pieces of code together to form a coherent system?
Mastering this knowledge allows you to take a step closer to the "pros" in your technology choices.
2. Look for a chance to teach at work or outside of work. The knowledge you impart is the technology that you want to learn in depth. So, while it is not a wise choice to invest wholeheartedly in a particular technology, if you have to do this, don't choose the commercial nature, consider the open source. Even if you don't want or can't take advantage of the open source approach at work, open source as a platform that allows you to learn a technology in depth. For example, if you want to be an expert on how the Java EE Application Server works, you don't have to work on the details of how to configure and deploy a commercial application server (after all, anyone will adjust the settings in the config file, right?). , you should download an open source JBoss or Geronimo server and set aside time to learn how these servers work internally, rather than just learning how to do it.

Practice
Try to do a small project and do it two times. The first time you try to use a technology that you can use at home, the second time, use your most competitive technology.

Learn more about Tomcat and try Nginx.

Read my programming, I am happy: Programmer Career Planning the first chapter select the market

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.