Programming Daniel Bruce Eckel's advice to new programmers

Source: Internet
Author: User

Comment: The author Bruce Eckel is the programming world of Daniel, with the famous "thinking in C + +" and "Thinking in Java". This article is his advice to programmers, especially beginners, and teaches you how to turn into a career.

People always ask the wrong question: "Should I learn C + + or Java?" "In this article, I'm going to tell everyone: what are the real concerns about choosing a programming career?"

Please note that the target audience for this article is not those who have made their own choices. (For these people) you will continue your programming career, no matter what others may say. Because it has penetrated into your blood, you have been unable to get rid of it. You already know the answer: C + +, Java, Shell scripting, Python, and a whole bunch of other languages and technologies that you take for granted to learn. It is even possible that you are only 14 years old and already know several different languages.

People who ask me such questions may come from other industries, or from areas such as WEB development. They know that HTML is a class programming language and want to try to build some of the larger applications. But I especially hope that when you ask this question, you have realized that you want to succeed in the computer field, you need to master the ability of self-study, and never cease.

The more I do in this area, the more I feel that software development is closer to writing than any industry. we never know what makes a good writer, we only know when we will like someone's words. Programming is not a project, just pour the thing from the inlet and then turn the handle. It is tempting to think of software development as deterministic. Because of this idea, people always want to make some tools to help us develop the software we want. But my experience tells me that this is not the case-the importance of people is much higher than the process. Whether or not the software is running on a precise machine is becoming less important-it is like the effect of the uncertainty principle on human beings.

My father was building a house, when I was a child I occasionally help to play, put bricks and so on. He and his carpenter told me they were good for me to do the work-so I wouldn't go into the business. That's true.

We might as well compare software development to building a house. Of course, the people who build the house can't be exactly the same. These people include: concrete workers, roofing workers, plumbers, electricians, brick and mortar workers, cement workers, tile workers, porters, carpentry, joinery. Of course, there's the foreman. Each job requires a corresponding skill, and these skills take time and effort to master. As with software development, building a house is also a process of "building/overturning". If you want to get a quick payoff, you can start with the movers and tiles, so you don't need to learn a lot about the curve to get paid. When there is a lot of demand, your job will be solid and even your income may rise-if you don't have enough hands. However, once the market is bad, carpenters and even the foreman may kick the bricks.

When the internet just comes up, just spend a little time learning HTML and you'll get a lucrative job. But when the situation is bleak, the requirements for skills are higher.--html programmers (like porters and brick-and-mortar) were first abandoned, while programmers with higher skills stayed.

I want to say: unless you are ready to live to learn old, otherwise, do not enter the industry! Programming seems to be a high-income and stable job. But the only way to do this is to always make yourself more valuable.

Of course, you can always find an exception. There are always people who, just learning a programming language, can be qualified to stay in a position without the need to grow his skills. But they are only spared, and they are, in the end, vulnerable. To keep yourself from becoming vulnerable, you need to continually improve yourself by reading, joining user groups, attending seminars ... The more you learn, the more valuable you will be, and that means you have a better career prospects and a higher salary.

Another way to do this is to get an overview of the field and find the best place for you. For example: My brother is interested in software, but also in this line, but his job is to install, repair, upgrade the computer. He is always meticulous, so when he does the computer well, it will be perfect-not only the software, but even the wires will be carefully tied. He is always in a brisk business, far beyond his ability. He didn't even have to worry about the collapse of the COM bubble. It is obvious that his job is not easy to be robbed.

I stayed at the university for a long time, and even graduated from UCLA with a PhD, and then luckily terminated. I said "lucky" because I no longer like to stay in school, and I have spent so long in college, just because I enjoy it. But what I enjoy is basically a job--art and dance classes, work in the school newspaper, and a handful of computer courses (the reason computer courses are "not doing anything" is because I majored in physics and graduate students are computer majors). Although I am far from academic excellence (it is interesting that many of the schools that may not have accepted my student at the time now use my book to do the teaching materials). I really enjoyed my life as a student, and when I finished my PhD course, I would have lived as a professor.

But as I see now, my biggest harvest at school comes from my "off-the-top" courses, which expand my thinking beyond what we already know. In the computer field, you are always programmed for a certain goal. The more you know about your goals, the better you will be. I have met some European graduate students who need to work on programming in other areas of specialization, and their papers need to address specific issues in this area of specialization.

understanding areas beyond programming will greatly improve your ability to solve problems just as learning several programming languages will greatly improve your programming skills. Many times, I find that students who only study computer majors have more limitations in thinking than those who have other backgrounds (except computers). Because the latter has more rigorous thinking, it is not so easy to take for granted.

One time I organized a meeting, one of which was "what are the characteristics of the ideal candidate":

    • Think of learning as a way of life. For example: You should know more than one language, there is nothing better than learning a new language to broaden your horizons.
    • Know how to get knowledge
    • Study Prior Art
    • Use tools
    • Learn to simplify things
    • Understanding Business
    • Be responsible for your own mistakes. "That's what I am" is an unacceptable alibi. Can find their own mistakes.
    • Be a leader and be good at communication and motivation.
    • To figure out who you're serving.
    • There is no absolute right answer (a better method always exists). Show and discuss your code, don't take emotional factors-your code doesn't equal yourself.
    • Understand that perfection is gradual.

Try some adventures-especially those that can be scary. When you try, you will experience unexpected excitement. It's best not to deliberately plan a particular outcome (in the course of an adventure). When you focus too much on results, you tend to miss out on really valuable questions. My adventures tend to start like this: Let's do some experimentation and see where it's going to take us.

Maybe someone will be disappointed with my answer and say, "Yes, it's fun and useful." But what am I supposed to learn? C + + or Java? I repeat: not all problems have a single, simple answer. The key to the problem is not to choose a programming language and then master it. The crux of the problem is continuous learning, and many times, there is more than one choice. believe what I say, your life will be more wonderful!

Original: A career in Computing

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.