From programmers to software designers

Source: Internet
Author: User
Tags what interface

The development of software industry to today, the Division of labor more and more fine. Programmers as a generic appellation have not been able to define the characteristics and classification of various jobs. Because the various responsibilities in software development are unclear, whether it is the novice who just wrote the code or the veteran who has many years of experience, the general name of the programmer is deducted, which makes many software developers in this field can not develop their own future technical career development path.

In fact, software companies are increasingly aware of the importance of classifying programmers and starting to define jobs more accurately. For programmers engaged in software development, it is necessary to clear their own development direction as soon as possible, and in this direction the accumulation of expertise in the deeper, which will allow you to escape the future direction of confusion as soon as possible. To this end, we specialize in the development of the programmer's series of special planning, will be in-depth discussion of software designers, test engineers, document engineers, project managers, product managers, the development of several roles of the road.

One of the programmer's Growth series

Software architects can build software structures in advance, like architects. Bill Gates is called Microsoft's Chief Software designer, first of all because he is an excellent architect and China needs the same talent.
-Huang, general manager of Microsoft Greater China

from programmers to software designers

On the afternoon of January 13, 2000, the World software giant and Microsoft suddenly held a press conference at the headquarters in Washington State, Redmond, China. Bill Gates ceded Microsoft's CEO position to his longtime partner Steve Ballmer, who retained only the chairman of the board, but also as the "Chief Software Architect" for the new job. Bill Gates said: "In the future I will design and develop new software for the future, while studying and developing Microsoft's overall technology development strategy." This move by Bill Gates has put the title of software designer on a noble veil. From the perspective of the programmer's technical direction, software designers are undoubtedly the pinnacle of career.

Napoleon said "soldiers who do not want to be marshal are not good soldiers", I do not want to be a software designer programmer is not a good programmer. But first you need to understand what a software designer is and how you can become a software designer. Clear these, it is possible to develop to software designers, to create a more brilliant process of life. Based on these ideas, we interviewed the best soft CTO Liao Hengyi, UF software deputy chief Engineer Peng 63 and U8 product general designer Deng appropriate, these Chinese software industry technology leaders from their firsthand talk about the software designers views.

definition of software designer

Software architects include software systems Designers (System Designer) and software architecture designers (Architect). System designers should be familiar with the software technology used in the "system structure" and have good programming skills to become excellent system designers. The responsibility of the system Designer is to correspond the structural model to the implementation model, from concept to implementation period planning and combination model is the standard for determining the quality of software system designers.

And the software Architect is the programmer's final ownership of the technical direction, but also the most sacred link in the growth chain, architectural designers contribute the most. Architecture designers are completely free of language constraints and know the trends of software development. They will develop a new generation of products or plan a new generation of products. Software architecture design is future-oriented. The global large-scale software companies are not many, very important one reason is because the development of software products are lagging behind the market demand, that is, the need to research and development products, rather than anticipate demand, pre-design, so often software design is reasonable, but from the overall point of view but unreasonable. To solve these problems, we should look at the ability of software architect.

Software design can be divided into three levels. The first layer belongs to the standard layer, like the Java EE,. NET Framework design, the second system-level design, such as Delphi development tool is the tool system-level design, and the most widely used is the third layer: application software design. Based on the development of China's software industry, most of the design is based on the application of the architecture design, this article is not specifically identified, referred to the software designers refer to the application software system designers, of course, some of the architect's capabilities.

From the perspective of software development history, software design has undergone many stages. The first is the structural design, but the complexity of the problem by layer decomposition, through the flow chart form the task of gradual refinement; Later, object-oriented design, from the bottom of the object encapsulation, inheritance, polymorphism, then more is to consider code reuse, mainly for classes and objects. Next comes the component design, which is primarily application-oriented. These three types are feature-oriented designs.

Since the advent of EJB and Cobra technology, people have begun to design based on frameworks, which is architecture design. Continue to develop, is based on the design of rules, such as the design based on the module and workflow, when the main consideration of the customer to do more detailed and product openness, scalability, reliability, efficiency issues.

