Thinking about programming for the past two years

Source: Internet
Author: User
This is a creation in Article, where the information may have evolved or changed.

Unconsciously coming into the junior, I would like to write about the past two years in the programming above some of the thinking, is a summary of the past two years of learning.

In the beginning of the university, I spent less than one weeks to finish high school did not finish the C language, and then use it to do more than 200 OJ. 200 Questions for ACM players is very small level, the improvement of my algorithm is also limited, but it is the 200 multi-problem, I am familiar with the C language and code implementation process, I think today is very fortunate.

I think programming is becoming more and more difficult than it was two years ago, as the study deepened. Freshman, I think the algorithm is the most difficult, then I do the most thing is brush OJ, as long as I mastered the highest depth of the algorithm, I can climb the top of the programmer. The fact is that the algorithm is just the hardest part of the algorithm, and it's just a necessary condition for being a good programmer, that's all.

Later on, I think the hardest part of programming is how to describe ideas as code, so long as I can abstract all the ideas into code, I will be able to be invincible in the world of programming. Now I understand that having good code abstraction is just the way to become a good programmer. In addition to knowing how to describe the code, you also have to consider how to write code that is readable and extensible, after all, the software is mostly done by a multi-player team, and it is possible to expand at any time.

The real life my interest in the dialect also manifests in the programming language, in the past two years, I have several mainstream languages to touch once again, C++,java,c#,js,python and so on. Ruby author as has a book called << Code for the future >> It introduces the characteristics and partial realization of many languages. One of the benefits of being in touch with a language is that it is not a problem for me to learn a new language quickly, because many concepts are inherently interlinked. Of course, you say that learning and not fine I also think there is a reason, such as C + +, I learned a semester, maybe I can Write some simple programs, but it is impossible to write a complex system. But in general, it's more than the pros and cons. (now my favorite Python and Golang, who knows who to use:)

Slowly I started using Java to build a simple Web service, and when I was ready to start learning Java's three frames, Python suddenly came in. Boredom with Java verbose syntax and XML makes me particularly fond of Python, Until now I am still learning and using it. In the following time I continued to try out the use of the Flask,django,tornado framework. Now I'm going to go back and evaluate the three frames, and what I like most is tornado.

Broadly speaking, if programming is not just about writing code, but building an available program (service), then the difficulty curve of learning programming will rise sharply. Take me in touch with more server development examples, when I finished writing the program deployment code, I found that I needed a Web server, such as Nginx or Apache, such software does not require me to write code to achieve (thanks to the era of open source culture), but if you want to use it, not to understand its implementation is impossible. And that requires you to learn some important software, see its source code, understand how it works, Know what it is good at and where there are pits to be aware of. Similar software is not limited to docker,mongodb,redis,git and so on and so on. Even the framework you often use, if you can go to a strip of it source code to see, there will certainly be a different harvest.

Even with this in mind, there are a lot of things you can do if you want to go deeper into your study. You could learn the principles of the SSH protocol, Socket5 the principle, and then do it yourself. Try to learn the compiler principle and operating system (what I want to do in junior year), just want to learn, In the computer this piece does not have the knowledge which you have learned. So today it is said that learning ability is important to a good programmer.

I said so much about programming difficult content, not I feel discouraged, but because from the very beginning of the simple knowledge of programming, to now gradually on the threshold of more than half feet, I am more and more aware of the need to learn more carefully to be able to achieve something.

As for why I'm programming, I think it's not just about interest. After all, I am not a Linus, can say oneself just for the fun, also cannot be like Swartz for Freedom. I believe in the potential of every individual, but based on the present self and external conditions, I can't make the change to the world (but I want), I can only make my programming a way of changing myself. Programming to me, like a hammer, on the one hand I want this hammer to become more powerful (strong professional ability), on the other hand I also want to have enough ability to wave it ( Other abilities/qualities). For one day I can swing this hammer where to play, so that I can not only change themselves, but also help the community to do something meaningful, to provide productivity, so that society can become a fair point, I think this is meaningful.

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.