Reflection: Being a Software Engineer

Before being a geek, I am a software engineer. In this post, I would like to share the first two years of my university life as a software engineer.

Software Engineer v.s. Geek

In my opinion, a software engineer is an engineer who materializes ideas and builds systems, while a geek is an artist who expresses one’s ideas using programs. A software engineer’s ultimate goal is to make the system run; however, a geek always wants to create beauty. Usually, a geek should become a software engineer once. With many practices, they master the law of the software world and finally do not satisfy the basic functionality but the beauty of codes. Then, they become geeks.

Start From Django

In September 2017, I asked my academic advisor Professor Chen Yi how to plan my university life. With a short discussion, she advised me to find Kinley. That’s a great suggestion. I think everyone should meet your academic advisor once even though he or she may not fit your preferable research area, he or she may refer you to a suitable one.

I had a long discussion with Kinley discussing about software. Frankly speaking, this was my first long discussion with a foreigner in English and I was a bit nervous. He asked me two unforgettable questions:

What do you want from me?

What can I do for you?

I was stuck. I had never prepared such questions because I thought finding a professor or teacher meant he or she would assign you some works to do. It is the first time I realized I needed to achieve some goals in my undergraduate life.

For the following discussion, he showed me around his previous projects. Unfortunately, he worked for iOS application development at that time, and I had a Surface laptop, so I could not join his team. Still, he gave me several ebooks for Android programming and asked me to find him when I finished them. (But the fact is that, when I finish these books, I can lead my team already and need not see him anymore, lol.)

As a software developer in China, I suffered a lot from preparing the Android development environment because of the GFW. The download speed of Android SDK was plodding, and consequently, I had terrible programming experience on Android. At this time, I learned Python and switched to Django.

I was grateful for one of my friends, Mr. Shu, who shared the resources of Django with me. Since I had C++ programming experience, I picked up Python in two weeks using the book Python编程 从入门到实践 第2版. If you want to learn Python, you may purchase this one. At this time, my friend shared with me an e-course on Udemy about Django’s full-stack development he bought. I was attracted by the power of Django, and soon, I picked up Django as well as HTML and JavaScript using the following three weeks.

At the end of the first semester, when most students had not learned Python, I had learned Python and Django. Thanks to my active learning habit, I had lots of free time in my first semester to explore programming. Also, I had a satisfying GPA in the first semester.

The First Application: Lost and Found Mini App

Lost and found is an essential need for university students which our university never tries to find a satisfying solution. Maybe it is the same all around the world. Therefore, I cooperated with my friend Mr. Zhao (maybe Dr. Zhao in 4 years; I will remember to update this line!) to build a lost and found mini-app called iFound. I was the front-end developer, and he was a Java back-end programmer, so I picked up the WeChat mini-program in the next two weeks.

Cooperating with a geek is an enjoyable experience. We developed the mini-app in only a few weeks, and we released it. Moreover, we recruited a manager and a designer, which formed the initial team member of Polaris Studio. In the development of iFound, we tried to cooperate with the university, seeking a solution like their employees used our app to share information. Still, finally, the negotiation broke down, and the university preferred to build a unified administration system themselves. (But until the spring of 2021, no lost and found service yet.)

One unexpected outcome is that our app was award the second prize in the WeChat Mini-App Development Contest in 2018. I was encouraged to build more applications, and we formed Polaris Studio to provide software solutions for startups. Although it might not be a successful project, I met many geeks and had lots of experience like business meetings and team-building, making my undergraduate life special.

Campus Heatmap in SRIBD

In the summer of 2018, I worked for the campus heatmap project at Shenzhen Research Institute of Big Data. Cooperating with Mr. Zhao, we built a campus heatmap mini-program to visualize the population of different places on campus. It was not a big project, but it allowed me to provide public service using the software. After that summer, we left SRIBD, and other students took our responsibility to maintain it.

Due to some privacy issues, this mini-program may not work anymore. However, thanks to the Public Relations Office of our university, we have an interview on the Internet. You can navigate the following news (in Chinese):

Being an AI programmer

In the September of 2018, I became an RA of Professor Sui Pengfei in SME. Our topic is to do sentiment analysis for Bitcoin forum data, a sub-area of NLP. My responsibility is to find the tools to label the texts, either positive or negative.

At that time, AI was a boiling research area because of the success of Alpha Go. Social media expected AI to do fancy things and replace human employees soon. It was not difficult to find tutorials teaching it, so I took two months studying NLP and deep learning myself.

I used Professor Li Mu’s tutorial “Dive Into Deep Learning” because he had a video on Bilibili that I could watch in China. Its hands-on tutorials lead students to learn by programming, which is the most impressive point. With the basic probability knowledge, I could understand most of the deep learning knowledge and ran the sample codes of sentiment analysis.

However, the most challenging thing is not the codes but the data. Since the Bitcoin forum has its own language and terminology, most general training datasets failed to perform nicely. I explained this bottleneck to the professor. If we would like to train ourselves, we needed to pay some people to label the data; otherwise, we can directly use Google Cloud services to do the sentiment analysis. And at the end of the semester, I finished the RA job with him.

I am very grateful that Professor Sui provides me with such a chance to explore AI and deep learning with a specific task. He always encourages me and pays for my GPU servers’ costs (actually a significant amount of money). If he still recruits RA now, you should consider him and have a try.

Another lesson I learn from this experience is that the bar of AI research is too low, meaning that almost everyone taking one or two courses can propose their own models and test some benchmark. The bottleneck is usually the quality of datasets but not the algorithm itself. Therefore, I gave up doing research on CV and NLP to avoid fierce competition.

Moreover, I contributed my first Pull Request for “Dive Into Deep Learning.” Try to find me in the book:

This is the end of my university life until the first semester of my sophomore year. Go back to see more of my undergraduate reflection: Summary.

2 thoughts on “Reflection: Being a Software Engineer

Leave a Reply

Your email address will not be published.