The work of software designers

With the development of large-scale software, the whole software architecture becomes more and more important. Especially when the user needs are not clear, it is necessary to start to do software, how to prevent the delivery of software products and user requirements are very far, this requires software system designers to design properly.

In application software development, software designers play a connecting role, that is, the user needs, based on the application of the problem into the computer system can solve the problem. Design can be divided into functional design and technical system design, but in the actual work, the two are difficult to distinguish between clear.

Peng 63 said that NC (UF large ERP system) through the overall design team to complete the software design. First of all, product definition, specify what the product to do, as well as the relevant market, product cycle and prospects and other issues, the technical direction of the application of the product will also have some description. Next is the overall design, which takes into account technical architecture and application-related issues. Large products like cross-region must choose the B/S architecture. The function nodes in each module also need to be defined, the application components and the description of the data model to be done, such as the formation of the standard platform, how the software is distributed, the application is part of the overall design category. The overall design and subdivision is detailed design. When the detailed design is complete, you write the code.

For software design, Liao Hengyi has its own point of view. He argues that if a software designer is faced with a complex design, it can be difficult for others to do so even if the architecture is designed. Since natural language is not as clear as programming language, he prefers to use code to structure the entire framework and write basic components and interface code. In this way, other programmers can easily reuse their own base components and use the reserved interface to add complete code. As a software designer, he is able to provide a platform-based development environment that allows other programmers to easily expand their development. This not only reduces the difficulty of development, but also saves a lot of repetitive work. Multiplexing modules can also improve the stability of the system, because this is the code that has been tested many times.

There are also many roles around software designers, and application experts understand the needs of applications more deeply. There are also experts in the technology platform, because although the designers have a certain understanding of the technology platform, but also for the details of the content to consult the technical platform experts, but also require the programmer to prototype and verify, through feedback and evaluation of continuous improvement. End-user feedback is also important to software designers.

Requirements for software designers

As the top-level role in application software development, the ability of software designers is more demanding, in addition to the ability to have stronger programming skills, but also need to understand the system structure, mainstream software technology and software trends, but also have considerable expertise.

Years of programming experience: both in the field of expertise and experience in software engineering. For an architecture team, these quality requirements can be individually borne by each team member, but at least one architect can grasp the overall project. As with any industry, experience is the most important. Software design is not an armchair, a software designer first if very good programmer. Software designers do not have any differences between the tools and ordinary programmers when programming, but the depth of use is absolutely different. Liao Hengyi spent three days to write a process of processing the table, because the thinking is very clever, the code is less than 1000 lines or so, but someone wrote just draw the table unit code there are more than 2000 lines, this is the experience gap. When doing software design, the affirmation requirement is can be implemented and testable, if has not done the programmer, cannot guarantee that this design is can implement and carry on the test.

Abstract ability: When a programmer has just written a program, it simply writes code to solve a feature. As more and more programs are written, he has more and more understanding of the application he has made. Different enterprises have different needs, but put these enterprises together to see, you will find some of their similarities. Refining these commonalities is the process of abstraction. The abstraction of the common form of the model can be included in the needs of these enterprises, which is to do general software must take a step.

What are the things that can be abstracted? Deng is suitable for example: The Enterprise management software has a lot of internal document flow, note delivery has its own rules, to their internal relations more flexible organization, can only be the process as a management object, but not the bill as a management object, because the bill is just a carrier. In this way, the flexibility of the entire system will be stronger, the product can be suitable for different enterprises, so that enterprises can be flexible control, to achieve the best benefits.

Liao Hengyi is the embodiment of the abstraction of the full. His entire management process is abstracted into a continuous matrix operation, and the software itself is a multiplier and a decomposition device for matrix operations. Other programmers simply need to abstract the specific business into an XML-expressed matrix, put it into this matrix, and use the multiplier to do the math.

Object-Oriented thinking: Object-oriented is one of the greatest innovations since software development, which is the pursuit of every programmer, but whether the idea of object-oriented is really mastered, which needs to be explored. Object-oriented is not limited by development tools and languages. Many programmers are actually writing C code when they write object-oriented code in C + +. Even using a completely object-oriented language like C # to write out or process a program.

