As a programmer, have you ever thought about the simple question, “What is software?” You can close your eyes and let yourself think about it for a moment, and if you find it a little too abstract to answer, here’s my answer.

Software = Program + Data + Documentation + (Service)

Program = data structure + algorithm

After reading these two intuitive formulas, is there a sense of “Oh, I see.”

Here are four more definitions of “software” that are dry but sound:

  • Software is able to complete the scheduled function, achieve the expected performance, can execute the computer instructions;
  • Software is a data structure that allows a program to process appropriate information;
  • Software is the documentation that describes the operation and use of a program;
  • Software is a logical entity, a collection of intellectual products, an abstraction of the physical world, and at the same time a result of human brain intelligence.

In the eyes of many self-righteous to party a, the software is inexpensive, are free to copy, so they often put forward some stringent requirements, some of the software developers are in distress situation: “the simple needs of MAO, you go online to find a ready-made, good ah, a change is not take long before, a month can be done?” Every time I hear something like that, 10,000 grass mud horses gallop through my heart.

Software development is not an easy task and requires the following basic processes:

1) Software planning, determining product positioning and target users. This step needs to be planned and investigated by Party A.

2) Software requirement analysis: Analyze product functions required by Party A according to Party A’s requirements. This step requires the project leader (or product manager) to communicate with Party A.

3) Design according to requirements: including outline design and detailed design. This step needs to be done by the project owner (or product manager) and properly communicated to the developers.

4) Code and run. This step is for developers to do.

5) Test: confirm Party A’s requirements and verify the design and results. Developers need to carry out unit testing, integration testing, and if there is a professional testing team, they need to test whether the overall product meets the requirements and meet the performance requirements from the perspective of Party A and users.

6) Maintenance: to ensure that the software can run in the formal environment, and to correct some bugs, or improve the function, or improve the performance, and keep iterating the software version.

Look, the process of software development is not as easy as party A imagined. If you encounter an unreasonable party A, throw this article to him.

Since the process of software development is difficult and requires time and effort, it is important to follow certain principles, otherwise development can become expensive and the development cycle can drag on for a long time.

Rule 1: Don’t Repeat Yourself.

The literal translation is “Don’t repeat yourself.” There’s another familiar version, “Don’t repeat the wheel.”

As soon as you get started in software development, be sure to put together some of the solutions you’ve written, review them regularly, document them, and refactor them into Swiss Army knives. If you can, open source them to serve more developers.

Having your own library of tools will save you a lot of time the next time you come across a similar need.

In addition, you should be able to leverage mature technology solutions that are already open source in the industry, such as the following.

GitHub and The Code Cloud are two places full of treasure. If you think you can’t build your own wheels, be sure to check out both sites. There are plenty of proven solutions for you to use for free.

For example, if you want a mall system, MarcoZheng’s Mall can be used as a prototype. For example, you want a set of personnel management system, then jiangnan little rain VHR can be directly used as a prototype. (Although recommended many times, but a good friend, one can not recommend too many.)

Rule 2: Keep it simple stupid.

The famous KISS principle, “Keep it simple, Keep It stupid,” is similar to Steve Jobs’ “Stay Hungry, Stay Foolish.”

This principle can also be seen in the design of Apple’s products. At first, mobile phones, such as Nokia smartphones, had many physical buttons, but Apple only had one home button, and all the other virtual buttons replaced it, which completely changed Nokia’s life.

In the process of our software design, do not think too complex, the more simple the better, and so on after the shape of rich effect, otherwise the development cost will become very expensive, software can be stillborn.

You Ain’t Gonna Need It.

Literally translated as “you don’t need it”, this rule states that programmers should not add features until necessary. Ron Jeffries, co-founder of Extreme Programming, once said, “Always implement things when you actually need them, not when you foresee the need for them.”

The project leader (product manager) should adhere to this principle, do not over-disassemble user needs, in the process of product design to add too many functions that they think should be added, because in the use of a software, often 80% of the requests are spent on 20% of the functions.

Many minor features may be needed to make the software better, but the business value of the software is still there without them. The fewer features you have, the shorter the development cycle, and the better chance you have of beating the competition.

Done is better than perfect.

Done is better than perfect because perfect is never Done.

Very simple English sentence, can you understand?

Do not always think of all the functions to do perfect, do perfect and then online, should be in the product has a certain prototype immediately online trial and error, according to user feedback, according to the market demand to consider whether to add some other functions or optimization.

“No one is perfect, gold is not perfect”, some flaws should be allowed to exist, deliberately pursuing perfection is not necessarily a good thing. Jobs wanted a whole screen, but when the technology wasn’t there, he kept a home button.

When we programmers develop software, we should also follow this principle, first to make the function, as for the effect, the user experience, should be postponed, do not always think of perfect, perfect means never complete — there is no best, only better.

Choose the most suitable things.

Choose the most suitable, do not blindly follow fashion. Technology is changing so fast that if you pursue the most cutting-edge technology when developing software, you may turn your product into a guinea pig.

Just like when we talk about a love, do not blindly pursue unattainable, often those around us, willing to accompany us is the best.

Technology selection, suitable for good. If the target users of the product are less than 1,000, there is no need to engage in distribution and big data, otherwise it will be a bit like “snake swallowed elephant”. When it comes to distribution and big data, it’s too late to upgrade.

Liver for three days and three nights, “programmers indispensable soft power” the first edition of a strong hit, pure hand knock, essence, a full 200000 words ran through my programming career for more than a decade, involved in all aspects of the life and work, if you are a lost of college students, or just hired, trust my personal experience, I can give you bring some thinking, Thus set up the correct outlook on life and values.

So how do I get this PDF?

Link: pan.baidu.com/s/1o6MY84my… Password: tx5e

I sincerely hope that this PDF can be of substantial help to you, and I will continue to improve this e-book in the future, please look forward to it.

And, of course, ask for a “like” every day!

Finally, I hope you can follow these 5 principles in the process of software development, after all, you can touch fish for 4 hours a day (manual dog head).