The most basic thing software developers should know

Source: Internet
Author: User
Tags rfc

In view of the many silly questions that I often see, for example, what is the XX language used? Is the xxx language outdated? (But to be honest, there are all these questions for beginners .)
Here I will talk about something developers should know. But these are just what I saw and thought of on weekdays. Some deviations are inevitable. Please forgive me.
Software development is a comprehensive design. Software development is not just code writing. It is only the first step and the most basic requirement to learn to program in C. There are many other things. In my opinion, programmers can be roughly divided into two types. when a job is assigned to a programmer, a programmer knows why. the other way is to know how to finish the job.
The difference is big. if you know why you want to implement it like this, it at least means that you can hold your task in the software engineering. if you only know how to complete it. it just means you can finish the job. if you want to do well, you won't be able to do it. the first programmer must be able to do well. optimal. let's take a look at the following articles, hoping to help everyone.

First, what is the key to programming?
Programming is not enough to implement the code. I can quote a sentence from my friends, "programming is an overall balance ."
This is his explanation. "Balance is a very important part of the software. From the perspective of balance, thinking about programming will restrain you from using the latest technology, the latest system, and other ideas. From the perspective of balance, as long as your software has a bottleneck, your program will fail. The first thing you need to consider is how to eliminate some possible bottlenecks in the program. On this basis, you have the right to consider improving the performance of your program. "Even if you have the latest technology, it is best to have a system if your code doesn't work. As long as your program has a performance bottleneck, nothing is done.

What I want to say here is that the program is written by humans. If your skills are not good, no good off-the-shelf technology can be used. Even if it is used, you may not be able to make it clear. Why is it used like this?

Second, how to program?
I think a lot of people will surely get rid of this problem in their hearts. I thought this kid was tired. It's okay. Now let me know. How to program is not to say how to write detailed code, but how your program is formed. I want to write it here. Someone once delayed me. However, writing code takes less time in the software production process.

I personally think it should include the following parts:
1. Market Potential Analysis
Analyze whether the software you want to write can be sold, or what kind of software I want to write?
2. Competition analysis of similar products
Look at the advantages and disadvantages of your similar products and design the selling points of your software. (if there is no selling point, there is no need to continue)
3. Software Design
Write out detailed software processes and data processes. Main algorithms. Software Architecture
4. Write code
Needless to say
5. Bug Testing and Trial Run
6. Sell

These are market, system analysts, and programming. But in many small companies, the principle of doing things in small companies must be respectful. If you know more about it, there is no mistake.

For example. Suppose I want to write a shared software. What should I do?

1. Think about whether the software I want to write has money. The time is between 15 days and 30 days. During this period, we must take a good look at the market. This is the most critical step.
2. Well, I have decided to write XXX software.
3. Find several similar software that is most threatening to XXX on the Internet and analyze their advantages and disadvantages. They need their advantages, not their shortcomings. Design your own software selling points.
4. According to the above analysis results, the menu that xxx software should have is probably listed
5. Write the basic function of version 1.0 and the 1. x function. Don't do all the functions at once. In this way, your software will never be born.
6. Select a programming language (let's see if the programming language is available here)
7. Find similar source code and algorithms online. RFC standard documentation. Thoroughly understand. Good reuse of software code and algorithms will help you get twice the result with half the effort.
8. Write detailed design documents for XXX based on your selected language, algorithm, and standard documents. The document must be used. Otherwise, your planning will be poor. The planning will be poor, and the randomness will be high. The Randomness will be great, and the software will easily fail.
9. Write code according to the design document
10. Test and sell

Third, where are the materials and standard documents?

The world of code is ever-changing. Before you start a new project, you can find code with similar functions. In this way, you can better improve your program. Sometimes it can speed up the process. When the new technology comes out, you need to take a look at the relevant documents. Although do not fully understand its functions and benefits. But you must at least know where new technologies can be used. How to use it. What other technologies can be used together to better play its role. Not all of the software is written by yourself. Many features are a standard, maybe a standard algorithm. Encryption and decryption algorithms, such as graphics, multimedia, and encryption. Some are a standard file format, such as various image files and multimedia files. There is also a standard convention. Common network tools such as email and telnet.

So you need to know where you can find the information you want. I wrote everything I know here.

Source code and technical information site
Www.vchelp.net GB
Www.csdn.net GB
Www.codeguru.com en
Www.codetools.com en
Www.dexv.com en
Msdn.microsoft.com en
Www.programmerheaven.com en
Www.freshmeat.net en
Www.sourceforge.net en
Www-900.ibm.com/?works/ GB
  
Forums and standards, organizations
Www.linuxaid.com.cn GB
Www.linuxbyte.com GB
Www.aka.org.cn GB
Www.rfc.org en GB

Fourth, tools and knowledge to be mastered
Tools to make your work more efficient and error-free.

You may have used the following tools, but you may not have used them. But it does not matter. Fellow laruence will teach us how to use it. (Write whatever I think. No order issues)
1. Database tools
Database creation tool, representing powerdesigner
Database analysis tools. Many large databases will carry.
2. Flowchart design stands for Visio 2000, smartdraw
3. CASE tool stands for Rose
4. Code Analysis Tools
Bounderchecker (for VC Delphi), smartcheck (for VB )....
5. Editor
VI, Vic, ultra Edit
6. Source code management
Indicates VSS and CVS.
7. Programming tools
8. I have never used other tools, but I may have used many tools in a certain industry. (Nonsense :))

