How to become a qualified programmer in the workplace for 10 years (I)

Source: Internet
Author: User
How can I define the qualification here? At least, the qualification I mentioned here does not mean "excellent", because if I use "excellent" as the title, it means to become a "flawless" person. Program First of all, I am not such a person, so I cannot give any suggestions. Therefore, the definition I gave "qualified" is: meeting the needs of enterprises, having a good mentality, focusing on the overall situation, cooperating with the team, and developing products that meet the needs, that's enough. It can be seen from this that I am not a perfectionist, but actually a real person. It just sounds like my practice is moderate.
If you agree to my point of view after passing a definition, you can take a look at the following methods to help you achieve this "Realm". If you do not like my point of view, welcome to smash bricks (zrsoftcn@yahoo.com.cn ).
This article does not include a line Code But it is worth reading.
1. Great Interest
Writing a program is the same as other things. It is best to do it with interest. Don't be too reluctant. People have different points of interest. If you only treat it as a tool for eating, it may be very tired, for example, after so many years of development, I have not lost any interest in development. I have been paying attention to new technologies and constantly trying them, to achieve this, you must be interested in providing support later.
How can we be interested? First, you need to know what programs are doing, what I can do with them, and what benefits it can bring to others. As early as when I went to college, a friend from my hometown asked me when I went home. What did you learn? I mentioned computers and wrote programs. Then he asked, what can I do when I write a program? I started to think about what I thought of. I can calculate 1 + 1 = 2. I can calculate the number of old cows, the number of calves, and the number of towers, but what are the functions of the program? At that time, I really asked me, and I don't know what the purpose of writing a program is. That is my understanding of the program at school.
Later, I got a lot better. I helped people write software during my school period. Some of them were very useful. Later I went on to work and wrote programs every day, I also know that the program can control the space shuttle, and the satellite can do anything. Of course, these scopes are too large. They are not our processing scope. They are simple. They can be used for financial computerization, ERP, mini games, and many other things.
Programmers have learned how to write programs. I think that apart from working, they can also reflect their expertise in their own lives. For example, they are already fathers at home, you can write some small software for your child, help him learn, and help him play games. It's very interesting. Sometimes it doesn't take a lot of effort, but it delivers good results. Of course, you cannot expect the length of your work's life cycle, because your child's mind will change quickly.
In short, I personally think that writing programs should be written with interest, and the mind should be put into it. Maybe we were still early at that time, not the same as now. Now I have seen many little programmers who write programs for a job and cannot see much interest in them, all write programs to write programs. This leads to a bad mentality and a different sense of responsibility. Of course, life is the most important thing.
2. perfectionist
What design, development, testing, and other processes do a slightly larger system usually take? Generally, these roles are separated. The designer first designs a XXX system, the developer will perform a YYY test for the tester. Designers should generally understand the development, so that they can be designed to be implemented. If the design personnel are from the sky, then developers may not understand their books. Although the design is perfect, if it cannot be implemented, it is equal to zero.
I used to have a colleague who is a technical engineer. He is a good technical engineer and cannot be a good employee. We all admire him. In our company, any problem that cannot be solved can be solved by finding him. Later, we made a project and used the concept of hierarchy. He was responsible for the design of the business layer. At that time, he thought that the design was very good and that it could not be better, okay, you can become a specialized product, because he began to design his own script parser, just like VBScript, but the syntax is his own, similar to ASP, but not exactly the same, the presentation layer must write programs according to its syntax, and then its intermediate layer is responsible for parsing. At first, some for/while if else and other syntaxes were added, and later we found that there were other syntaxes to be processed, because without these syntaxes, we could not implement all the services, so I added and added it all the time until one day, and he suddenly found out that if I used ASP, I would not have to deal with this! So I finally switched to Asp.net for development. The preliminary design and development were all unnecessary. This is an embodiment of the pursuit of perfection.

In China, many small software enterprises usually do it when they get the project, and close the door when the project is finished. Unlike other wealthy enterprises such as Microsoft, we do not have enough funds to do research, if we keep pursuing perfection, it may affect the entire company's life. Although I also think this research is necessary for a nation, let us save it and talk about it later.
3. configurability
For users, as long as they can run the program, as long as they can have results, and the results are correct, they can accept the time they take, and are generally considered to pass the customs, it is generally not very difficult during acceptance. However, considering that they may make certain changes to the program as the business changes, the program will be tested, can your program quickly adapt to business changes? What adjustments should the program make for this business change? There may be the following possibilities:
The program can no longer be modified, and all of them are discarded and re-developed.
Find the developers, implement some business changes in the program, re-compile and re-release
Adjust the program configuration and use it directly without compiling the program.

