Programmers create the wheel of correct posture

Author | Huang Feng up, CSDN blog expert Phodal

Zebian | TANG lead

Head Figure | Author draw and to authorize the use of CSDN

Exhibition | CSDN (ID: CSDNnews)

Over the past few years, I have been to create a wide variety of programming related tools. Some of these tools are used to guide the software development work, some for learning to program, there purely to enhance the technical and write. After I wrote more and more tools, more and more contact with the tool ideas. I will write an article for the record about some changes in the process.

First, how to create a tool?

If you have extensive knowledge of the technology stack, as well as the relative plenty of time, then add some passion, you can write a not so bad tool.

Technology stack tools

In just ten years of my programming career, I tried a different technology stack levels, probably also understand how to do a variety of tools from the bottom to the top. Connect the physical world of tools:

  • Pure embedded systems programming.

Only one Arduino Arduino IDE + a development board, with a variety of input devices (such as sensors), with some of the output, which is a simple computer prototype.

  • Embedded operating system programming.

For complex scenes, you also need a simple operating system to help you carry out the task scheduling. You can simply write a task scheduler, or is based on uCOS, FreeRTOS, Contiki, Zephyr and other system development and application based on your abilities.

  • Embedded Systems Programming GNU / Linux based.

For most people, just Pi + Python can be written in a cost-effective machine learning related applications a Raspberry; or is running an operating system like OpenWRT on the router, which cost more and more ambitious program.

  • Compile GNU / Linux operating system.

If you have time, you can use a tool such as on Linux From Scratch, a compile their own personal use operating system.

  • Embedded programming era of things.

I like to use ESP32 (ESP8266 successor) engaged to carry out his smart home, which comes with Wi-Fi and Bluetooth, there are a variety of existing analog equipment programs, configuration HomeKit. Taking into account cost reasons, not for developers of hardware-based, the adoption of Android Things Or is Windows IoT is a simpler option. I have not played Fuchsia, it may also be good, ha ha.

For most developers, the connection to the physical world is an expensive thing, after all, the hardware is too expensive (think about Raspberry Pi, which is quite good). Ever since, we can do that after the operating system, to develop some tools.

  • Desktop applications.

In the past I try to use QT to develop some desktop applications, but then I changed to PyQT / PyGtk + Python, and now I have turned Electron, using Web technology to develop desktop applications is that simple.

  • Mobile Applications.

Despite React Native, Flutter is a very good mobile application framework, I also use them to develop a range of applications. However, architecturally speaking, I tend to use a hybrid application architecture, Flutter + Ionic / Angular, or RN + Ionic / Angular.

  • Applets.

I discussed the applet, they have various reviews.

  • Command line interface application (CLI).

For everyday work, we only need a simple command-line for the front end, perhaps Node.js is enough for the back-end, perhaps enough to use Python; but now I prefer to Go CLI application development.

  • Web applications.

For us, taking into account the cross-platform features, I tend to use development tools, back-end Web application front-end Angular + micro Serverless + front-end architecture.

  • Browser plug-ins.

Occasionally, I will develop some browser plug-in, but when I switched to Firefox browser, I'm thinking about how to migrate old Chrome plug-ins.

Fancy willing to introduce these new tools can give you bring some ideas. Then you can put this knowledge to string together, to develop some interesting applications:

  • Arduino + Raspberry Pi based continuous integration warning light.

  • By ESP8266 simulate a variety of hardware, deployment servers to remote.

  • ……

Now, we have to digress far, far away, back to business.

Looking for an idea

With the above-mentioned technology stack, you can easily develop a tool.

Completion?

not yet

And half of the content

Second, the pattern of development tools

For the development of tools, there are some particular fixed pattern of development. I probably gone through three stages, they probably are three different modes:

  • "Arbitrary" create the wheel mode. That is, how do I love, how I do, what I missed, what I added.

  • "Principle and mode conversion" model. I'm from somewhere, looking for some principles and models, and tools to precipitate them in.

  • "Standardization specific processes" mode. I will process flow into a tool to weaken the role of people in the process.

"Arbitrary" create the wheel

