I found that there are many engineers in the organization who have been writing code for ten years. As a coder who has been writing code for five years, I want to know what it feels like to write code for ten years? Ma Jian, Software Engineer As an engineer who has been writing code for more than 20 years, can you answer this? 0: Elementary school Equipment: Red and white game machine Laser-310 Language: BASIC ## Writing BASIC on the Famicom ## My earliest programming was on the Red and White game console. I didn’t write FC games, I’m not that old:). When I was in primary school, I bought a Red and White game console, which was developed by the 46th Institute of the Ministry of Mechanical and Electrical Engineering. It could be equipped with a keyboard and used as a computer. I don't remember how much time I spent on this toy, but I mainly wrote various small programs in BASIC. At that time, this thing didn't have a disk drive, so I had to use a tape recorder to record the program (yes, a tape recorder). I could load it back from the tape the next time I turned on the computer:) From an online post ([Private Museum] Game Consoles - 01: The high-tech domestic Famicom back then), I found a photo of this game console and keyboard: The keyboard that comes with the game console (mine was black): Interface for connecting a recorder:
I can remember the programs I wrote at that time: Contacts, enter the initials, search for phone numbers. Enter all of my dad's contacts. Generate random notes and name them "Magic Song" Use ascii characters to print animations, use characters like _ - ^ to print fast-moving bugs, etc. . . . My tutorial book at that time was "Structured Programming in Basic Language" by Tan Haoqiang, which I borrowed from the library.
## Laser-310 ## I also want to mention that there are computer classes in elementary schools, and they use Laser-310. (There is a question and answer on Zhihu about this: What is LASER310? - Technology)
The computer class was suspended after a few classes, but I still often asked the teacher for the key to play. The Laser-310 was mainly Basic language. Other students didn't like to play, and they all gathered around the Zhonghua learning machine next to it because they could play games (dig for gold). 1: Middle school Device: PC/AT, 286 Language: DBase3FoxBASE+ ## Help dad fix bug ## When I was in middle school, I often went to my dad’s workplace to play on the computer. At that time, the operating system was DOS, and the office software was WPS and CCED (which can be understood as the domestic EXCEL on DOS). These were not for writing code, so I won’t mention them for now. The database software at that time was mainly DBASE3, which was later upgraded to FoxBASE+. Both were interactive database management software, similar to Microsoft's ACCESS. It was not just a database, but also included interactive interface design, report display and other functions. The process of writing code is mainly to learn and continue to use FoxBASE+ to improve my address book program (why can't I think of doing something else fun...). It is worth mentioning that there was a bug in the report printing program of my father's unit, and the printing was wrong. I helped to fix it. 2: University Device: Pentium processor PC Language: C/C++/HTML/XML/VRML ## Tragedy caused by a drawing program## In 1997, six of us bought a computer together in a university dormitory. The CPU was Pentium mmx 166Mhz, the memory was 16M, and the hard disk was 2.1G. At that time, six of us bought the computer together and spent 7,000 yuan. When we took a taxi back, we said to the driver, "Drive slower, we bought a computer, don't let it get damaged." ...囧 The six people were assigned computer time evenly, one day per person. I wrote a simple Visual Basic program that would pop up every day to indicate who should be on the computer. I learned C language in college, using Turbo C: One day, I had just written a cool graphics program in C. I ran back to the dormitory excitedly and said to my classmates, "Come, let me show you my program." Then I inserted the 3.5-inch disk into the computer and ran it. My classmates all crowded over to watch, and then, nothing happened. The screen went black and the machine could not start. I took it to the repair center and was told that the graphics card was burned (I still don't understand why my program burned the graphics card). The consequences were serious. It took a week to repair the computer, and for this I had to pay back the computer time of other students that I affected. For the next month, I couldn't use the computer in the dormitory :( ## BBS User Tracking System ## Since my sophomore year, I have been introduced to GNU/Linux, started using GCC to compile C code, and started using VI to write code. I never thought that 17 years later, I would still be using these great tools. I still remember the first time I opened VI, I had no idea how to exit it. I could only use CTRL+Z to exit to the background, and then kill it. At that time, BBS became popular in the school. The dormitory did not have Internet access yet, so you had to go to the library computer room to access the BBS. At that time, the BBS used the TELNET protocol. The new Shuimu still supports the TELNET protocol. The interface looks like this: You can post articles and read articles on BBS, and most importantly, you can find people to chat with:P. I guess you have never used the chat room function of BBS, and you don’t know what //bearhug, //puke mean. #p# At that time, I really liked chatting with a girl online from the same school. However, due to different online hours, I could never see her on the BBS. So I wrote a robot program in C, logged into the BBS, and checked her online status every minute. If she was online, I would send her IP address to my Motorola BP machine. Of course, if she was offline, I would also send a message to the BB machine, so that I would not run to the library and she would have left. a) Why do I need to send the IP address? This way, I can see where she is surfing the Internet from, the library or the computing center, so I can bump into her by chance :P b) Why do we need to send messages to pagers, not text messages on mobile phones? There were no mobile phones at that time :( Not just me, but everyone else. I couldn't afford a mobile phone with analog signals. Pagers were the most convenient communication tool. Here's a picture:
c) Why did you choose C instead of other scripting languages? First of all, C was the language I was most familiar with at that time. Secondly, Python was not popular yet. Python 2.0 was not released until 2000. Perl was still quite popular at that time, but it was a pity that I didn’t take the time to learn it properly. d) Which machine does the program run on? The machine in the dormitory cannot access the Internet, so it definitely cannot. The answer is that a teacher in the School of Mathematics is very nice and organized a Linux club. We have a shared Linux host and can telnet to it to write programs. e) How to send the program to the pager? This is a good question. At that time, the telephone companies in various places (they were not called China Unicom and China Mobile at that time) would provide the function of sending messages to pagers on their websites. I just found some useful ones and sent some HTTP requests. The story is not over yet. The tracking program I wrote actually tracked not just one person, but everyone on the site, and the data was saved. I thought it was not just for me, so I wrote a web service, where everyone can view the time when anyone went to the BBS, and see a bar chart to summarize the patterns of netizens going to the BBS. The BBS administrator saw that my service was quite popular, so he contacted me and told me to stop using robots to crawl the BBS data and add the function directly to the BBS system. I was very happy, so I went to the office of the BBS administrator in the computing center one night and fixed the program in front of him. The next morning, I found that something was wrong. The IDs of all users who had logged into the BBS had turned into uppercase letters. It was all because of a bug in my program - in order to compare strings, I changed a global user ID variable to uppercase letters. Fortunately, the administrator was smart and found the backup in time to restore the data. *Updated at midnight on September 6, 2015* Thank you for your support, I will keep writing. Answer a few questions from friends: Are you bald? My hair is getting thinner, but I'm not bald yet. It may be a genetic problem. Some of my classmates are bald and look 10 years older than me. . . What are you doing now? I joined a startup company, working on Android. I am still writing code, writing Java, C/C++, Python. Before there were no front-end engineers, I also wrote PHP/Javascript/CSS. What happened to the netizen mm later? I found that everyone likes gossip. Later, I got along well with mm. We often met and chatted, and went to KFC to eat ice cream together. It was a very happy time. We were good friends, but *** did not end up together. Did anyone in my family introduce me to programming? No, my parents were both workers and had no computer skills. I started programming because I liked playing video games and wanted to understand how they worked. There weren't many things to play with at the time, and I spent the entire summer tinkering with the programmable game console. Are you from the Department of Mathematics? Yes, I majored in Mathematics for my undergraduate degree and studied Computer Science for my graduate degree. ## "dislike" ## It seems that everyone likes gossiping, so I will write more. However, I will focus on the original question "the experience of writing code". Back to my freshman year, when I first entered college, I started pursuing a girl I had a crush on in high school. I won't mention the phone calls and gifts I gave her. I printed and typeset my favorite online novel "The First Close Contact" for her, learned Photoshop, photoshopped photos into cards and sent them to her. I won't mention these either, they have nothing to do with writing code. During the summer vacation of my freshman year, I moved the computer from my dorm back home and wrote a small program in VB. I invited a girl to my house and asked her to try out the program. At first, there were some cool animations, and then some IQ multiple-choice questions. The first question was "By the way, I like you. Do you like me?" There were two buttons below, "Like" and "Dislike". The girl paused for a moment when she saw this, and then clicked "Dislike". As soon as the mouse moved over, the button ran away. She tried several times but couldn't catch up. At this time, I thought, "Give up, click another button." Unexpectedly, she said, "I don't want to choose anymore, I want to leave." This incident taught me, "When making software, don't force users to accept your design." ## Ranking manipulation## Since my sophomore year, there have been more portal websites and more online users. One portal website launched an online dating website, which is a very crude Facebook, where you can upload photos and write a profile. Each user's profile page has a visit counter. The homepage is ranked by visit counter by default. The website was very basic at that time, without CAPTCHA, and it was very easy to cheat. I wrote a C program and cheated myself to the top. I also uploaded a photo of Brad Pitt to myself, which attracted many female netizens to chat with me. My roommate saw it and asked me how I did it and asked me to help cheat. As a result, the top few people in the ranking list were all from our dormitory. I won’t tell you, but I really met a female netizen, she was from the Foreign Languages College, and she told me that there were too few male students in their Foreign Languages College. ## Become China's HOTMAIL ## When I was a junior, dot com startups were booming. A couple who had returned from overseas came back to start a business. They were said to be the children of a school teacher. They found a teacher in the college through their connections and asked him to recommend some students to help. The teacher recommended four friends from our Linux club. (It is worth mentioning that the boss used to work for a company in the United States. He had two other colleagues who returned to China to start their own businesses like him. One of them was Elong and the other was Yitong.) The first time I met the boss and his wife, they told us, "We want to be the Hotmail of China!" We were very excited and decided to join. The four of us named ourselves the BRAD group based on the first letters of our BBS ID. The CTO came back from the United States. I admired him very much at that time (and I still admire him now). He went to the United States to study before he finished his studies at Tsinghua University. He built http://bbs.mit.edu while in the United States. He designed the architecture of the entire Webmail system. Speaking of architecture, I can mention it. If you are not interested, you can skip this section. FreeBSD system, the front end is written in C FastCGI + Apache, the back end is written in C RPC server, and the storage is the file system. FreeBSD was chosen because the performance of Linux was not very strong at that time, and C was chosen for development because of its good performance. Saving servers means saving money. Using C to develop Web Mail, is it hard to believe now? The hardware performance at that time was not as good as it is now, and the price was much higher. So we were faced with a very difficult problem: C language could easily crash due to memory errors, and FastCGI would require the service process to keep running, which placed high demands on the reliability and stability of the code, because once an error occurred, the entire service would crash. He strongly recommended Emacs to us at that time, and the little Emacs knowledge I have now was taught by him. Unfortunately, when I saw his chicken claw-like hands when he entered Emacs commands, I decided to stick to the vim camp. There is another thing that impressed me the most, which has nothing to do with writing code. He especially liked to tell disgusting jokes when everyone was eating, so much so that for a period of time, I learned bad habits and told disgusting jokes everywhere. If you are interested, you can search "咬不停笑话" on Baidu and you will know how disgusting his jokes are. When we were still in class, we would gather in the Youth League Committee activity room every day after class at noon, order takeout from Xinancun, and always order a plate of "pot-fried pork loin". While eating, we would discuss the details of development. If we didn't have classes in the afternoon, we would write code all afternoon. Because of writing code, I skipped several political classes, and unfortunately I was called out, which became the only class I failed during my college years. During the winter vacation, none of the four friends went home, so they got up at 10 o'clock, took a taxi directly to the company, wrote code until 12 o'clock in the evening, and then took a taxi back to school to sleep. To this day, I can type the telnet command to the SMTP server or POP3 server and send and receive emails. I remember the email protocol very clearly. I still remember that I hid an Easter egg in the code, which would show the employee list if you searched for certain special characters in the email. Later, it was removed by a new guy. Just like that, four junior students plus a senior launched the service within half a year, with four servers supporting 300,000 users. Looking back, although we were still students and interns at that time, what we did was exactly the same as what we do now in entrepreneurship, or even more purely. We felt that doing interesting things was enough, and it didn’t matter how much money we made, and we never thought about stock options. What happened to the company? In 2000, the Internet bubble burst. The company quickly transformed and became a corporate and campus email service. I was surprised to find that the company is still in existence. <To be continued> Bai Qiao, senior emotional programmer, PhD from Chinese Academy of Sciences An old man born in the 1970s, a pure rural kid from the mountainous area of southern Anhui, who only had programming experience after college Inspired by a brother above, I took some screenshots to talk about my own experience. I will add more text later when I have time:) In 1995, I first came into contact with computer programming. Of course, the mechanical manufacturing major was ForTran. I still vaguely remember the night before the first class, I practiced fingering in front of a keyboard picture on the bed. . . The teacher who taught FORTRAN was a pretty lady with a nice scent, but this FORTRAN course really disgusted me. If you were to ask me what my experience was like at that time, I'd probably say it was "boring" and "frightening". Thinking about those "default", "enter", and "console", it would be strange if I wasn't daunted! editor.exe was the coolest editor at that time (I had been using a program from http://ed.com before): In 1996, I paid for a C language training and discovered a whole new world! C language is so cool! The key is that C language can also detect press any key, settextcolor, and even initgraph~~~ I am more interested in interactive things. At the beginning, I imitated the codes in various books and tried to implement some functions of text editors (menu, editing, access, cursor). Later, I directly devoted myself to graphic programming and became familiar with mouse programming, Chinese programming, and timer programming. Can you feel the joy of seeing the mouse arrow cursor appear in the DOS window? Can you feel the joy of seeing the Chinese characters of Greater China appear in the DOS window? ? Can you experience the joy of drawing by dragging a cross in a DOS window (yes! I imitated AutoCAD, because I majored in mechanical engineering)? ?
At that time, I was already an active participant in the department's computer programming competition. Once, I was allowed to use a 386 (for printing) in the department office to debug a program. That night, I directly asked my classmate Y to work on programming together all night long. . . In 1997, I came into contact with object-oriented programming. At that time, I set myself a task, which was to encapsulate the original GUI components into my own Window, Text, and Menu. . . This also made me familiar with OOP and Boraland C++: In 1998, I used FoxPro for my graduation project, and then transferred my C program: #p# In 1999, I started using vc5.0, and then I kept using vc and mfc for many years: In 2000, I started to learn web programming. In addition to vbscript and flash, I discovered asp and interdev: I started working in 2001 and came into contact with Java and JSP. At that time, there was no mature MVC framework, so I wrote a lot of framework-like things by myself: I was really happy in the first few years after I started working. I would visit Shuimu BBS, Yitahutu, and CSDN when I had nothing to do. Around 2005, I discovered that Java also had IDEs, and of course I had to deal with things like Spring and jQuery: In 2014, I switched from Spark to Scala: I want to state that I am an emotional programmer, so I am always a little nostalgic and often think of the DOS era: We use KV for antivirus: I vaguely remember UCDOS: The WPS I'm begging for (I won't tell you that I know the password is ^QIUBOJUN) And of course:
Hi! The one who reads this post, I'm talking to you! How can I not like it when I see a senior who used to look at H photos in rough pixels in ancient times? ! This Ispan, God be with you... After finishing my code at night, I looked at my wife and children lying in bed. I thought: I'll just write. What else can I do? Besides writing some code, what other skills do I have? I'll wait until I pay off my mortgage. Milo Yip, game programmer, translator of Game Engine Architecture I don’t know if the period before I started working full-time is counted, but by this calculation, my first ten years were roughly from 1986 (third grade in primary school) to 1995 (second year in high school). The first two years were spent learning some basic computer knowledge and BBC Micro's Basic. The next two years were spent teaching myself Apple II, including Applesoft Basic and 6502 assembly. Then I spent a year using DOS and GWBASIC on the PC. Then in the fifth year, I started to teach myself C language, x86 assembly and computer graphics, and wrote simple 3D modeling software. In the 7th year, I started to participate in commercial game development, learned the development of game engines and tools, and began to learn C++. In the 9th and 10th years, I worked as the main programmer and planner in game development, and also started reading some university textbooks on computer graphics. I estimate that I read about 10-20 simple computer books every year in those 10 years. I went to the library more often in the early days, and in the later days, a lot of my pocket money was saved to buy books. My son (who is in Grade 2 this year) has not started this experience yet, but he plays much more games than I did before. ---- Catch up after dinner, the question asks about experience. I was a bit of an outlier when I was young. My academic achievements were not very good, but I was okay. In this environment, I can be said to be more free and spend more time studying what I like. Sometimes I would have conflicts with my family and teachers when doing these things. Especially in high school, I would go to the company after class and work until 11 o'clock before going home. I had many arguments with my family. As for school, I participated in some programming competitions on behalf of the school. It was not the OI competition, but education-related software. The 3D modeling software I made at the beginning was also a competition. Because of these experiences, the school was relatively open. I often slept in class a few weeks before the competition, and wrote and debugged code after class. Sometimes I stayed in the school computer room until very late. I had to climb over the school gate several times to go home. I continued after I got home. I had experienced the days of overtime like programmers when I was young, but I rarely had full-time jobs. Programming is really different from other subjects. If you like it, you can learn it quickly by yourself. You can beat the computer questions in high school in seconds. At that time, our high school had a computer course, which was a common exam subject, so I saved a course in study and could easily get an A. Because I know programming, my parents once introduced me to do some boring things, such as writing dBase programs for some companies (not SQL databases), and also using Director to make teaching software. What might be more boring is typing and typesetting for others (although I was later trained to have certain requirements for typesetting). Fortunately, there was no Internet in that decade, otherwise I would probably waste a lot of time making web pages (I later started a company in college and did that...). Speaking of the Internet, in the days before the Internet, people mainly relied on books. Another way to learn was on BBS (using a modem to make a local phone call to connect to someone else's BBS), where you could find some fragmentary documents and source code. I remember reading John Carmack's very early documents. When I was young, I could easily absorb all kinds of knowledge. But I really wasted some time back then, learning some things that seem useless now, such as various memory technologies of DOS (XMS/EMS), TSR programming, etc. Those ten years of programming were very happy days. When I was young and reckless, I wrote whatever I wanted. Now I am more conservative and cautious, probably because I have learned too many rules, too many practical limitations (such as cross-platform and cross-compiler), too many personal requirements (such as performance), and I am afraid of making some low-level mistakes. to be continued Kaiyuan brother, practicing in seclusion, quit Zhihu 10 years old: MCU assembly 12 years old: VB 15 years old: C / C++ 18 years old: Lisp Age 20: Type Theory (something is wrong) I forgot to mention the experience... The experience was that my neck hurt... It hurt so much that I couldn't sleep QwQ |
<<: Ubuntu Software Center Dead?
>>: What's wrong with Google's new icon?
Cheese Rhythm Cao Maogui Wealth Secret Key Stock M...
Category operation is also called product operati...
With the spread of full-screen phones, more and m...
Two studies conducted by OpenAI and MIT Media Lab...
People who like to eat snacks should have seen fr...
Training course content: 1. Title design: Make pe...
We know that electricity can be divided into alte...
With the development of mobile Internet, we need ...
Editor’s Note: In the 2024 "Ali Mathematics ...
As the wave of short videos grows stronger and st...
In 2016, the highlight of the global capital mark...
Official Weibo operation plan: 1. Planning Purpos...
Generally speaking, there are four main ways to t...
The latest "China Automobile Dealer Inventor...