How did I stumble into being a full stack engineer

The story should start from the summer of 2008, for that year in addition to wenchuan earthquake, Beijing Olympic Games, and JAVA.

Java was my first cross-platform experience. The reason why I decided to learn Java was very simple. At that time, my brain, which was less than 16 years old, seemed not to be interested in the embedded C language that I was being taught.

If you’re going to teach me how to embed, why don’t you get me a robot or something?

If what teacher Akai took out of his silver suitcase was a Micro Robot instead of a circuit board (development version), MAYBE I would stick to the embedded road without any hesitation. Later, I learned more and found that the circuit board was actually equipped with an ARM processor.

Remember, the Open Handset Alliance was probably just getting started, Android was probably in beta, and embedded devices were mostly running KED desktop Linux and WinCE.

However, after completing a task assigned by Mr. Akai, I had no further exposure to so-called embedded development.

The task went something like this: first, I read the Linux serial port. The terminal of the serial port was a GPS antenna. What I did was read the serial file in real time. Then use C language string processing to intercept the information I need: altitude, speed, latitude, longitude. Finally, another GPRS module is used to publish this information.

I completed the task is still satisfactory, cross-compiled after burning to ARM board also runs well, however, in the whole system, WHAT I do is the development of mobile terminal, when I see the command center of the client, my mood… Is shocked.

It’s like the Fucking Matrix, terminals scattered, dots flashing on the map. That’s right out of a movie! My 16-year-old self was instantly shocked. Mr. Akai just said, this is done in Java. In fact, when I came to the army, I made a similar GIS map, but I was just a conscript at that time. I had no money to buy development chips and various modules, and the leaders did not pay attention to it. The map was just a map that could be layered.

All in all, that one day when I was in love with Java, ah kay teachers are not good at Java liang and I talk to the teacher learning, just contact soon conquered by OOP this kind of thought, enough for a variety of data structure in the process of object-oriented data provided by the original ecological structure, ecological library, let me feel programming can also be so for the first time.

Like everyone who learned Java before 2009, the ultimate goal was Java EE, and I was no exception. After learning Java for about a year, my horizon gradually broadened and I could make some Web applications using struts Hibernate and other frameworks.

However, AFTER all, I was too young to know what TO think, and suddenly I had a vague contempt for Web development. I felt nothing more than CRUD of database. At that time, there seemed to be no front-end concept, and the pages of some of my works were ugly in a complete mess. Gradually no interest in Web development, so do back to the old professional – embedded.

At that time, there was no clear line between embedded and mobile development, or mobile development could be called embedded, so I started my Android journey.

It is a relatively early Android application layer developer in China. It took about half a year for a software company to find me. It was one of the few android development companies in northwest China at that time, and it was difficult to recruit people. It found me, a 17-year-old boy. I went to the company for an interview, and the project manager gave me an algorithm problem. I can’t remember exactly, but it was about obtaining and arranging a sequence of numbers. In about five or six minutes, I handed over the code, expecting to comment on my algorithm, but the guy didn’t say a word about the algorithm or its functionality, didn’t even verify it. Instead, he gave me a big compliment about my code specification. Let’s start next week.

But this time, mom suddenly informed me to go home as a soldier. According to the fortune teller, if I don’t join the army, I could go to jail. Mom may see me as soon as I come home to do in front of the computer, do not play games, do not watch movies and do not talk to girls, every day on the computer to type some English letters she does not understand. Although old mama does not understand, but the news is often seen, combined with the words of the fortune-teller, and then look at my state, can not help but suspect that I am engaged in network crime. Every day indiscreet education I, the gentleman love money, take the way and so on.

So, in the winter of 2010, I stumbled into the army after all. When I left, I didn’t know what was wrong, but I took a copy of “C Language Programming in LINUX”.

So, a man, a book, to the army.

Before that, I already had some qualifications to be a full stack engineer:

  • Java Language Basics
  • Essential knowledge of Web development
  • HTML/CSS
  • Mobile development
  • Some MVC, MTV, things like that.

Is in XinBingLian forces training, all does not adapt, because before writing code at home every day, so that the foundation is particularly poor body, began to run 1000 meters are not breathe heavily, so the process of training is the process of various scolded, coupled with a more strict monitor, basically can not scolded that every day is my most comfortable day, After a period of time, the body’s overrun by every bone periostitis again, after thoroughly remould oneself all feel the same, also slowly adapted to the, this time, there will be a day to rest every weekend, I just picked up the book “C language programming under LINUX environment” look, don’t have a computer, just write the code in the diary, compiled in the brain, I don’t know if this is a kind of exercise for myself. After four months of this, MY company, which was in a gully, was soon on duty, mainly to look after prisoners.

Every time I stand at my post and see the inmates, I ask myself, what am I doing here?

As a matter of fact, I haven’t figured it out yet. Fortunately did not lead a few days, duty room notice I answered the phone, the phone is the head of the headquarters of which, also have not seen before, ask me the procedure can do not, I said no problem. So I was transferred to the headquarters training unit, the full name is combat training unit, at that time also do not understand what it is a unit, always feel to listen to the name or quite awesome force.