When programming is relatively "simple", the direction of changes to the needs of business users may not be too certain, so the first and second situations may occur, of course, sometimes it is also caused by unclear requirements of the business initiator. Sometimes they will clearly say, "That's all, it's impossible to modify it." However, they generally won't subscribe to it later. In the first two cases, developers cannot leave the program, so in the actual operation process, the system may be delayed, or even more terrible.
In the third case, it is more polite to the application system. The staff of the business department can adjust their configurations after appropriate training to fully adapt to new requirements.
For example, a small program for Data Synchronization needs to export data from one database and put it into another database. The source database may be access, FOXBASE, and the target database may be MSSQL, oracle and database fields may also change all the time. In this case, you must consider the configuration flexibility and make sure that the configuration file can be fully written rather than in the code. I am in the company of Party A. Some companies once developed software for us. I repeatedly told him to do the configuration, but they just didn't listen, which caused a lot of trouble in the future.
Configuration can be supported in many ways. I remember that when I first used VB, I seemed to be used to using INI files because Ms has a dedicated API to read and write INI, which is very efficient; later, I began to develop XML, as if ini was not very popular. We began to parse XML in succession. I heard that the efficiency of the content was lower than that of INI, but it didn't matter, generally, it is okay to read it when the system is loaded. Another way is to store the configuration information in the database. The database has some advantages. Of course, it doesn't matter which one is better than XML. You can choose one based on your preferences and actual conditions, for example, to store the database connection information, you have not connected to the database yet. Of course, you have to write it in XML and other external files.
Configuration files also have certain security requirements. Generally, some passwords are stored in configuration files. If you store them in plain text, this may cause some risks. I generally use two-way encryption. Algorithm When using it, you can solve the problem by yourself. The algorithm is not necessarily very strict. It's almost enough, because the system we do is not too confidential. However, I have seen some large systems, such as oracleebs. Their configuration files directly store plaintext passwords and do not encrypt them. They also know that, it is quite difficult for anyone to find this configuration file, and it is very hidden. In short, I think the flexibility of configuration should be considered in the initial stage of program design, which will be very good for later maintenance.
In addition, for o/R Mapping, many problems do not need to be considered when developing simple and dedicated programs. The design of such programs is relatively "standard, as long as the current environment can be met, there may be no adjustments in 100. For such cases, I don't think it is necessary to design too complicated and it can be used. However, for most cases, there will be more things to consider when you want to make products. For example, if we build a membership system, members may have many attributes, such as "member number", "password", and "name", which may be commonly used, then, when your system is promoted to different companies or even different industries, you will find that the requirements for membership management are not exactly the same, some require birthdays, some require ID cards, and some require information about wives and children. In this case, it involves how the storage fields in the Database correspond to your program, that is, O/R Mapping. I will take C # as an example, I have heard that there are many excellent frameworks in this field in Java, and I am not qualified to comment on them. For this o/R Mapping implementation, I think there are two ways:
Implement one-to-one correspondence between objects and database fields using class attributes
More flexible matching

For the first method, No matter what fields are added to the database, you need to modify the corresponding program immediately and add new attributes to the class to implement one-to-one correspondence with the database, it involves code re-compilation and release, but I heard that some of the better tools and methods of code generation can be implemented quickly. But I still feel a little trouble. The advantage of this method is obviously that it is "Polite" to customers. The system they use is completely customized for them. What they see is exactly what they need, generally, errors may decrease during secondary development. That is to say, it is a good way to leave the difficulty to the developer and the benefits to the customer as long as the customer does not make changes in the future.
The second method is also a common method. In the class, set a general properties attribute. During the system reading process, read all the fields related to user attributes into this large set. It is a hashtable. When using this field, you only need to press properties ["name, it can be seen that no matter how the customization is implemented, this method can be implemented without changing the code.
The above mapping information is stored in XML or databases, and is not very important. It is important to implement this idea.
4. International Applications
At present, most of the development may be run locally in China, but there are also some issues that need to be considered internationalization.
I heard that internationalization was annoying N years ago. At that time, I didn't need to worry about such things. Later, it seemed like Unicode, utf8, and other encodings solved this problem. Now, items added in vs2010 are directly stored in utf8 format. In vs2003, it is still in gb2312 format. If not, just save it by yourself.
For multi-language program detection, it is best to install and test in the operating system of the local language, test only in Chinese or English environment, theoretically no problem, however, sometimes there may be deviations.
When I first used C ++ to develop a program, what resource file should I have and put all the strings in that place? So many of them are written in Chinese, translate the file directly.

I have also seen some companies make PHP and use resource packages for multiple languages. Then I will try it and recompile it, i'm not sure if all major companies use this language pack to implement multiple languages, but it certainly has some advantages and advantages.
In the form of a Language Pack, all language information must be downloaded to the client and parsed by the client. If the Language Pack needs to be updated, the client must update and download each time, this method is characterized by high speed, one download, and offline for life. However, if the system we developed is not too healthy and requires frequent updates, it will be quite troublesome.
I often use another method, that is, all the language translation materials are stored on the server and generally stored in the database. After the client is online, the Language Pack information is read from the database first, it is used directly in the memory and does not need to be downloaded locally. This ensures that the information is not inaccurate due to a download error. Some people think that every download is a waste of time. In fact, a general system can store 10 K of language information, which is already very large (because my system is not big, it is generally a simple text such as menus and buttons ). This bandwidth can be completed in an instant online.
To adapt to multiple languages, I have created a language list in the system to indicate the Supported languages. You can select either the client or IE.
In terms of database storage, there is such an example, such as product: there are Chinese names and English names, some companies do the system is to add two fields, respectively, to store Chinese and English, and then to traditional Chinese, I would like to add another field. I said that we need support from more than N languages around the world. What do you do? Indeed, in this case, it will not work. Bilingual is not equal to multi-language support. For multi-language support, you should find a solution on "data rows" instead of "data columns", that is, to store multiple records separately, so that you can retrieve the corresponding records based on the language.
For multiple languages, I believe everyone has a high skill. As long as they are applicable to their own projects, they will pass.

Unfinished
I'm aicken (Li Ming). Please follow my next article.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.