Graduated 10 years, I have something to say

 

 

Only the details you can determine success or failure?


2019 soon passed, and suddenly realized he graduated in 2009, this year has been full over the past 10 years. Really Time flies, time flies ah.

From freshman to learn C language, he began writing practice with the C language, now also considered to write code for 14 years.

I remember just work, content of discussion with table layout or use it div layout, look at these things 10 years later, it may be that you are going to laugh.

Yes ah, iterative, rise and demise of 10 years, change is not just technology. There are people, including himself, for a lot of cognitive things, views or ideas have changed.

Just work, always like attention to detail, knowledge which will in turn learn to think or write some pretty good code for their own complacency.

Today, 10 years later, I am more inclined to think the whole thing up or macro or a thing, even to study its causes, process changes or trends, and then try to guess its future from.

This is not to say that I completely gave up the pursuit of detail. In fact, viewed from the macro sometimes more conducive to the understanding of the details. Details at the crucial moment is still very important, after all, there is a saying "details determine success or failure.

Whether all walks of life, with the passage of time, the only constant is change, change is nothing more than some violent, some gentle change nothing.

so the question is, "macro" and "detail" in the face of change, which can adhere to the longer, slower or change some?

If the "macro" as the overall framework or structure, the "details" to see as is the implementation or approach, you will give priority attention to this?

detail can determine success or failure? Yes, of course, can be but is as much about the fate of the macro, and even influence the future direction.

in a sense, macro the attention should be higher, but at least be fair and detail because the "macro" and usually corresponds to the overall structure, the "details" and generally correspond to local treatment.

Once the overall structure finalized late to change up a lot of trouble, because too many aspects involved. However, topical treatment involving a lesser extent, replace the post-processing method should be relatively easy.

Either from theory or practice, the implementation details are the most frequent change. So we should do is put a good overall design, implementation details of a place depends on the actual situation.

But a lot of people always fall to pay attention to details, so details occupies most of his thinking, often overlooked from the macro to grasp the overall, or in this above the effort is not enough.


Program = algorithm + data structure


as long as a computer science major, or halfway career change but love of learning, we know that such a formula, program = data structure + algorithm. Obviously, this formula was proposed early foreigner, but basically all are accepted.

I have also seen a foreigner before said, in both data structures and algorithms, data structures to be more important than others, its importance is greater than the algorithm. I personally agree with this view.

For example, there is such a topic, give you a single chain, output to reverse it. After getting this problem, no matter how ultimately, at least going to think about it.

Now to change the subject, give you a doubly linked list, it can also reverse output. After getting this problem, simply do not want to, you can output directly from the tail forward.

It can be seen after the data structure changed, the realization suddenly a lot simpler. Therefore, the importance of data structures is greater than the algorithm. It can be said that the data structure determines the algorithm.

As is often said, although roads lead to Rome, but some people born in Rome. Even if you sort algorithm again soon, can not be faster than has been ordered simply do not sorted. Of course, this is the use of extreme thinking.

Speaking of data structures, many people first reaction is that the data structure of the course in the University of talking about something, linear table ah, the tree ah, ah, etc. These map.

Speaking of algorithms, many people certainly believe that those, Scripture says, ah bubble sort, quick sort ah, ah binary search, depth-first / breadth-first traversal ah, etc. these.

How should I say, these are actually very academic argument, if a student or just to work not long, can be understood.

Once the actual application, the equivalent of entering the engineering, from academic circles, many things have to try another position or angle to look at.

So the data structure refers to the storage or describe how the data interface of our own definition of ah, ah like these call data structures, not just these are the List or Map.

Similarly, the algorithm refers to the solution to the problem, we usually write some code can also be called algorithms, not just like a sorting algorithm, hash algorithm, or algorithms for these elections is.

Well, now you can think about the program code we write, most of them are what look like? Data is not defined, data acquisition, data transfer, operation data, data storage thing.

Class definition data is acquired or the data is submitted to a database query from the client, transmitting data transfer protocol is the local or remote method invocation when the parameter data is operation data of various operation / conversion / sorting, storing data is a class object or an object database or other container.

