Four major "housekeeping skills" of software developers"

Source: Internet
Author: User

Original English:The 4 most important skills for a software developer, compilation: @ Gao Yunxiang

Nowadays, there are a wide variety of technologies, languages, and platforms to choose from. Therefore, as software developers, it is hard to find out where the best investment points take time to develop personal skills.

Someone often asks me for advice on how to become stronger.ProgramPersonnel suggestions.

The most frequently asked questions can be described as a matter of fact.Should they spend their time on something special?Programming LanguageOr technically.

Recently I have spent a lot of time thinking about this problem and come up with some skills that I think are the most important and can benefit you for the rest of your life. Once software developers have mastered these skills, it not only brings them the best job opportunities, but also makes them very effective.

Skill 1: Solving Problems)

I have previously talked about how to solve problems and even given several steps to learn how to solve problems, because I think this skill is critical to any software developer.

Software development means solving problems.

If there is no problem, no software is required.

All software is designed to solve certain user problems, and a general solution is an array of many small-scale problems that can be addressed.

If you cannot solve the problem, you will not be proficient in software development, and the programming language or technology you use will not matter.

When solving the problem, the performance of most developers is terrible.

I often hear complaints about how difficult a job interview is, because the interviewer will ask developers to solve difficult problems.

I have talked about the difficult interview, and part of the reason is that the interviewer is trying to test the developer's ability to solve the problem.

I know that many developers still disagree with my point of view on this issue, and they do not understand why developers in positions similar to topcoder will try their best to improve their development skills, at least from my personal experience, I know that it is the practice of the chief code farmer to solve problems, and such practical activities are the turning point of my career.

Assume you are a carpenter. To be a good carpenter, you may be good at cutting wood. Maybe you should have done all kinds of parts and used many different tools to cut wood.

No matter how many years of woodworking experience you have, or how beautiful the furniture or cupboards you have designed, you have to find ways to cut the wood every time and try to make all the parts.

Cutting wood is the basic skill of wood workers, just like solving problems is the basic skill of software development.

Skill 2: teaching yourself)

In life, there may be no more important skills than learning to learn.

This kind of skill is especially important in software development, because as far as I know, the speed of change in any field is far faster than that in software development.

You cannot know everything. You don't even have time to become a master of a specific framework or technology-because things are growing too fast!

Instead, you need the ability to quickly obtain the required knowledge to complete the task at hand.

If you really want to have some skills that keep you up with the times in your software development career, learn how to learn by yourself.

The only way to improve this skill is to put it into practice. Go out and learn new programming languages or technologies, even if you think you will never use them (You may also want to learn ). In the future, you will be surprised to find that you can quickly pick it up, because you have long been clear about the basic knowledge.

If you can quickly adapt to the ever-changing software development market and various technologies and platforms related to it, you will have skills that are always very popular.

Although I have some doubts about some of Tim Ferris's ideas, he wrote a great book called 4-hour chef ), this section describes some tips on how to quickly learn things. (I was planning to write a book related to this topic at that time .)

Skill 3: Name)

If someone asks me what I do all day long, I will say, "read the things named by others and name things ."

It is true that if no one asks this question, I will not answer this question, but I may answer this question.

Software development is describing the metaphysical [1] content. Most of the content we build is invisible.

The authorization manager receives the authorization request and sends an authorization response. At the same time, the user resource library calls the user factory to form a new user. We must build a complete environment based on the above description.

Every time you code, you are naming things.When reading what you or others writeCode, You will get a majority of understanding of the code from the thing name in the code.

By viewing methods, variables, and class naming methods in Code Compiled by developers, I can accurately predict the skill levels of developers in most cases.

Developers who lack this capability need to give appropriate names to concepts and data in the code, just like a dumb translator.Whether you understand something or not, if you cannot properly explain it, it will be transient.

The best way to improve this skill is to keep practicing. As long as I understand the code, I often rename the items in the code. Since I started to understand what a method is doing, I will rename it so that it is consistent with my understanding. I will do this when reading the code, even if the Code does not produce any logical changes, it will do the same.

The more you focus on giving a proper name to a thing, the better you will be.

This is also the most obvious side of your code. A simple look at your code makes it difficult to tell whether the code is correct or not or how efficient it is. But if the Code gives me a glimpse, I will think that you know what you are doing.

Skill 4: Dealing with people)

Although I put this skill at the end, in many cases, you may say it is the first or most important skill.

People are everywhere.

Unless you work independently and only develop software for yourself, other people will influence your career as software developers.

I have talked about why you may not want to criticize someone, but we are dealing with others more, not annoying.

I will always repeat How to Win Friends and Influence People, the masterpiece of Dell Carnegie ), this book is so important to learn how to be a successful person.

I have said before, if you want to improve people's skills, read this book!

The basic problem is that humans are not logical creatures.We are emotional creatures. Of course, we like to be proud of our reasoning capabilities, but the reality is that most of our decisions are more emotional than rational.

As a software developer, this skill means that unless you can properly deal with the relationships with other developers, managers, and even customers, even if you have many good ideas or useful skills, you will continue to hit the wall.

Generally, we actively participate in software development.CommunityIt will also be of great help to your career. Instead of limiting your name to interpersonal communication, you must spread your name and establish good karma.

Success depends on your ability to treat people. (Do you want to take shortcuts when learning how to treat people with things? That's easy. Please be considerate !)

What do you think of practical skills?

Please note that my list does not contain any specific technology or even a broad skill like web development or mobile development. Why?

It is really important to have a solid foundation in some technical fields, but these fields are not as important as the four skills I mentioned above.

If you can solve problems, quickly learn things, name things properly, and treat people with things, you will achieve greater success in the long run than you specialize in any specific technology.

There is a saying that it is of course important to study one or two programming languages in depth and engage in a general specialized field, as long as you haven't gone too far on this old road with those choices, and focus on improving these four important skills, you will have everything you need! (You can even learn C ++; d)

Author Profile

John sonmez is a course author at the pluralsight website. He has created over 25 courses covering a wide range of topics from mobile development to control reversal containers. He is also a frequent visitor to podcast websites such as dotnetrocks and hanselminutes. John has used various native tools to create applications for iOS, Android, and Windows Phone 7. He has also created applications for HTML5 and almost all currently available cross-platform solutions. He is not only keen on Agile development, but also busy with a personal reform movement to simplify the process. John is the most valuable blogger of dzone, but he is not an employee of dzone. He has posted three blog posts on dzone. Apart from those three blog posts, you can read more on their source sites. View complete user information

Annotation

[1]Metaphysical(Metaphysical) metaphysics refers to the problem that cannot be answered directly through perception through rational reasoning and logic.

 

Http://kb.cnblogs.com/page/168051/

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.