The gap between the common code farmer and the CTO is that 7 points

Source: Internet
Author: User

  Humbly

The first step in learning is-"I don't understand". An empty water cup to fill the water, if it is full there is no way to fill the water. "Self-affirmation" is a very difficult habit to overcome, often friends see a technology or realize that without thinking is-"bad", if you ask him where the rotten is almost impossible to say why.

Recently Microsoft has released. Net Core, if you have a chance to see this headline article, you might as well look at the comments. A variety of "jet" from the "performance", "Moral", "Microsoft is Bad", "PHP is the best" and other nonsense to open the spray. This seems to be a common problem for programmers who have no rational taunts about something they don't like, such as domestic or Microsoft, the two most likely to pull a grudge. This narrow-minded mind often affects their own growth.

  Don't stay in the comfort zone.

Mental Comfort area, refers to people's habits of some psychological patterns, is you feel familiar with the psychological state of being at ease. People in this "area" is very "comfortable" all at ease, work lightly, once out of the "area" will feel insecure, anxious, and even fear.

Some people have "5 years of work experience" or even "8 years of work experience", carefully chat down you will find that they may be "a year of work experience for eight years." The tools they used were 10,000 years of eclipse (not even willing to accept the new version of Eclipse), their coding style was very "historical", and they used to use some "own" (or company's) some "framework" to do the development. This is the result of staying in the comfort zone for a long time. Lost to the pursuit of new technology and exploration, blindly deny or find all kinds of unreliable excuses will let their only more and more old, increasingly narrow eyes until one day suddenly found-the comfort zone has gone, just really into panic.

Brave out of the "comfort zone" to explore new technologies, new methods; converting "non-comfortable areas" into comfort zones expands our knowledge. This constant exploration of the spirit may eventually develop-not only stay in the exploration of "It technology", began a variety of tossing, such as tossing electronic production, tossing and writing novels, tossing research folk art, tossing storytelling (OK, back two is my hobby).

  Always thinking

The moral of this public number is thinking, and my starting point is to send something to make people think more (hopefully I can do that).

After solving a problem we often "look back", we have to learn is not "solutions to specific problems" rather than "solutions to the problem." Many friends through the network or colleagues to help solve a problem after the no then, do not go to the initiative to analyze the cause of the problem, solutions, principles. Such "experience" can not be counted as experience, most of the "experience", no root asked the bottom of the analysis of a problem, thinking, can not be counted as "solve the problem."

  Read more code

The best way to learn is "cottage". The most straightforward way to communicate between programmers and programmers is not the UML, not the XXX document, but the code, which is embedded in the code, whether it's architecture, design, skill, or specification.

The OpenSource movement provides a huge warehouse for the world's developers, with a wide variety of items and uneven quality. By reading good code, you can improve your insight and analytical skills. Here are some of the most reliable codes to be recommended:

Java and contract, mixed concurrency bounded if you've never heard Doug Lea, you're a white bastard, and the Don says it's academic, engineering, two. Text has a pen can write papers, martial energy keyboard code program of all-rounder. Java.util.concurrent is still classic, both API and performance are masterful for many years to stand. (As long as you use the thread, lock this concurrency model, Java's concurrency library minutes seconds to kill all)

Guava, it is very modern compared to the Apache Commons package. Google's sign doesn't have to be said much.

Apache Roller, if you need a Java EE correct posture, then I recommend this, in addition to some older than there are no other shortcomings. Apache's signboard is also very hard.

  Do an amateur project

Doing an amateur project can give us greater freedom, and in this project we can try out new technologies, methods, and completely have our own decisions about all the technologies. If you're not careful, your project will help a lot of people and it'll give you more opportunities.

Do an amateur project is very exercise personal ability of things, when we in the Spit Groove XXX technology can not be in the amateur project to try, perhaps you will understand the author's difficulties; when we think that XXX technology is really cool when you can try it in an amateur project, Maybe you'll find it's really no way to do anything other than to write a Hello world.

  Communicate with others

It's one thing to learn a technology yourself, and to help others learn is another matter. Helping colleagues solve problems at work can often lead to greater gains (and a greater sense of accomplishment).

