Analysis of three levels of software development, analysis of software development levels
In the morning, I saw Mr. Guo Anding's microblog on Weibo. I also posted a new article on Weibo to write this article.
Fei xiaotong, a late Chinese sociologist, believes that culture should contain three levels: the first level is the tool for production and life, and what kind of utensils and tools are used by the national society to produce and live. For example, Chinese people use chopsticks, Westerners use knives and forks, and Indians use different utensils. Of course, this also includes what is used when the country fights, using foreign guns and cannons, or using large knives and spears? This is the hierarchy of objects. The second is the organizational hierarchy. According to Mr. Fei's definition, including how to organize people in this society, A single individual can be combined, live together in a society, and act together. It contains many things, such as political organizations, religious organizations, production organizations, and national machines; it also contains a hierarchy of values. What do people think is acceptable? What is unacceptable? What's better? What's worse? The values and behavioral choices of different societies are different between good and bad. The three layers are an integral whole.
I personally think that a mature Software Development Organization for enterprise applications should include the following elements if you want to complete a system well: 1. project management; 2. Software Engineering; 3. Reasonable programming languages and frameworks. If an IT Talent Wants to develop in this industry, it needs reverse development from programming linguistics until it can manage a large project.
I. programming languages and frameworks
I often hear this saying and learnProgrammingI am worried that I will eventually become a code worker. I want to learn C #. I am worried that C # can only be a website. I don't want to code it for a lifetime. I am proficient in. NET in my resume.FrameworkAnd so on. Programming Languages and frameworks are just the basis of our programming and are the first level of production tools.
Language is to let the computer understand our ideas and let the computer complete some functions according to our ideas. We need to tell you how to implement the specific functions. In fact, it is our solution. Maybe it's what we call programming ideas and solutions in the business field. Another language is used to solve problems in many fields, especially C #, C, and C ++, therefore, there may be many syntaxes and class libraries, and only a few of them may be used when developing a system. In addition, it may not be better solved by some specialized languages.
The Framework provides some common functions or modules for the project. It does not simplify the complexity of the application, but increases the complexity of the application. Most of the complex work is completed by the system, the content left for developers may not be complex. These frameworks are usually proposed after solving many similar problems, and are not suitable for all situations. When we use a framework, our thinking must be consistent with her and constrained by the framework. However, we do not need to use the framework when we complete some simple applications and make minor changes in the future, the simplest possible solution is the best. In addition, when the functions in the project are complex, the Framework does not help, and sometimes it will help, because the framework provides the most common functions after all, not necessarily meet our specific requirements.
Language is a tool. You should select a good tool during development, but the most important thing is that you need to have a solution to the problem, you need to be able to flexibly run the language tool to express your thoughts. The framework can improve efficiency in most cases, but you still need to select a framework. More importantly, you need to have the ability to organize projects. This capability should be available only after many practical projects are completed. If you just stay at this level, you will be entangled in. net/c # versions. For example, we also use web development under. net, such as asp.net mvc, asp.net webform, and nancyfx. Most people are still struggling to use that framework.
2. Software Engineering
Here we will talk about the software engineering with object-oriented as the guiding ideology. Object-oriented software engineering uses use cases to capture requirements, uses OOA for system analysis, uses OOD for system design, and uses object-oriented language for development. In the process of OOA, you must know how to use the analysis mode, while in the process of OOD, you must understand the design mode. This knowledge can be used flexibly in the continuous accumulation of project experience to achieve a smooth operation. Many people have seen object-oriented programming in their work. Many colleagues who use c # are doing this.
Iii. Project Management
The quality of project management is largely dependent on the success or failure of projects. Without good project management, many project conditions may occur. The following are some examples:
1. Insufficient communication: programmers generally have low communication skills. Under the pressure of both the boss and the customer, many necessary communications cannot be conducted in a timely manner, so that there are always various unpleasant things in the project.
2. unclear responsibilities: Who should be responsible for project delays or other situations? This is a very important issue. However, if the project management is not done well, the responsibility becomes vague. For example, if a test problem occurs, the user only expects the result, but does not know that the result must be carefully accepted by the user. In the case of insufficient communication, if the user is not required to cooperate with the test, the results can be imagined. Programmers urge users to perform tests quickly, but users can't afford time.
3. Difficult to control the progress: Are you ready to cope with the changing needs, laziness of programmers, technical difficulties, and even the departure of various personnel? If you do not have a good schedule, it will make you feel at ease. The most important thing is that the deadline cannot be reached, resulting in project failure.
A programmer can be a Project Manager only step by step after mastering the programming language. My understanding is that the Manager manages the project manager by administrative means, and the Project Manager manages the project (including the project team members) by means of project management ), analysts and architects use software engineering methods for Analysis and Design. programmers use robust and excellent languages and write code according to the design documents. This constitutes a hierarchical relationship for project development.