Hello friends from php Chinese website! I am a handsome young man, and today I bring you a very inspiring story that makes me reflect. What I’m going to tell you today is how my father used actions to teach me to become a programmer.
The tempering of time
Keyboard with round interface interface, 2003
Someone asked if this keyboard has not been wiped? No, it is the traces of time that cannot be erased. Friends who pay attention to details will find out which keys are used most by programmers. Except (ASDW, YUHJ, those were left over from playing King of Fighters when I was a kid). Although this keyboard is old, my dad has been reluctant to throw it away. In 2003, he bought this second-hand computer with 486Cpu frequency from the second-hand market and started to learn assembly by himself. My dad only has a junior high school education. But he has super hands-on ability.
Introduction to Embedded Development with Zero Programming Basics
Because in 2003, he had just resigned from an electronics factory, and he saw a microcontroller like this in the electronics factory. He saw the wages and benefits of their engineers. At that time, he was just a solder on the assembly line. Although he was a team leader, he also felt the limitations of his profession. (This also brings us a revelation. As a man, if you feel that there is no end to your career, change your job as soon as possible. If not, you will choose to compromise in the future family pressure and never see the end.), the day after he resigned, he bought back this second-hand computer of the 486 Pentium series, a simulated programming machine (a machine that writes programs to the chip), and an introductory book on assembly language. He began his 12-year journey in embedded development. (The inspiration given to me here is to learn as you talk, don’t think about how to get started, the best way to get started is to do it. )
The strange man who copied books in the library
This was secretly copied from Xinhua Bookstore when he was learning C language
I remember when I was in junior high school, my dad would take me to Xinhua Bookstore every Saturday. Reading books, and then going there, he would ask me every time to see if the librarian came, and then he would concentrate on copying these code snippets (this learning method, in my opinion, is now a It’s a joke. If you open any website, there are piles of codes. But then again, what did you learn from these source codes? Can you use them flexibly? Record some of them from the learning methods of your predecessors. Commonly used code snippets are still necessary. Do you have your own set of code snippets in github? If not, collect them quickly!) But my dad’s notes, every time I ask him, what project it is, he can I remember it very clearly. Of course, it was very painful for him when he started. He didn’t understand a word of English, so you can imagine. But everyone’s foundation should be much higher than my dad’s, so don’t doubt whether you can learn programming, you will definitely be able to learn it.
Programmer Special Skills—Focus
My relatives always say to me: "You, if you sit for a long time, you should get up and walk around more. It’s better to be far away.” But I think most programmers can't do it, because you can't stop programming at all. Once you get started, you will feel like you want to create all the time. This is the focus of writing programs. Speaking of which, I just want to ask everyone: "How many hours can you focus?" I asked this question to my dad. My dad smiled and said to me: "Use gas and put a flat bottom filled with water. How long does it take for the pot to burn through?" This was a real experience he had. He was writing an MP3 player in assembly language. During the debugging process, he forgot that he was boiling water. Fortunately, the gas was burned out! I just want to tell you this story: "You need to maintain a high degree of concentration when writing a program, but you cannot focus too much on fatigue."
Programming requires process reengineering
Software engineering is very similar to architecture. They are both based on real-life technologies to build the best solutions. "Steel bars and concrete" are all ready and can be used directly. The same is true for programming and embedded development.
This is an STM32 experimental board transplanted with the UCOSII system
This board is embedded with the UCOSII system, which can perform multiple tasks at the same time and specify task priorities. In layman’s terms, you can listen to music and type at the same time. Although it seems low-level, embedded is just that. It's very high-end, but when I asked my dad, how did you make this board? Are you really so good at writing an operating system in C language?
I drew the board myself, bought other chips, and wrote the CPU program myself. It turns out that what embedded development does is to design each functional module appropriately and schedule it with programs. Nowadays, mature chips have programs written by manufacturers and provide external calling interfaces. Developers do not need to understand the content in them before they can develop them. This inspired me a lot in learning programming in the future. My teacher once said: "The reason why software engineers can write programs that solve practical problems is because they understand process reengineering and use realistic wheels (technology) to realize this process". The first thing that wants to become a software engineer is not how good the programming language skills are, but how to simplify the tedious processes in real life through computer science. I think this is the real software engineer. Although my dad's programming foundation is not as strong as mine, his ability to process process reengineering is much better than mine. Maybe this is experience.
This is the serial port response sending process it provided me (may be wrong)
I forced my dad into a pseudo-full stack
When I was a sophomore in college, I learned C# and could do a simple winform program. Then I started to get excited and brag about it to my dad. My dad was so happy at the time that he directly picked it up for me. I accepted a real project with real money, and I foolishly agreed at the time. Since it is a real project, the fault tolerance of the program must be very high. You cannot throw exception with a few clicks. But the projects I did were all experiments on campus, just for playing house. Although the teacher gave praise, this is not the case. It's the showmanship in college. When it is really put to use, it does seem pale and feeble. Naturally, my program would not be completed on time. My dad realized it. He smiled and said to me: "Teach me C# and we will discuss this program together." There was no other way but to let my dad learn it. A week later, he started to learn C# in parallel with me. Development, this is my best memory of working with my dad on the same stage; why was my dad able to learn C# (only basic C voice) in a week?
The language is common, only the way of expression changes, the thinking and process will not change
Our teacher taught us to draw some simple drawings from the beginning Flow chart, but many of us think it is too simple and uninteresting, so we start to pursue those superficially gorgeous interfaces to satisfy our curious and vain hearts, but what they miss is the real programming technology, which is Me at that time. Many people think that university courses are very basic and very few are actually used in projects. They cannot be used for projects at all, and those taught in books are outdated.
In fact, what books teach us is the posture (method) of writing (programming), how to hold a pen (writing programs), and how to write well (good programs). Once you learn it, you can Write good calligraphy (good program). Therefore, there are many people who cannot write calligraphy (programming) well, that is, they practiced calligraphy when they were young (beginners to programming) and are eager for success and want to play (show off). This is my deepest reflection and the best advice to all beginners. Programmers must endure loneliness!
Programmers must always know themselves
At that time, I was inflated and a little self-righteous. I thought I could do it, and then I agreed to the project. As a result Fortunately, my dad is great, otherwise I would have lost money. As a programmer, you must know your upper limit. Know yourself and your enemy (I can do it, but you can't), and you can fight without danger (I just want so much money). Yes, it is helpful to evaluate your own value by always knowing the upper limit of your level. For example, if you change jobs, what is your level compared with your peers. What determines the market price is not the company itself, but the socially necessary labor time (how long it takes other programmers to do it). The best way to understand is to look at the latest technology and understand the trends in the industry. Only this time can I establish myself in the high-paying class.
Be a programmer who keeps his word
My dad said to me at that time: "Since you promised to others, no matter you have thousands of reasons You have to complete it for others. If you can’t complete it, it’s your fault because you made a promise to them.” This is not about ethics, but the professional ethics of a programmer. Because of this, my dad was able to take over many outsourcing projects, because he only has two words in the eyes of others: "reliable". Maybe this is a programmer's personal brand. If you can have such a brand in the company, can you not be promoted?
There are always people asking: "Is it too late for me to learn programming now?", "Can I continue to write programs after I am 30 years old?", "Is it difficult to learn programming?" After reading this article, I believe you will not Ask again, because if you really love programming, you should be like my father, no matter how forced by reality, never forget your original intention. Although I don’t have much verbal communication with my father, the many years of exposure are enough for me to say: “Follow your father’s instructions and never forget your original intention.”