Arrived mechanism, can go to work in the office every day, however more embarrassed is, the office ration I only is the desktop of a Celeron processor, that call a slow ah, and have no outside net at all. I searched the army Intranet for about a whole day, but the only programming tool was c++ builder. Fortunately, I used it fairly well before, so I started my first program in the army, which was basically a simple management system. I didn’t even find the database, but used ini files to store data. However, finally began to knock on the code, this period slowly also familiar with the new environment, the daily work is more complicated, in addition to writing programs, but also responsible for the headquarters of the leadership of the daily life, office health, several warehouse health, every day but also thunderstruck four hours of standing post. According to the leaders, I was quite proficient in computers, so I was given a new task, that is, video editing. That is, the video clips of the monthly duty and training of the army can be easily analyzed and so on. So, I began to learn mime.

I didn’t know much about video clips and image processing software before. I just felt like clicking a mouse, but I found that there was also a question from the university. Therefore, I gradually realized that the separation is like the separation of mountains. We cannot deny the value of others with our own superficiality.

As for video editing, I attended a special training in my third year, and the training content directly went to film production, taught by some professors from Beijing Film Academy and some famous directors. After I came back, I bought a MacBookPro, shot a micro film with a SLR camera in my unit, and edited it with FinalCut. Later, I won an award in the whole army, but this is not what I want.

In the second year, the army began to carry out informatization, and I was transferred to the communication unit to work on construction. This construction made me feel like a change of artillery. I could use all the new laptops and desktops in the command center at will. This time, the above information department came also help us to build a staff, the staff is trained, and barely even a bit of a common language with me, we two together, that is to come up with some software, however, the cargo of the programming language is really bad in a great mess, so I became main force. I spent almost two days reviewing the Java Struts2 framework on the Internet and started working on it.

Because I really don’t have any actual combat experience in this area, and the system to be done is relatively large, directly named as the integrated platform, in short, the army personnel, vehicles, combat, duty, combat effectiveness evaluation and so on all have to be done in. The first problem was database design. It took me almost three days and nights to complete the database. Then there are all kinds of business logic, which can not be disclosed here. In short, the whole project was tested while developing, and it took almost one and a half months to run. Functions are realized, but the problem came, my front end is really ugly horrible, so, the above to help the staff began.

He used something called AuthWear to make a fixed resolution interface, and I have to say, his interface is really good, and I’ve learned a lot about Photoshop while watching him work, so that my Photoshop is now at the level of a professional artist. At the same time, I spent half a month learning 3DMAX by myself, made 3D models of all our targets, and incorporated real-time video monitoring into this system according to hikon’S SDK.

However, by embedding my pages directly into his interface, B/S architecture became C/S architecture, sacrificing the flexibility of the program, so that ONCE again I changed the code to provide the interface directly for him to call. You end up with a platform that looks cool, but sacrifices some functionality and flexibility.

When this platform was put on the big screen of the command center, I pulled out the video of each duty station, information of each soldier, battle group, vehicle and equipment for the general in the command center in the control room, and a sense of accomplishment arose spontaneously.

My military career should have ended like this. In September, I was invited to baidu northwest Headquarters by my family. The hr director interviewed me, who was satisfied with me and recommended me to work in Baidu Wireless Department in Beijing. And I’m ready to be discharged in two months.

However, after a mission changed me, the mission and even the comrades in the neighboring forces paid the price of their lives, after participating in the mission, I wrote an application to stay, as a result, became a non-commissioned officer.

After the transfer of sergeant, I was transferred to another army, professional network maintenance, with the outside of the word is stationmaster. In charge of website construction, mainly ASP and PHP, this new unit has no special requirements for software system, so I am still relatively free here. The direct benefit is that I can spend a lot of time to learn some new things.

It was around this time that I started learning Python, and as soon as I got into Python, I ditched Java completely. I liked new technologies, and Python really suited me, so I started using Django for some projects. As long as THERE were no other tasks, I kept writing code every day. During this period, I also learned SWIFT IOS development, new CSS and HTML, bootstrap and jquery. In the fourth year, I was invited by the former army. Went back and re-implemented the previous all-in-one platform with WPF.

This time, I went it alone to make the interface cooler, more efficient, and the software more useful.

So far, I unknowingly have made a lot of progress, look back.

  • I used to build a car behind closed doors, and developed it in an environment without Internet, which trained my perseverance to solve problems by hook or by hook.

  • I used some tools that I didn’t use before, or thought too simple, and studied them, discovering a new world after the combination of technology and art.
  • I got in touch with a lot of hardware equipment, maintained the network of troops, and found many common places of hardware and software.

  • I came into contact with all kinds of people around me, including soldiers who graduated from junior high school, technical cadres of graduate students and professors of the college. I found their loveliness and respectability, which helped me get rid of my impetuous, high-eyed and low-handed problems and learned to respect and learn.

From a restless 17-year-old who thought he’d give me all the equipment and materials I needed to put a satellite in the sky to a humble veteran willing to do something about it.

I find myself making progress bit by bit, which I can’t feel directly at most of the time, but it does exist. Although I am not a technical genius now, I am willing to create something I like steadily.

One person, one computer.

He became a full-stack engineer.