Last month I was working in Zhihu as an intern. I spent 9 hours in programming per day.
I am in anti-spam tech group, the duty of our group is to prevent and delete spam contents on zhihu.com. Currently, the main strategy we use is data based behavior discrimination. That is, we collect behavior data of spammers, find their characteristics, then write programs to filter spammers. We may develop a more intelligent anti-spam system later, but now there is no advanced techniques used. Nevertheless, I learned lots of things from my work.
The first thing is how to work. Before I was learning and coding all by myself. Working in a company is quite different. The project I work with is much larger. The anti-spam system is a part of Zhihu website, which is a much larger system consists of many parts. I need collaborate with other programmers frequently to accomplish my job. Most of time I have several jobs to do, so I need to assess their priorities consistently and adjust my schedule dynamically.
The second thing is getting familiar with Unix shell and Git. These are two basic tools for programmers, I spent some time learning them, but some features are useless for me when I first knew them. I explored much more power of Unix shell and Git due to my job, they are fantastic tools!
I also get to know many open-source projects used in Zhihu like Tornado, SQLAlchemy, Buildout and so on. I didn’t know there are so many wonderful open-source projects in Python world, I hope I can do something for open-source community in the future.
I’m a lazy person, although I like my current job, I don’t want do anything repeatedly. So when I run into some similar works, I’ll try to automate them. I was assigned to write tests for several projects, so I wrote a script to generate code template for tests. Product managers asked me for data of users frequently, so I wrote a program to receive command from website and fetch data automatically. This kind of programs reduced my workload, and made me love coding more.