The four most important skills of a software developer

Source: Internet
Author: User

Today, there are a variety of technologies, languages and platforms to choose from, so as a software developer, it's even harder to figure out where the best investment point is to take the time to develop your skills. I was often asked for advice on how to become a stronger programmer. The most frequently asked questions are original aim whether they should spend their time in a particular programming language or technology that is different from others.

Lately I've spent a lot of time pondering this problem and have come up with some of the skills I think are most important and can benefit you for life, and once the software developer has mastered these skills, it will not only give them the best job opportunities, but also make them productive.

Skill One: problem solving (solving problems)

I used to talk about the need to learn how to solve problems, and even give some steps to learn how to solve problems, because I think this skill is critical to any software developer. Software development is all about solving problems.

If there is no problem, no software is required.

All software is designed to address some user issues, and a common solution is an array of small-scale issues that can be tackled. If you can't solve a problem, you won't be proficient in software development, and the programming language or technology you use doesn't matter. Most developers perform poorly when it comes to solving problems.

I often hear complaints that are too difficult for a job interview, because the interviewer will ask the developer to solve some difficult problems. I've talked about why difficult interviews are good, and part of the reason is that interviewers are testing developers ' ability to solve problems. I know that many developers still disagree with my point of view on this issue, and they do not understand why websites like Topcoder[2 have spared no effort to refine their development skills, at least from my own experience, which is the practice of topcoder problem solving. Participation in such practices is a turning point in my career.

Pretend you're a carpenter. If you want to be a good carpenter, maybe you should be good at cutting wood. Maybe you should have done all kinds of parts by hand, and also used many different tools to cut wood.

no matter how many years of carpentry experience you have, or how beautiful your furniture or cabinets are, every time you try to cut wood and make all the necessary parts. Cutting wood is the basic skill of carpentry, just like solving a problem is the basic skill of software development.

Skill II: Self-study (teaching yourself)

In life, there may be no more important skills than learning to learn. This skill is especially important in software development because, as far as I know, any field changes faster than software development. You can't know everything. You don't even have time to be a master of a particular framework or technology-because things are growing too fast. Instead, you need the ability to quickly get the knowledge you need to accomplish the task at hand.

If you really want to have some skills that will keep you up to date in your software development career, learn how to teach yourself.

The only way to improve this skill is to put it into practice. Go out and learn a new programming language or technology, even if you don't think you can use it (or learn it). In the future you will be surprised to find that you can pick it up quickly, because you already know the relevant basics. If you can quickly adapt to the ever-changing software development market, and the various technologies and platforms associated with it, you will have the skills that are always sought-after.

Although I was somewhat skeptical about some of Tim Ferris's claims, he wrote a great book, called "4-hour Chef" (4-hour Chef), which introduced several tricks for how to learn things quickly. (I was also going to write a book about this subject.) )

Skill Three: naming (naming)

If someone asks me what I'm doing all day, I probably say, "study what other people have named, and name things." "Admittedly, if no one really asks, I wouldn't really answer that, but I do have a chance to answer that."

Software development is the description of metaphysical content. Most of the content that we build is invisible and can not be touched. The Authorization Manager receives the authorization request and then issues an authorization response, while the user repository invokes the user's factory to assemble the new user-we must build the complete environment in mind based on the above description.

Every time you code, you're naming things. When you read code written by yourself or someone else, you get most of the understanding of the code from the name of the thing in the code. In most cases, I can accurately predict the skill level of the developer by looking at how the methods, variables, and classes are named in the code written by the developer. To give a proper name to the concepts and data in the code, developers who lack this ability are like dumb translators. Whether you can understand something or not, if you can't explain it properly, it's going to be fleeting.

the best way to improve this skill is to keep practicing. as long as I understand the code, I tend to rename things in the code. As I began to understand what a method was doing, I renamed the method so that it was consistent with my understanding. I do this when I read the code, even if the code doesn't produce any logical changes.

The more you focus on giving things the right names, the better you will be. This is the most obvious aspect of your code. Simply take a look at your code, it's hard to tell whether the code is correct or not, but if the code can make me evidently biddy, then I think you know what you're doing.

Skill Four: treat (dealing with people)

Although I have this skill at the end of the line, in many cases you may say it is the first or most important skill. There are people everywhere. Unless you work alone and develop software for yourself, other people, as software developers, will affect your career. I've talked about why you might not want to criticize someone, but we are more about dealing with others than annoying them. I'm always going to pick up the Dale Carnegie (Dale Carnegie) book, "The Weakness of human nature" (How to Win Friends and influence people), because it's so important to learn how to be a successful person. As I said before, if you want to improve people's skills, read the 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 skills, but the reality is that most of the decisions we make are more emotionally influenced than rational.

As a software developer, what this skill means to you is that unless you can properly handle relationships with other developers, managers, and even customers, you're going to hit the wall even if you have a lot of good ideas or useful skills. In general, being actively involved in the software development community can also be a great help to your career. Do not confine yourself to interpersonal communication, but spread your name and make a good margin. Success in doing all this directly depends on your ability to behave. (You want to take a shortcut when learning how to behave.) That's easy. Please be a kindness. )

How to look at practical skills.

Please note that there is no specific technology included in my list, and there is not even a wide range of skills such as web development or mobile development. It's important to have a solid foundation in some areas of technology, but these areas are less important than the 4 skills I mentioned above. If you can solve problems, learn things quickly, properly name things, and treat others, you will be more successful in the long run than you specialize in any particular technology.

It's important to go deep into one or two programming languages and engage in a common area of expertise, but you'll be all right as long as you haven't taken the decisions too far on this old road and focused on improving these 4 important skills. (You can even learn C + +)

From: Turing community (translator/Gao)

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.