Knowledge, because the development direction of each person is different, the knowledge structure of most people is different. But there are several points that should be the same.

1. English proficiency
The main new technologies and documents are started in English. If you want to learn better updated knowledge and skills. You cannot understand English. And don't expect someone to translate it for you. Generally, people who understand the materials do not need to translate them. People who do not understand the materials cannot translate them. I don't think you dare to read the translated articles. Therefore, most of the documents are in the original English text. Of course, many people are translating these articles, but for so many materials, the translation is only a small part. Asking for help is not as good as asking for help. There is no error in learning more English.

2. Design capability
Although in general, formal companies have system analysts doing design (I guess ). But 70%-80% of small companies are not necessarily. Know a little about software engineering and how to use some document design tools. Or you need to know which design documents should be available. It is also very beneficial. If you have learned these things, it's your own. And these are the benefits of higher salaries. A lot of money. :)

3. Chinese Writing Ability
As a programmer, code is mostly written. However, coding comments, various documents, test reports, instructions, and user manuals all require good writing skills. When using tools such as email, BBS, and QQ to communicate with people, if they are unclear, the communication will be even more difficult. It is also a problem to improve the level.

4. Learning Ability
Not many people have learned how to work again. This is not very realistic. At present, society does not allow this. It is common to study while working. Maybe many people learn to do something at work. This is also true for many skills. In addition, many new projects are coming. The arrival of new technologies requires us to adapt to the new working environment and new work requirements. If you do not have a good study, it is easy to be kicked off by a project. Haha.
In addition, when your boss asks you to do something you don't know, you need to tell him that you don't know, but you will fix it within XX days. It doesn't matter. learning is also a kind of outstanding performance.

5. Know what you want to do, what you want to learn, and what you want to develop.
In the world, software technology is as much as the hair of nine cows, and maybe more. If we want to know everything. Oh, my God, I don't want to live anymore.
As a software engineer or a beginner. It is important to know where you want to go. Otherwise, it is easy to starve to death in the software technology maze. In the end, I had to leave this line. This is not good.
Generally, as a software engineer, you can master the development capabilities of one or two languages. In addition, unless you want to develop software technologies (these jobs are the richest and most popular in large companies ). If you are not doing software technology R & D, but writing general applications, you don't need to pay too much attention to what new technologies are coming out today, and what new technologies will be coming out tomorrow. You only need to know these things. You can understand this. It is not too late to pay attention to the useful areas in the future. Select a development direction and strive to move forward. Don't be tempted by a variety of new technologies. To tell the truth, many so-called new technologies, such as how they are good, how they are excellent, and many times there are commercial behaviors in them. You must make your own decisions. If you cannot determine what to do, see the following.

Sixth: Know More
The most troublesome thing for beginners is how to choose one kind of studious and promising software technologies (Qian Tu ), the technology that can do some great things to open up the unknown field of software development. This troublesome problem is rarely solved. If you can meet a good teacher, it is your blessing and you must seize this opportunity. If you have to make this decision by one person, you can only proceed with caution. However, C and C ++ are a good choice.
Another troublesome problem for beginners is that many of the new technologies and new changes that I have made when I chose them. What should I do. This is basically unknown. You can only slowly accumulate data by yourself. After accumulating, you can understand what these new technologies are for. These new changes happen to know more ......, what is the cause of these new changes. You will not be afraid of these new things.
I always insist that if I know more, my strength will be even greater. I will not be afraid of changes. If you are unable to judge something because of insufficient information, do not forcibly judge it. It is not good for you.

 

From http://topic.csdn.net/u/20110308/19/01ead01d-787f-44e5-bf30-b2795efc4c00.html

 

Related Article

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.