Build client software with Internet thinking
It was not long before I joined iQiYi, but I felt shocked. After more than a dozen years of competition in foreign companies, this year, we finally have the opportunity to enter a top Internet company in China, which truly has a different experience. However, today I do not want to talk about the difference between working in foreign companies and domestic enterprises. Currently, I am responsible for the development of PC client software for "iQiYi PPS audio and video. Some people may have questions: How are we still working on PC software? Aren't everyone switching to mobile development? However, you need to understand that although the PC industry is no longer popular, the full size of PC is still huge, and PC has its own irreplaceable value. PC software will continue to be developed, what I want to talk about today is how to use Internet thinking to do a good job of client software.
When talking about the Internet, you will naturally think of websites. By the way, iQiYi started its website. Today, iQiYi's services include PCs, MAC, mobile phones, tablets, TVs, set-top boxes, and other terminals .) I think everyone knows that the website and client software have their own advantages and disadvantages. For example, the website can run on any device's browser, without user installation or upgrading, in contrast, native client software runs faster and can make full use of local resources to bring more powerful and dazzling features to users. Read Jeff Atwood's blog article: will the App Replace the website ?) Our client software is written in C ++, so we don't have to say much about the performance. Our company's Internet genes also prompted us to integrate the many advantages of the website into the client software.
Let's talk about the R & D process first. The biggest feature of the Internet industry is the rapid change. We need to update and quickly iterate and try and make mistakes. The website adopts this development mode, so can our client software development. We have adopted the agile Scrum development process-one iteration every two weeks and one release every two weeks. We call it "small steps and fast run"-to reduce major functions, implement them in stages, and pursue micro-innovation. Compare the traditional software development model: first develop a detailed and lengthy PRD, and then easily 1 ~ 3 months or even half a year) development cycle, coupled with a longer period of stability to fix enough bugs, when the product is released, the market environment has long been different ...... The Internet environment cannot be so slow!
As mentioned above, a quick trial and error occurs. So how can we try it? How do we know if we are right or wrong? This depends on data! Websites have their inherent advantages and can easily collect such data: How long have users stayed on the website, what webpages they clicked, And what buttons they clicked on the webpage, what browser does a user use, how many people are online at the same time, and how long the access peak occurs. We also added similar Shipping Code to the client. We also have the support of a strong data statistics and analysis team, allowing us to understand the client software performance and user behavior. It is easy for us to know the startup time and crash rate of the client software, what videos the user has watched on our client, and whether there is a choppy video or not. When we try to make a new feature, but are not sure whether the user will like it, we can also release this version through a small channel, and then observe various statistical data in the background, this helps us decide whether to continue developing this function or what improvements should be made in subsequent iterations.
We release a version every two weeks. We also know that the version we send is like a splash of water, and it is also a burden we must carry in the future. The client version has been fragmented for a long time. Tens of millions of users have dozens of versions. Although we can deliver the latest client version to the user through the upgrade mechanism provided by the software, for various reasons, the new version can achieve better coverage than 90%, this number is definitely less than 100%. However, websites can do this. After the new features are added to the website, once deployed, they can be used by all users around the world. The question is, how can we achieve the flexibility like web pages on the client? Our practice is to use HTML/JavaScript to implement the features that do not have high performance requirements and may be frequently adjusted, and open these webpages using embedded browsers on the client; for those with high performance requirements, we firmly adopt our powerful C ++ skin library to localize webpages. A good example is iQiYi film Daquan http://v.iqiyi.com), on the basis of maintaining collaboration with the website, we let it show more excellent performance in the client.
In terms of function implementation, we always maintain a kind of consciousness: Do not write the business logic in the client as much as possible. Otherwise, once the business logic changes, we must modify the client code, and then perform a full-network upgrade. This takes a long time, and the new version cannot overwrite 100%. The result is relatively passive. Here is an example of VIP membership. On the client side, we need to promote different membership packages for the types of currently logged-on users. The specific business logic is: If you are currently a common member, click url1 on the purchase page of the silver package. If you are a silver Member, click url2 on the golden package page. If you are a gold member, click url3 on the platinum package page ). Some experienced developers directly implement the above logic in the client software, as shown on the left. Unfortunately, once the promotion logic of the VIP membership package changes, for example, if you want to promote the platinum package to all users, it will be miserable! The more flexible implementation method should be like in the middle right side, the client only calls a relatively fixed url and carries the necessary parameters), and the specific business logic is implemented on the server side.
Of course, the above is just a small example. To make the client flexible enough to meet business needs without releasing a new version), we have added cloud configuration to many features. As long as we find that the user experience of some features is not ideal, we can adjust the control parameters at any time, or even close them completely. We always remember that what we are doing is not a pure, isolated client software-what we provide is an Internet service. Because of this, our client software also supports editing operations to release current events or topics, hot recommendations, fast online or offline programs in a timely manner, and flexible ad policy control.
Does PC software really fall? Not actually! Maybe we just need to adapt to the trend and change our way of thinking. We believe that every terminal is important as long as a user exists. Therefore, even if there is no spotlight, flowers or applause, we are still persistently striving to make good products and serve our users wholeheartedly!