Many times learning object-oriented methods of drawing on the screen, new shapes can be transformed from a standard shape to learn the concept of inheritance. But Liao Hengyi that this is far from enough, because on-screen objects are independent of each other and are discrete relationships that have no effect. To really learn object-oriented, you need to learn to draw a table. Tables are made up of rows, which are also made up of columns, with separate cells in rows. As a line, the whole to operate the lattice, as a column, but also to manipulate the lattice, in the end is the unit of action or as a unit to operate the cell. If you can figure this out, it shows that you have a deep understanding of the object opposite. Liao Hengyi smiled and said: "Some programmers in the program to all things are inherited together, when Grandpa moved, grandson followed the jump, grandson moved, Grandpa followed." In fact, write object-oriented code, certainly do not use too much inheritance. The key is how to deliver the message and generate the action, and consider what interface between the modules to contact, rather than inherit. ”

Object-oriented can be applied in a wide range of fields. Not only in the process of writing code to take into account object-oriented, in fact, in the design and analysis phase can also be used in the object-oriented approach.

Willing to abandon: software design is a gradual process, through constant wall, constantly adjusted to improve. To make a breakthrough, you need to be willing to abandon. "Normally, the first version of the program I wrote was to be thrown away," Liao Hengyi said. For a function, I come up to write, do not design, what do not want, write to the end, they are bored, and then remove the code and then re-write, these brain have a lot of experience and impression, after the second version, will throw away, continue to write the third version of the code. The logical architecture and relationship of the program is naturally clear. Only with this constant elimination of their former things can grow particularly fast, it is like shelling, but this needs to be strict with their own requirements, or else will return to the original old ways. "A lot of people are willing to throw away their code, often is constantly modified, and finally into a vicious cycle." Of course, this kind of abandonment also has the inheritance discards, the different period product structure also has the continuity, not an architecture will completely replace the front structure, the good thing can still inherit, like Microsoft's. NET architecture is developed from the DNA architecture.

Understanding and Breakthrough: the development of programmer technology is through learning skills to grow, one is to grow through the understanding of the mind, the latter is more important. If you can not comprehend the idea of development, only mastered the skills, once changed the platform and language, but also from the beginning to learn, so many people in the transformation process has failed. and mastered the idea of programming, automatically moved past. Liao Hengyi said: "The language itself has never caused me any obstacles, the language does not have any essential differences, like martial arts, the blade can also be used as a hammer." ”

Even small software can exercise breakthrough programming thinking. Liao Hengyi An example of his own experience in writing Pinyin Gaga. The input method architecture and process is simple, with a simple interface between the native database and the epigenetic database. However, when dealing with the backspace, you will find that this is a very complex problem, if the usual way to consider the various occurrences, the program is almost impossible to write down. In fact, the method is very simple, just make a positive editor, define what kind of operation the good one letter produces, what kind of operation the two letters produce, what kind of operation a string produces, and abstract what kind of operation the background of each operation corresponds to. Delete a letter, nothing more than a string to remove one, to re-process it again. The problem becomes very simple. Summed up a basic design principles and ideas, that is, program design do not backtrack, otherwise it will collapse, this is the head touch the wall how many times before you understand. So even though the program has been written for more than 10 years, it is still not dare to call the full understanding of software design, but has been looking for this feeling. ”

Non-software knowledge: Mention software designers, people like the architect to do the comparison, indeed these two industries have a lot of similarities. Ancient Roman architect Vitruvius said: "The ideal architect should be both a writer and a digital home, he should also be proficient in history, keen on philosophical research, proficient in music, knowledge of medicine, with legal attainments, well versed in astronomy and astronomical calculations." The same is true of software designers.

Liao Hengyi says, "all the things that make people think, everything that's beautiful will appeal to me, and I appreciate what's in every industry." Even including the Zhouyi and the five elements, he felt that the development of software has a great help. "Zhouyi Five elements of a set of self-complete operating system structure, it also has its own object and role relationship." The various objects are not independent, and the derived relationship makes the whole system work more naturally. I also use this idea when I am programming, and try to find the internal relationship in the whole program. ”