Nothing to say, I love how do you do. However, it has so few points, you can play:

  • The accumulation of technology and materials. To free to create the wheel is not an easy thing, you need to have a strong ability to learn, to achieve the purpose of freedom, the will to resistance welding, will be the next to take a hammer.

  • Looking ready to learn existing tools. You can learn some advantage on them.

  • Build, and continue to improve the commonly used tools. By continuing to use, you can improve this tool until it smoothly. Suddenly, I had an idea that he wrote a browser (based on Electron), laughs. If you upgrade technology is important for you, then this is a very good upgrade points.

Then, you can like me, happily watching their every day bug duplicate on their own computer, then I think on another computer should be good. So when I have time, I come to fix this bug it.

Principle and mode conversion

This is probably a large harvest last year in making tools. At that time together to discuss and co-workers when making tools, discuss the principles and precipitated mode, then use the tools to carry them.

Principles and Models of this kind of thing in itself precipitate for some of our daily work. Therefore, they are particularly easily converted to the tool. We can also write a tool that is used to introduce a variety of patterns and principles, dog's head.

Another great significance transformation principles and patterns that tell you: you can learn from others, to create their own tools. So, last year when I write Coca, I do such a thing:

  • Looking for all kinds of paper.

  • Download all kinds of paper.

  • Read a variety of paper.

Then, I put my all kinds of paper converted to a tool. Although, most of the paper are written especially water ( I think after reading 100, then write a tool that I can write a more than 99 percent are strong ), but we can easily copy a few others month research experience.

Reading from the book is also a good idea, but most of the technical books tend to practice based, more difficult conversion.

Specific standardization process

If we say that the former two-create the wheel is the case, then do the standardization process is the platform. I recently studied various maturity model, which has five stages. I prefer the definition of an Open Source Maturity Model GitHub official wrote:

  • Temporary (Ad-hoc) - or record new process is uncontrolled and unpredictable reactive, usually but not coordinated or is driven by the personal communication. Success depends on individual heroism.

  • Management (Managed) - Process has been partially documented, may lead to consistent results. Success depends on discipline.

  • Defined (Defined) - recorded standardized processes and integrated into other processes. Success depends on automation.

  • Measurement (Measured) - quantitative management of the process. Success depends on metrics based on business objectives.

  • Optimized (Optimized) - by incremental change and innovation, the process is continuing reliably improved. Success depends on reducing the risk of change.

End of this abstract, we can mention such a process:

Personal practice -> team practice processes -> standardized processes to Tools -> integrated into other processes, as part of the platform -> continuous improvement platform

Once again, the abstract is:

Practice -> Mode -> Tools -> Process -> Platform

Yes, that simple. So we developed a model of the tool, just need to find the existing maturity model, and then into the platform.

CONCLUSIONS

No wheels, but where's the KPI?

No technology, but where's the wheel?

No interest, but where's the technology?

Finally, I made a new wheel, a "DevOps + R & D performance of" knowledge platform, we welcome the Star: https: //github.com/phodal/ledge/.

About the author: Huang Feng of the (Phodal), ThoughtWorks Senior Consultant, CSDN blog expert. Long active in GitHub, CSDN, focus on the front end of things and areas. Publication of books "do it yourself design things," and "Growth: full-stack growth Designer's Guide" and other six books, and translated as "practical guide of things."

【END】

As an important part "of millions of people learn AI" is, 2020 AIProCon Developers Conference will be million by June 26 live online forms, so developers a one-stop to learn about current AI research cutting-edge technology, the core technology and applications as well as practical experience in the business case, but can also participate in a variety of exciting online developer Sharon and programming projects. Prospective involved a series of activities, live online interaction, not only can communicate with tens of thousands of developers, as well as the chance to win exclusive live gifts, coffee and even large technology wheat.

Comments Guest Book was selected, get the value of 299 yuan, "2020 AI developers million people congress" live online ticket. Come fingertips, write down what you want to say it!

Recommended Reading 

Microsoft's acquisition of a company is a person? Sony program to crack, hackers write novels, watching his sturdy program life!

Chinese UAV "old cannon child" Memoirs

4 years 46 edition, the article read the history of Spring Cloud

AI technical capabilities Jingdong Mall behind Secret - based on keywords automatically generated summary

Father of the Internet confirmed the new crown, legendary: either Google vice president, NASA scientists access

never been easier: you counterattack with 10 minutes Kafka!

no code era, the programmer how to keep their jobs?

Released 1920 original articles · won praise 40000 + · Views 17,830,000 +

Guess you like

Origin blog.csdn.net/csdnnews/article/details/105321183