Communicating with others can help us improve our capabilities in two ways:

To improve the depth of technical understanding, if we want to put a technology to speak to individual people first of all, we have to figure out each of its knowledge points. For example, we may not be familiar with the HTTP protocol, but we really have to tell others how to say it? What is the relationship between the HTTP protocol and the TCP protocol? What are the supported methods for the HTTP protocol? What is a stateless state? Why design in a stateless state? What is the relationship between session and Cookie and how does it work? Seemingly simple question, in fact, contains a lot of knowledge points, through "communication" we will have thought-"I will" technology has a deeper understanding.

It is a "practical" skill to improve the expressive ability, the expressive ability is not practiced by overnight, and there is no fixed skill to follow. Through communication we can constantly hone their communication skills, if we can make a clear technology so that our communication skills should be enough for us to take care of "sister". ^_^

  Learning technology, not tools

In the new framework, new methods and new tools, it is difficult to determine what is "technology" or "tools" today. I personally think that programmers do not exist--java programmers, Python programmers, Android programmers, iOS programmers, these prefixes are "tools", Behind the "programmer" three words is the technology. Let a person claims to do the web to do Android for this leave people really do not say less, their reasons are usually: I do the Java Web, not do Android. But what if the web doesn't happen one day? And even one day, what about Java? (not alarmist, too many recent negative news from Java.) With the shameless character of Oracle to give up it is also dry, do not think that fame will not be killed, was killed OpenSolaris, OpenOffice, MySQL all have a long history, fame big. )

So what exactly is "technology"? Answer: Data structure, operating system, computer architecture, database principle, compiler working principle, software engineering methodology, etc. All of our work is the practice of these theories, through these practices we find the problem through the way back to the "theory", such a set of tracking down to ensure that everyone clairvoyant, enlightened, want to die, cool to explode.

For example, spring is not unfamiliar. But what is it? There will be an AOP, IOC to answer, then continue to ask what is AOP and IOC? Some examples will be given to illustrate the AOP and IOC. But these are not the answers, spring is a container, and you can read the official document at the beginning of the letter.

The Spring Framework is a Java platform This provides comprehensive infrastructure support for developing Java application S.

Spring is the infrastructure of a Java platform, and the first module "2.2.1" is called core Container (including Spring-core, Spring-beans, Spring-context, Spring-context-support module); The first chapter of Part three (Chapter 7) is called the IoC container. All IOC container is the fundamental technology that any spring module must rely on, and it is the innovation point and key of the whole spring. If you continue to explore (which may take a long time), you will find what is a component, what is a container, what is life cycle management, and in this process will continue to deepen your understanding of spring, will also sublimate your understanding of component development, the understanding of software design. (In this XXX in action,xxx technology Insider, XXX in layman's time, I would like to recommend an old book "Expert One-on-one development without EJB", author Rod Johnson, Yes, the creator of spring. There are some chapters to choose from, and by "archaeology" you may find out what is the motive of spring design. The book is out of print, please search the electronic version yourself)

  One of my experiences

When I first got in, all the service in the company returned a class like this:

Err indicates whether there is an error, and the code also defines a bunch of error codes, and data represents the actual execution results. So every call to execute an if judgment, if the error code does not exist also need to add one of their own. Although my project manager told me the method was "standard", I thought it was too low. So when I was able to decide how to write it myself, I wrote down the following code:

My practice tells me that no normal people like to use "error code", the world can not be more disgusting than this; no normal person likes to force type conversions. So the new result inside uses issuccess to indicate whether the execution succeeds, if it fails, the error message is returned through errormessage, and the problem of the object cast is resolved with generics.

Of course, I used the exception later. Because I think no normal people like to use if to keep judging, looks like C language "two". The result of the function is not very obvious, it is necessary to get it every time to get the result. So I use exceptions to handle errors and throw "runtimeexception" if something goes wrong, and the result of the function is returned by the return value of the function.

These changes are not produced in a day, two days, or within a year or two. With the accumulation of their knowledge, the evolution of technology we will always find the "new method", we need to constantly "negative", "try", "negative" and "try".

The gap between the common code farmer and the CTO is that 7 points

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.