Some time ago, I wrote a blog about the topic, but I finished, I think I still did not talk about nature, this article is a sequel.
Internet Applications (Web sites or apps), and the essential difference between enterprise applications, should be discussed from the user.
The internet is a strange user, the website for them is self-service system (similar to ATM machine), do not need, and can not be mandatory training for them, such as user registration. So they have to be absolutely retarded and try to reduce the cost of learning.
Enterprise application is the company's employees, with mandatory, and before, or system before the line, generally have training, such as ICBC counter staff that Windows client functions, such as deposits, are through the input "2397" out. User experience is not a priority relative to Internet applications. But there is a point that will be very important, that is, convenience, such as shortcuts, because these applications are generally operating systems, employees are repeated every day to do those things, efficiency is critical.
Special tips, such as Taobao, the front site is the Internet application, for buyers to use products, order modules belong to enterprise applications.
For a business E-commerce company, often both the foreground of the Internet applications, but also the background of the operating system. Because of the high coupling of the front background, such as the foreground order submission and status, it must correspond with the order processing process in the backstage, which makes the project difficult to outsource to the third party software company, and the Internet company usually has its own IT development team. Subcontracting software requires a high level of project management: the development process decoupling + module decoupling. At present, Internet development outsourcing has just started.
User behavior driven vs business process driven
The Internet is User behavior (intention) driven, with randomness, and different users have different browsing habits. For example, when I google something, I usually open the first 10 pages, and then look at each one. Another example is Douban's book Detail page: Book scoring, viewing similar books, reviewing book reviews, adding book reviews, etc., and there is no strict logic or process. The same book interface, booksellers (author), readers, comments, the focus of the page is not the same as the enterprise application of different user roles, login to the system to see the interface is not the same.
Moreover, after the user found the book, his browsing order, the next operation are random. Most likely because the site is slow, he clicked off.
How is this system designed? Core principles: Study the user's access to the page, the user's needs in this scenario, and the behavior generated under this requirement. For example, buy book website, users come in from the net price, the first concern is discount and promotion; If the user inadvertently sees a strange book in the course of the purchase, he will pay attention to the catalogue and evaluation of the book; If the user has added a book to the cart, he will look at "other users have purchased ...".
In fact, enterprise applications are the same, use cases in particular stressed business scenarios (business scene).
Because enterprise applications are generally collaborative systems, collaborative systems involve collaborative processes, that is, workflows, such as order processing processes and patient procedures. Of course, there are a lot of modules are not flow, such as the Electricity bill (Power CRM). But they can basically be abstracted as tables + forms + processes.
The behavior of Internet users is the habit of their own, and enterprise application of user habits, more is training out. Internet user behavior is very unstable, such as 20-year-old young people browsing the web is very impetuous, to more than 30 years old, more calm; in the age of Long smelly web pages, the mouse wheel was sent to use. and enterprise application, interface operation is generally flow-driven, and the process may be 10 years, the user operation is relatively stable, linear.
Interface prototype VS domain model
Whether it's an Internet application or an enterprise application, a little more complex, it's usually an architectural diagram, such as a deployment diagram (perhaps 4+1 Schema View), such as depending on the load, a server does only batch processing (data synchronization and sending mail), and a server only makes search queries.
More complex business systems, we tend to develop use case diagrams, domain model diagrams, and sequence diagrams in the requirements analysis phase. Of course, I have also seen, very simple business system also draw a pile of graphs, and then be thrown into the garbage heap by developers, in fact, an Excel functional requirements table can be solved.
For Internet applications, interfaces are requirements that often do not require modeling business requirements: domain model diagrams and sequence diagrams are largely unavailable. Non-functional requirements, such as performance and scalability, can be summed up in a list of features.
Software Process
Because the outcome of the requirements process is different, the traditional software development approach: from the requirements specification to the detailed design, even the RUP and other iterative processes, it is difficult to copy.
The evolution of the Internet, user demand is very unstable, they are often in the process of improvement, the system on the line, prefer to maintain rather than iterative development. It is estimated that there will be no business component libraries for the Internet area for several years, but it is common in enterprise applications, such as the NetWeaver component library for SAP.
Internet applications, generally using agile process. But this agile process, we tend to move around is very dogmatic, such as Burndown chart and daily standing meeting. In fact, they solve the progress and communication, in essence, risk control. These methodological aspects, in the "professional manager" curriculum, are common sense: time management, communication management, team management and so on.
Agile is an idea, not a methodology, although it ultimately has to be implemented into methodology. What is Sichuan cuisine, what is Northeast food? See, but do we need chili and soy sauce to measure it?
IT staff composition
Enterprise Application projects, there are generally three kinds of roles: technology, demand, management.
Technology: Architect, senior engineer, engineer, designer
Requirements: Demand Analyst
Management: PM, Technical manager TL
I overlooked the role of configuration management and testing.
For Internet projects, the role is similar to the above.
Technology: is also the architect, senior engineer, engineer, but the designer generally than do enterprise application strong one level. Because he needs to deal with the interface style, ease of use, browser compatibility, SEO and so on.
Requirements: Product Manager + Company business staff, may also be equipped with user experience Specialist (interactive designer).
For enterprise applications, biased towards analytical inductive thinking (inward), it only requires you to abstract the software to match the current business, while Internet applications, more of a preference for creative thinking (outward), such as SNS website like, poke button, greatly active user interaction.
Management: PM of Project manager, may be served by Product manager PD, see project scale. There may also be a technical manager TL, responsible for technical staff performance management.
Two different types of personnel, mainly reflected in the demand for personnel. Internet demand, is dug out, enterprise application needs, is combed out. Enterprise applications You can do business research, but Internet applications, who do you research? Like China Mobile's deep pockets, it can take 10 minutes to do a telephone survey, but this is often the choice of questions, the choice means closed. Like the windows in Apple iOS, there is no closure, maximum, scroll bar, these creative features are not possible through user interviews.
Technical framework
Do enterprise application of that set, such as Hibernate, I do not recommend to use on the Internet. The persistence of the Hibernate solution domain model is very effective, while the Internet application is biased towards the page rather than the domain model.
In addition, Internet applications tend to read rather than write operations, which is the reverse of enterprise applications, hibernate primarily to resolve persistence (write).
Hibernate performance, cascading query, basically on the internet is very difficult to have as.
If you use Java, I tend to Spring mvc+spring JDBC, the foreground does urlrewrite. Enterprise application that three-tier architecture, five-tier architecture, in the Internet development, we must be cautious.
When it comes to developing languages, you can choose Java, this and. NET basically does not have any difference, see your team to master which kind of. Because they are very strong in teamwork (statically compiled), there are powerful development tools to standardize team behavior and to be useful for project maintainability.
Of course, if the team is not big, PHP should be preferred, because it operates the database is very simple, efficient and flexible. PHP advantages especially in the deployment, because the Internet application deployment is very frequent, Java deployment Restart the app, the original session all lost, this is not a small problem.
For small languages such as Ruby, too flexible, a large team, it is easy to lose control. I did not live in the project, but once studied, learning, dare not jump from the speech.
All right, just write it here.
In this article, I haven't talked about the responsibilities of product managers in content building. Like E-commerce sites, in the content of this piece of labor costs, such as product pictures and text, after development. Product Manager is a programmatic role in the construction of content.
This article, it is only enlightening, not to mention summary. It is estimated that a few years later, there will be more mature Internet development methodology.