When I wrote some technical articles, I often had a message from readers asking me what tools I used to draw. In fact, I feel that they may have asked the wrong question, because I have tried to draw a good picture of a variety of different drawing tools software, but finally found that it is not possible to draw a good diagram and tool relationship is not big.
Why?
The programmer is not writing code, why do you need to draw? Many programmers think it's good to write code, so what's the use of drawing pictures? Does the programmer become an architect and is it the so-called PPT architect who makes the easel composition every day? These questions have puzzled me a few years ago.
In an article "The Essence of architecture in the eyes of the chief architect is ..." refers to an architect Competency model (), which, in combination with my own experience and experience, is more consistent with the architect's position.
A programmer has done a lot of projects and has written for years to grow into an excellent programmer. As you can see from the ability graph above, a good programmer is a lot less capable of other things than a architect. We used to think that programmers had accumulated enough experience to naturally grow into an architect, but the architect is not a continuation of the programmer's natural growth, but because the architect's work is closer to the programmer and the technology than the management, so we have this illusion. Continuing to work and excel in the "Great programmer" territory will allow you to become a technical expert in this vertical field, a continuation of the programmer's natural growth.
As a result, programmers who want to grow into an architect to a certain degree need to look at other aspects of the competency model. and mastering the drawing techniques, I feel at least in the abstract thinking, communication, balance and choice and through the problems to see the essence of the help. As for the multi-domain knowledge and technology forward-looking, these two aspects do not seem to be very relevant to the drawing, but if multi-domain knowledge is not limited to the field of procedural technology, drawing is a domain knowledge.
We have used the map software of today's era, a country, a city, a block, map software always show maps in different abstract dimensions. And for a complex software system, it also needs similar different abstract dimensions, the whole system, the correlation and interaction among different subsystems, the interface and the invocation of the internal modules, and the processing flow of some key realization points. An architect should be able to clearly depict parts of the system or system in these different abstract dimensions.
We can find and find the crux of the system better when we depict all the important aspects of the system in different abstract dimensions. If the problem of solving the system is like walking a maze, you are directly drilling to try to find a way out, or stand in the higher dimensions overlooking the maze and find the best solution to the problem path. This is the embodiment of one aspect of the nature through the problem.
About communication, as the saying goes, there is a picture of the truth, oh, no, is a picture wins thousand words. Some programmers write technical documents Phala Phala to write a lot, and sometimes it's not as clear as an architecture diagram or interaction diagram for people to understand more quickly and clearly. In the system has an abstract and comprehensive multi-dimensional presentation, clear and accurate communication, directly hit the nature of the problem, then the correct and appropriate balance is not so difficult, right.
How is it?
The previous section explored the benefits of drawing a good picture, and in this section we looked at how to draw a good picture. Draw a clear understanding of the technical architecture or the interactive flow of the description of the legend need any special drawing knowledge and skills? Is it going to take a lot of time to draw a good picture?
In the past few years on how to draw a good picture of this topic I have done a lot of groping and practice, want to achieve efficiency (drawing will not spend more than the text to describe the same content more) and the effect (the effect of the legend should be better than the text description) balance, In this process, some of the following basic cognition and self-feeling are harvested to be good practices.
Graphics
I draw the technical legend will only use some of the most basic graphics, such as: rectangles, circles, triangles, diamonds, bubbles, arrows, these basic graphics almost all of the drawing software will bring their own, so the tool's dependence is very low, but the choice of high efficiency. Of course, these famous external systems may have their own famous logo icons, and they will use their logo icons directly, for the purpose of expressing and interacting with some well-known external systems.
As shown below, there are some drawing graphic elements that I often use.
Color
Sometimes the composition of the system is more complex, only the basic graphics are not enough to express all the different components of the system, then you need to use color to distinguish. So the next question is, what color should I use? My answer is to use the colors most people feel beautiful. What color do most people like? Of course, I didn't do any research, I took it all by my head. I think most will feel the rainbow is beautiful, so I generally use the color is the Rainbow seven color plus two kinds of classic colors: black, white. So there are nine colors plus several basic graphics, you can combine dozens of kinds of graphic elements to express different components, basically enough.
Rainbow Seven colors include: red, orange, yellow, green, green, blue, purple. However, the choice of seven colors is also a priority, in a book designed to designing with the Mind ("Cognition and Design", in fact, I think the translation has no original original so have feelings) put forward some of the following color usage guidelines:
- use saturation, brightness, and hue to differentiate colors, ensuring a high contrast of color , because human vision is optimized for edge contrast.
- use unique colors , as the most easily distinguishable colors are: red, green, yellow, blue, white and black.
- Avoid color blindness that cannot be distinguished , such as: Crimson-black, crimson-dark green, blue-purple, light green-white.
- use other than color tips to be friendly to people with color vision impairments, and also to enhance understanding.
- Avoid strong anti-color , such as: red black, yellow black
So you see why the traffic lights are: red, yellow, green. Why did jobs choose these three colors as the button colors for all the application forms in the Mac OS X operating system, which is also the coincidence human visual perception principle. So I now choose to be white, black, black lines, color block preference: red, green, yellow, blue, it is not enough to choose: orange, Blue, purple.
Of course, Red has a good variety of red, Green has a good variety of green, I use which kind? As shown, the color values of RGB primaries are given (don't trust your eyes, the effects on different monitors will vary, as programmers need to be precise). As for why this is the choice, say it later.
Aesthetic
In addition to the basic graphics and color choices, another concern is aesthetics. Aesthetics has a big impact on the final effect, thanks to Apple's chief designer Jonathan Ive brought all of the public's aesthetic tendencies into the flattened era, so I just need to flatten the graphics, remove the stereoscopic, the shadows, and look good.
Geometric?
Explored how, we went on to look at geometry. This "geometry" is not a mathematical geometry, but once upon a while, we imagine that a very troublesome thing is so simple. What is the cost geometry of mastering drawing techniques? and value geometry?
Three years ago, I drew the technical diagram (from a previous share PPT) is probably the following, always feel bad, not too satisfied, but do not know where, how to improve. Then blame the tool is not good, from the beginning with Viso painting, and then tried the MAC professional drawing tools OmniGraffle, feel too complicated to find an online mapping site Draw.io, feel can, but because it is a foreign site, access efficiency is not very good not long to give up. After the need to do some Slide demo, using the Mac Keynote (equivalent to Win under the PPT), need to draw technical illustrations when you want to draw the most convenient in Keynote, and then began to use Keynote painting.
When I wrote the color selection earlier, I mentioned why we chose this red instead of the other red, in fact this is the color palette that Keynote provides by default on a white background. As the programmer provides a default parameter for the software, it is often the case that this parameter is optimal in most scenarios. So I tend to think that Keynote's default color swatch is some of the best solid color choices in this context, and I also feel good about my own naked eye, which saves you from opening more advanced color-matching parameter interfaces, drawing more efficiently and with less cost. So according to this guiding principle, re-painting the above technical diagram is probably like the following, the time spent will never be more than the one above the painting, but the effect of self-feeling really much better.
Therefore, learn to use a simple software, using simple graphics and color matching, in the most efficient situation to draw a good picture of the legend, is also very valuable. Of course, many programmers think that only the code written is valuable, in fact, this may overlook a majority of programmers agree that the point of view: The code is written to people. Programmers do not think that a machine can run and people are very difficult to understand the code is good code, and drawing a good picture can better help you to think about how the code is organized and presented.
This article simply introduces a minimalist technique for drawing a legend, after all, we draw only to be clear about a technology or to show a system, without considering any superfluous artistry. The lowest price, but also good effect, in the efficiency and effectiveness of the highest cost-effective balance.
...
Programmer's work nature and habits more attention to implementation and ignore the presentation, sometimes the wine is afraid of the alley deep Ah, not to mention is not necessarily maotai.
Write a program of the world's words, draw a picture of life moment.
Public number "Wink", met may wish to look at the attention.
Drawing Techniques for programmers