Data and definition data that is stored in a data structure that way, the operation data is algorithm to die, so that data structures = programs + algorithms.

If the data structure has been carefully designed, then the algorithm will become very simple, if we deal with access and transfer of data is good, and that final written procedures, it must be great code.

Do not believe try it for yourself.


+ Software = logical abstraction implement reasonable


procedures discrete codes may not make much sense, but put them together to form a software stack has a certain function will produce some value. Therefore, from the microscopic point of view, the software is a bunch of code.

From a macro point of view, the software is divided into system software, application software and middleware. Domestic system software should do less, most of them are a number of applications and middleware. But no matter what software, ultimately running on the computer.

So the computer is how come it? Not long out of the earth, nor the knot out of the tree, but not the evolution of a species. It is a great invention of mankind, it is abstracted, but logical. Therefore, in the computer world, logic and abstract occupy a very important position.

Then the software is how come it? May be the product team will conduct market research, functional planning, interface design and interaction design. Strictly speaking, these can only be called a prototype or demand. Only when to proceed and implement related work, it is the real start of the software.

From a procedural perspective, software implementation begins at the logical abstraction, either longitudinal or transverse sub-module layered, or molecular systems, but is only different abstraction Methods. This logical abstraction is very, very important, those who survive a long time in the software, are well-abstract logic.

Because over time, all things are changing, good abstract more resistant to change, or can adapt to change, so time will live longer.

Logical abstraction is a very complex issue, which involves a lot of thought or philosophy to weigh the issue. For example, the high degree of automation software, customization is not strong, not easy to meet the individual needs of users. Highly customizable software that is not necessarily a high degree of automation, can cause users to get started is difficult, not easy to popularize.

 

Let us think about Hibernate's demise and the rise of Mybatis, it is greater than the result of a customized automated. Linux as a server operating system, you need someone to maintain. Windows used daily office system, everyone will use. Tablet PC into the household, even 3-year-old children are playing very slip. Does not matter good or bad, location may vary.

 

So abstraction is a comprehensive issue, full of philosophy, and weigh-offs. There is no particular uniform standard, there is no strict sense of right and wrong. Only you are more concerned about what, or what is more desirable.

After the abstract is over, we must be able to achieve a reasonable job. Not for abstract and abstract, and finally impossible, everything can not be landing, they are empty. Such as abstract a brain-computer interface, the brain connected to the computer, through the exchange of consciousness, this is probably not really being achieved.


Overall, it is this:

 

一、合理抽象,划分好子系统/模块,定义好功能边界、交互方式,这样整体结构非常清晰。

二、精心设计数据结构,定义好类或接口,这样会使代码写起来变的简单,而且后期容易改。

三、其实就是既从宏观整体把握,又着眼于具体实现细节,可称之为有勇有谋。

 

当然,这是理想情况,实际上是这样:

day 1
老板:“来来来,我有个需求给你说下”。

我:“好的”。

day 2
老板:“昨天的那种方式不好,按这种方式实现吧”。

我:“好的”。

day 3
老板:“昨天的那种方式好像还有点问题,按这种新的方式实现吧”。

我:“好的”。

day 4
老板:“昨天的那种方式好是好,可能别人一时不太好接受,要不还是按最开始的方式实现吧”。

我:“好的”。

day 5
老板:“多长时间能做好”。

我:“投入5个人,大概2个月吧”。
老板:“我给你20个人,半个月能弄好吧”。

我:“这个。。。”。
老板:“哦,对了,以后再招人,35以上的不要了啊”。

我:“好的”。

 

咦,莫非老板是在暗示我,因为明年我就35啦。

 

以上内容纯属娱乐,请各位老板不要当真哦。哈哈,祝贺自己毕业10年啦!

 

 

(END)

 

作者是工作超过10年的码农,现在任架构师。喜欢研究技术,崇尚简单快乐。追求以通俗易懂的语言解说技术,希望所有的读者都能看懂并记住。下面是公众号的二维码,欢迎关注!

Guess you like

Origin www.cnblogs.com/lixinjie/p/graduated-for-10-years.html