Xu Jing 2004-7-21
---- Online often see what is software master discussions can be described as more hummails, all of them are, it is good. Some say that it will be a master with VC , and some are familiar with Win32 or Linux is a master. More people think that familiarity and even CPU operations are masters (any people who continue to go on, some people say that digital circuits are software masters ...).
---- This is much more, it is inevitable to write something, and publish your own opinion.
---- First, software design is a very large topic, covering the surface is particularly wide. Programming from the most underlying hardware to the top-level application field (eg, ERP), each aspects are aspects of programming design. The range must have a hierarchical concept. Every layer has a key issue that should be considered. You don't have to consider the following levels and this level of things, otherwise, from the CPU's operating principle, how to consider the system such as ERP is simply the heavens. In order to have a segment of the master, it should define a master concept with each layer. There is no standard to assess, and the standard for assessment is of course the core requirements of each layer. If the design of the design comparison level, if it is very proficient in large ERP software, he cannot be a master, and it should be proficient in ERP and there is no relationship with his programming. In contrast, the person designed ERP, he is proficient in assembly language and his programming has no relationship.
---- From the bottom to the highest layer is a process that gradually gets rid of specific operating environment and hardware concepts, his design focus has changed. The bottom layer is closely related to hardware, as long as you are very familiar with the principle of hardware, you can make a good thing.
Relatively speaking, the complexity of its algorithm is simpler than the high-level software. At the highest level, the specific hardware environment is not considered, the only thing to consider is the specific application logic.
May be divided into 3 floors to discuss, of course, this can still be subdivided.
Hardware layers, development and hardware-related program software and hardware combined layers, you need to take into account related hardware interfaces, you need to implement user logic. Application layer, you have been completely detached from hardware, just consider your application.
---- First let's take a look at the first floor, that is, the hardware related layer. Because it is dealing with the specific hardware, it is only a representation of hardware logic. For a few more, let you describe a logic in a language, and its core is of course logic itself. If the logic is very clear, as long as you don't have a problem, you can basically express it clearly (of course, there is a good expression ability) It will express very good, but the focus is the logic itself). People who are engaged in this area must clarify the hardware work. If each of them can understand very thorough, I believe that this development can be called experts. It belongs to this aspect: the development of single chip, PLC and so on. ---- Layer 2: Software and hardware binding layer. Although hardware is also involved, you don't need to be particularly familiar with hardware work. Just know how to use the programming interface provided by the hardware. Second, it is necessary to know how the user program is written, it is a normal application, and if you need to program the program or network, you need to know the relevant knowledge. This development personnel can be described as a compound talent. ---- The third floor, because there is no need to consider the specific hardware, this is the design capacity to be raised to a certain position. You need such an capability, a large software with millions of row source code has you how to design. A distributed system for data security requirements can ensure security of their data, and the like. If you let you design a software in a industry, you are not familiar with this industry. ---- The difficulty of entry every layer is different, the more it is, the less the bottom layer is not easy to get started. Because thinking is to biased towards specific hardware, and you can't see it. The more the high-rise is, and the problem is used to use the usual logic to think about the problem, so it is easy to understand. But the difficulty of entry cannot represent the degree of difficulty to become master. The first floor must have a thorough understanding of something that can't be invisible. I have very few people in this regard. The second layer is very complicated, usually doing both hardware and develop software such as VC , it is very familiar, at least I have seen, there is a software hardware interface to do, software almost every day Can see errors! When you arrive at the third floor, you have to be more patient, what project management, business, software design, database design, and almost all algorithms you have to be proficient. The wide range of coverage is covered. ---- Online often see some people based on development tools as the judgment, limited to the space, I only summarize the central ideology: using VB is the low hand, using C is the master. Question: Do you have seen thousand ERP software developed with VB? How many people who will vc have such strong design capabilities? Don't look at each software company, how many do you really do it? Talents who have the design capabilities in this area can be, others have good office. Brushes, I believe that there is not much software company in the whole day after a few years. ---- Specific to each developer, as long as you do this level of work. Of course, as a learning, it will be problematic in your software. For example, a lot of software likes to be closely integrated with the operating system, thinking that this will be level. On the one hand, if there is anything, if there is this need, can another? From the software structure, the operating system is a level. The software is based on this level. You only need to use the interface provided by the operating system, unless you have to have, for example, you want to directly control the hardware.