Deng also had his own opinion, and he felt that the software system was more like a machine than a building. Because once the building is finished, it seldom changes its structure, but the machine is not the same, it is a system that can be modified to change the function continuously. "Now machinery manufacturing is often broken down into multiple components, production, only to the end of the sale, only according to the needs of users of the various components splicing together to produce different functions, which is called delayed manufacturing. This idea is often used in our software development. We have also developed a number of flexible visual components, when implemented in accordance with the needs of users to assemble, not only to meet the individual needs of customers, but also reduce the development costs. The Erb module in U8 software to provide the interface program of third-party software, in order to ensure the stability and the continuity of the next generation of products, we have done some modules, can register the extension function, much like the plug-in machinery. ”

developing to Software designers

Of course, not every programmer is suited to the role of a software designer. In addition to their own efforts, but also with the environment has a great relationship, if only a few people of small companies, the requirements of software design is not clear, nature will not be able to get exercise. Deng is appropriate to say that his early exposure to the software development environment are relatively large-scale UNIX-based database environment, from a lot of things learned, benefiting Philip.

Peng 63 said that in the development of such a large software company, programmer growth is very fast. An ordinary programmer, after the code is written many, can first become a master programmer. In addition to his strong programming skills, he has a certain design capability in addition to being a leading role in a development team. The next step is to get an in-depth look at specific applications. In addition to object-oriented programming must have, the specific application of the in-depth understanding is also essential, otherwise unable to design products. To continue to develop, the next task is to learn more about technical standards.

However, even if you are an ordinary programmer, have no opportunity to participate in large-scale software development projects, but also in the development of the software designer's thinking close to improve their understanding of software development. A playback software, different users of the interface has different needs, how to meet different needs are also required to design, and the playback software for different formats of file support is also to be considered, especially for the future format reserved interfaces, these problems need to be considered in the architecture. Regardless of the size of the software, you can apply the design pattern of things.

Additional Information

News: October 18, Microsoft chairman and Chief Software designer Bill Gates announced the "Architect 2000 Senior Software development Manager Training Program" project aimed at cultivating 2000 Chinese software masters. Microsoft launched the "Architect 2000 senior Software Development Supervisor Training Program" to develop software architecture high-level talent for the purpose. The program will take one year to develop 2000 Chinese software architects by partnering with 11 software development parks in China to provide the chief technical officer of China's leading software companies with the principles, development skills and latest technology training.

Wangjingru, manager of the Development and Cooperation Department of Microsoft (China) company, said the project mainly addresses the problem that China's software product is not high enough and the Software development project management is not high enough. The program takes one year to train managers in China's leading software companies by partnering with 11 of China's software development parks. It is selected for training from independent software developers, system integrators, and large software companies, and for those 3 of companies that choose to be assigned to the technology executives.

"Similar training is not currently being carried out in other developing countries. Similar training abroad, the trainees pay $ thousands of each, and the training in China is free of tuition. Participants to participate in the development of seminars are also free of charge, only 1500 yuan to pay the information fee. "Wangjingru said.

So far, Microsoft has invested 10 million of dollars in this training to invite teachers, build technical support and so on, as well as make a dedicated website. "Of course, Microsoft's investment also includes its own core technology, which is priceless. ”

Insiders said: Microsoft's "Architect 2000 senior Software development Manager Training program" is not really to develop software architects, but to train the use of Microsoft. NET architecture of advanced systems analysts. From the student's feedback, the content of the course is nothing more than the recent Microsoft's flagship Web-based enterprise solution and its development of rookie. NET. The specific content includes three aspects: Unified, Location-independent data Access standard xml-.net one of the core, Web service-.net Application Service core, the purpose of. NET strategy.

This article is written here, and does not end, as one of the programmer growth Series, we want to be able to truly interact with you, to talk about your views and experiences, to publish your views, let us work together for the programmer's career growth suggestions. (

From programmers to software designers

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.