Software is programmer-oriented ---- programmer
I would like to give this document to all friends who want to be programmers.
(1) origin and personal experience
I have graduated from computer science for more than a year. After graduation, I am engaged in software programming. I often have other professional friends who want to engage in software programming and ask me how to do it, because I am conscious of being involved in the industry, and do not dare to trust me, I have to seriously consider this issue to help my friends select and reward their trust.
This is the origin of this article.
Let's talk about my personal experience first. (Is it a bit conventional, but I think it is helpful to understand my experiences. I have always thought that I do not understand my experiences, I can't really understand the work of Gu Long and the hero under Gu Long's pen.) I studied at a famous Southern University (because I was not angry with myself, I really talked about my alma mater name ), he majored in computer science. When I took this course, I almost never listened carefully to a professional course. I went to class to read newspapers and sleep. I watched videos and novels to watch the game. I was so worried that every exam and course design were full of lessons. (In contrast, I have listened to the courses in business administration and economics and trade, but I have a high score. Maybe this is my real interest .)
All in all, the University is a mix of students, and the degree of understanding and mastery of the major should not be able to meet the graduation requirements. (I also regret it, but what's the purpose? I didn't know how to cherish it at the time. If God gives me another chance, I will definitely seize the opportunity to watch more American movies and watch fewer Hong Kong movies. Now, returning to campus is my great dream. However, my university study gave me a simple knowledge framework (I have not paid the tuition fee ), I have described my knowledge framework to a friend like this. "It's not made of steel bars, it's made of straw." HAHAHA, don't laugh. Really, I dare say that the knowledge framework of my major is nothing more than a straw ". Until now, I have always felt that my basic knowledge is still very weak. I have been trying to take some time and take a good look at the Basic Books. (This task is being planned and implemented)
After graduation, I will be assigned to a research institute. When a leader asked me to select my future job direction, I did not hesitate to choose software (I do not know whether it is right or wrong, but I will never regret it ). This research institute is mainly engaged in R & D and production of Communication Control Equipment with hardware as the core. software is an auxiliary tool, so it is not paid much attention. Many people engaged in software have moved away, most of the remaining programmers are "fake/wilting" programmers who have already been used up and will be used up (literally "software personnel "). I don't feel any high-tension or high-tech research and development here; Software Development has very low technical content, so most people only have half a year of learning and development experience, in the future, this knowledge and experience will be reused. (I have asked other students who have worked in the institute. They say they are all the same. We are developing national defense scientific research.) for software development, the will and old experiences of leaders play a decisive role in the adoption and development of new topics, with no clear requirements or development plans or progress, every day, week, and week are a waste of valuable time. Finally, the things developed and modified until they become garbage. I have come to realize that either they are useless like those who are useless, or they are trying to find a way out, and don't expect any brilliant experience from their work (maybe some lessons ). Some emotional disputes occurred during the period, seriously affecting the learning plan and effect, until now the impetuous heart is still somewhat impetuous.
During this period, I read some books, read some articles, compiled some small routines, and made some technical development work, I also talked with some predecessors and masters. I have been thinking about a few questions; how to learn about software development? How to develop software? What is the secret of foreign software development? Why is our software industry always low? Is it true that we cannot survive Microsoft? What is a waste of time for our programmers? How is software development classified? How can we take the path of our national software?
I have been thinking for a long time, and I am still thinking about it. But I know one thing is for sure, that is, we must go out of our software on our own! People will always be behind others' ass!
Well, let's write about our experiences and complaints first. It's time to go to our topic.
(2) Are you suitable for programmers? Do you know what is going on with programming?
1. Programmers mean programming. (If you only want to get a job with a high salary, drink coffee and wait for the boss to make a salary, I advise you to find another job that is more suitable, for example, practice, really, brother, this job is not suitable for you)
2. Whether you want to learn text or academic principles, the editing process may require romance, but more logic and rigor. (Frankly speaking, it's boring before you have fun)
3. are you passionate about new technologies? Do you have a thorough exploration spirit? (Enthusiasm is definitely the most important thing! Do you think about your character as a programmer ?)
4. When a programmer is by no means a good job, he must learn and think about it at all times. (Until you become the one who can guide others to learn and think, you will be able to secretly laugh, another group of dummies)
5. The future of programmers is very confused. (But I think it's important to look at yourself! I hope that you are a Pursuing person, not just mixed bowl meals. Because the real pleasure lies in creation. If you can change the history of the software industry, it is a hero. You don't want to be Bill Gates, you don't want to be Dennis Ritchie or Bjarne stroustrup. I will say you didn't pursue it. There is a joke about the future of programmers, maybe you haven't heard of it yet. You should hear it and extract it as follows:
A programmer is confused about his future, so he asks God.
"The omnipotent God, please tell me what will happen to me in the future ?"
God said, "My child, ask Lippman. The number of programmers he leads may be the largest on the earth"
So he asked Lippman.
"The future of programmers is to control programmers," Lippman said"
The programmer was not satisfied with the future, so he asked God again.
"The omnipotent God, please tell me what will happen to me in the future ?"
God said, "My child, you ask gates, he may have the most property on the Earth now"
So he asked gates.
Gates said, "The future of programmers is to extract programmers"
The programmer was not satisfied with the future, so he asked God again.
"The omnipotent God, please tell me what will happen to me in the future ?"
God said, "My child, ask Hou Jie. the readers of the computation books he wrote may be the most on the earth"
So he asked Hou Jie.
Hou Jie said, "The future of programmers is tempting programmers"
The programmer was not satisfied with the future, so he asked God again.
"The omnipotent God, please tell me what will happen to me in the future ?"
God shook his head, "Alas, my child, you should not be a programmer ")
6. It is fun to be a programmer. (When you learn new knowledge, when you have new thoughts and opinions, when you have a new product, when you discuss your achievements with your confidant... I ask you, do you think this is fun ?)
7. It is not difficult to be a programmer. (Is there any difficulty in the world? For ...; Not .... Do you have the determination and confidence ?)
8. Do you really want to be a programmer? Is it your own idea?
9. Are you willing to spend money to buy books? (Reading a good book is definitely the best way to learn programming. You must say that computer books are really T. m.D is expensive. No way. Who puts knowledge and technology in the head of people's books? When you write a book, you can lower the price, remember that there are still many brothers who have no money but want to buy books. If you are willing to buy books and good books, it is better not to read a bad book. It is more beneficial than others. You can ask experts or read Hou Jie's book reviews about what books to buy; prepare a small notebook to record the name of the book you want to buy. When you visit the bookstore, buy it if you want. Remember to read it. Don't just buy it .)
10. I tell you that a program is a software program for any purposeful and expected action sequence.
11. Compile a program.
12. Have you thought about it? (If you want to become a programmer, you can continue to read the program; otherwise, you can continue to find another way out .)
(3) Basic knowledge and concepts that a programmer should possess
1. What is a computer, what is a CPU, and how it works. (I won't tell you the answer to these and the concepts to be mentioned below. You can read the corresponding teaching materials. I will detail the teaching materials in the next section and remember to understand them !)
2. Concepts of machine language and micro-instruction set.
3. program concept.
4. The Assembly Language is a low-level language, but not a machine language.
5. What are the main advanced languages? (C, C ++, basic, Pascal, Fortran, C #, Java, etc.; if you are a hero in the Chinese software industry, you should also write a language, preferably not in English) 6. Compile the program and explain the concept and principle of the program. (Compilers are prepared by experts and experts)
7. html and XML are distinguished languages.
8. Prolog is an artificial intelligence language.
9. Concepts and Principles of operating system OS. (Windows 98, Windows 2000, Windows NT, Windows XP, UNIX, Linux, and so on are all operating systems. There are also some real-time operating systems, embedded operating systems, and these are definitely experts)
10. In Windows programming, Windows API is called. (Many programmers in China only compile Windows programs and use VB. I suggest that at most these programmers are low-level coders. I call them coder)
11. VC ++, VB, BC, BCB, Delphi, and VF are only programming tools and environments, not programming languages.
12. Structure-oriented design concepts.
13. object-oriented concepts. (It's important, bro)
14. Concepts and Principles of software engineering. (If you want to be a boss, you need to study it well. The system analyst is a higher level than the coders, and the salary is high)
15. Concepts of databases. (Be familiar with the names of some famous database systems and languages, such as orcle, SQL, DB2, and dybase)
16. Understand network concepts.
17. Understand multimedia concepts.
18. be familiar with and master the data structure and basic algorithms.
19. Is the requirement too high? Don't worry about it and make progress without knowing it. (Once you start learning, you will have a basic concept in a month. After two months, you will feel that you have a comprehensive basic knowledge; when you know how the program is going, it means you are getting started. There are also many people who have compiled the program for many years and haven't gotten started yet. You don't want to follow the steps on your own. Be confident and patient. How can it become a major event ?!)
(4) Recommended teaching materials
--The recommended teaching materials are mainly for concepts. It is best to choose teaching books from famous schools.
1. Computer composition principle (familiar)
2. Data Structure (master)
3. Operating System (understanding-> familiarity)
4. The C Language)
5. compilation principles (understanding Principles)
6. Assembly Language (understanding)
7. Computer Network (understanding)
8. Software Engineering (understanding)
9. Relational Database (familiar)
10. The C ++ Languege (master)
11. Object-oriented Design (master; combined with C ++ learning)
(5) Experience
1. A real programmer uses C ++ (said by an expert)
2. Compile the program;
3. Brainstorm;
4. Have a good programming style;
5. Read books, read good books, and read original books as much as possible! (I have repeatedly stressed this point. You must have a choice in reading books, insist on reading good books, classic books from famous books, and do not waste your practices on some shoddy books; and insist on Reading mass books)
6. Have your own learning plans;
7. Summarize your own experiences and lessons (prepare a notebook and record errors and experiences)
8. Do not be afraid to learn new things;
9. Have the idea of software engineering;
10. Be good at discovering problems and then look for answers;
11. Ask experts for advice. (open your mind until you become masters)
12. Communicate with peers (not good at communication)
13. Understand the essence of software and do not be confused by the ever-changing appearance;
14. You really need to learn to use programming languages and methods, not libraries, classes, or tools, I think it is far from enough)
15. wiodows programming is mainly used to learn Windows OS and Win32 APIs;
16. have time to learn about embedded development;
17. have time to learn about PDA software development;
18. Learn about the. NET Framework and C # language. Maybe it is your new parent;
19. Be patient and never be impetuous. 20. Comment on the program and keep your old program;
21. The more you learn, the more you know, the closer you are to experts;
22. If you are free to visit csdn, you will have many confidants;
23. Be confident to become an excellent program;
(6) Recommendation of some good books
1. The C programming language (keinighan & Dennis Ritchie 1988)
2. The C ++ programming League (Bjarne stroustrup 1997)
3. Inside the C ++ Object Model (Lippmans)
4. Objective C ++ (same as above)
5. More effective C ++ (same as above)
6. predictional C ++
7. c ++ efficient Object-Oriented Programming
8. Design Patterns
9. Thinking in C ++
10. The standard C ++ Le (recommended)
11. The art of computer programming
12. Programming windows (Charles Petzold)
13. VC ++ 5.0 technology insider
14. Introduction to MFC
15. software requirements
16. Advanced windows
17. c ++ Primer
18. Win32 programmer Reference Manual
19. Using TCP/IP for Internet connection
20. essence of COM
(7) learning plan
--This learning plan is set by myself. I will share it with you for your reference and make progress together. 1. Computer composition principles
2. Operating System
3. Data Structure
4. Assembly Language
5. c
6. C ++
7. VC technology insider
8. Programming windows
9. in-depth introduction to MFC
10. Advanced windows
11. Inside the C ++ Object Model
12. Thinking in C ++
13. Objective C ++
14. Database
15. Network
16. Embedded OS and Programming
17. Hardware Microcontroller
18. NET and C #
19. Software Engineering
20. UNIX and Linux
(8) postscript
Over the past year, I have wasted a lot of time exploring, thinking, and detours. Until now, I still feel that I am a programmer. I have explained some of my experiences and ideas (of course, many of them are not necessarily correct. You are welcome to discuss them with us ), some suggestions and help may be provided to some friends who want to join the ranks of programmers. We hope to help these friends develop their programming skills.
What I want to explain is my article, which mainly aims to give some suggestions to "some friends who want to be programmers" and help them find a shortcut to self-training, (In fact, there are no shortcuts in the world. I think everything lies in understanding. The teacher leads the door and practices are personal. For example, I do not practice enough.) I do not do much useless work like I do. In addition, it is mainly a basic skill (personal opinion) that a programmer should possess. Some people call it "Internal merit", which I think is quite right. Without solid basic skills, how can we easily write high-quality and high-performance excellent programs?
Postscript: Originally published on "csdn-program life" Author: weathering