About Ten resume

Ten resume is our first work, this is a wechat small program, used to generate beautiful resume template.

At the same time, considering the user’s privacy, added the private resume function.

So what exactly is a private resume?

In traditional resume delivery, HR usually prints out our resume and leaves the candidate’s resume after the interview. This may cause the disclosure of users’ private information to a certain extent. Private resume hope can solve this problem!

In contrast to traditional paper resumes, private resumes generate a link to your personal resume. With this private resume link, HR can view your resume in real time. You can set an expiration date for your resume in the mini program. When the expiration date is reached, your resume will be automatically recycled. To further prevent others from viewing your resume, you can also set a password that is unique to your current private resume.

At the same time, you can also open or close the current private resume through the mini program. When closed, no one will be allowed to view the current private resume until it is opened again.

In fact, the part I’m most interested in is the development of private resumes. It is true that interviewers in some companies will throw away a user’s paper resume, which will cause a high probability of the content of the resume leakage problem.

Still, one would surely argue that what can be done about the fact that HR now routinely requires a hard copy resume? Of course, all the advances can not be improved in a short time, and maybe the situation will change in the future with the popularity of such products. I firmly believe that the traditional paper resume will eventually be abandoned.

At that time, the company was just established. I wanted to announce the birth of the company with a small but sophisticated product, and show the strong development strength of the team at the same time.

So one of the first things the company did was call on everyone to think big and think about the first product that would connect the company to the world. Finally, I found that the idea of this resume product was interesting and not too complicated. So this product became our first product to connect the world.

After prototyping the product, the real challenge begins!

Challenge 1: Back-end development

Back-end development was our first challenge. In fact, my first job was backend development, and I did it for almost a year, and it did build up, but it didn’t help me very much. Almost five years have passed. I spent the next four years developing software for mobile platforms. On the back-end knowledge point, mostly forgotten, now pick up, many difficulties!

And, as time goes by, the old technology is slowly being phased out. So I decided to start again!

Step 1: determine the technology selection

For this step, I chose a more cumbersome but well-practiced solution:

  • Web framework: Spring Boot + Apache Shiro
  • Database framework: MyBatis
  • Service registration and discovery: Eureka Server
  • Route gateway: Zuul1
  • Programming language: Kotlin

Step 2: Solve the routing gateway problem

In the selection of routing gateway technology, finally established the use of Zuul1 as a routing gateway framework. In fact, a better option is the Spring Cloud Gateway. However, using the Spring gateway requires a lot of new knowledge to do it, and you also need to deal with the transaction problems of the database, which can bring a lot of trouble. In addition, in the articles examined at that time, it was found that Spring’s gateway performance did not bring substantial improvement. Therefore, Zuul is finally established as the back-end routing gateway framework.

After defining the technical framework, the first problem that needs to be solved is how to route to the different service layer logic through a single field. For example: routing to different logical service layers by version numbers to avoid interference between versions, etc. Unfortunately, Zuul’s routing processing is statically configured, which requires extending Zuul to a gateway framework for dynamic routing configuration.

For this part of the problem, it took about half a month from the initial design to the final finalize of the whole backend framework. Dynamic configuration on the one hand and gateway performance on the other need to be considered. We solved the problem by constantly trying and looking up information. The difficulty of this question ranked first in the whole product development process.

Step 3: Integrate the security framework

Security architecture here does not just mean data encryption. Of course, because of the future of paid transactions, there’s no doubt that our data is encrypted. But here, I’m talking about access to the Java security framework.

For the convenience of future development, I would like a security framework to help take over user permission control, assignment, and so on. For this, Spring Security is of course the first choice. However, when I tried it out, I found that Spring Security’s design was too complex and usability was not high. Also, flexibility is limited, forcing a different approach. Finally, Apache Shiro was used as the security framework for the platform.

Apache Shiro circumvents many of Spring Security’s problems to some extent, and its clean design is evident from the beginning of the documentation. Apache Shiro is much easier to access than Spring Security, and much more customizable. Finally, security framework access is successfully completed.

Step 4: Figure out the logical layer code

In fact, in my early days in Java backend development, we used a combination of SSH (Spring, Struts2, Hibernate). Now Struts has been gradually phased out, replaced by Spring MVC + MyBatis + Spring. At the same time, to further ease the difficulty of Java Web development, Spring officially launched Spring Boot. Compared to traditional Java Web development, Spring Boot can almost remove configuration files and use annotations to complete all configuration, which is much more affinity. So I ended up using Spring Boot to build our Web application. However, all these are new knowledge points for me, so I had to learn them all over again. Fortunately, I had a solid foundation before and got started quickly.

Challenge 2: Applets development

With back-end development out of the way, the second challenge comes: applets.

Almost none of the team members had any small program development experience. In fact, one of the team members has some experience in small program development. But it turns out that the student’s development experience is still very shallow, not enough to support the development of the whole small program. To this end, I decided to learn the small program, to help you complete the architecture of the small program side. Develop small program development specifications.

The development of small programs is relatively easy, but there are a lot of pitfalls, which I will write about in another article.

One of the biggest problems in applets development comes from team members, one of whom works part-time. Because learning knowledge is slow, at the same time to their own self-confidence is not enough. Add in the trivialities of life, and even simple tasks assigned fail to be completed, leading to a drawn-out development process.

Finally, in the Release library, I was surprised to find that I ended up involved in more than 70% of the applets. Seeing this kind of scene, I have mixed feelings in my heart, which is clearly not a virtuous circle.

This also makes me determined to rent office buildings and hire office staff from next year. Part-time employees will be arranged and handled by full-time employees. And give the part-time employee certain funds to encourage appropriately.

Challenge 3: Web front-end development

Web front-end development ranks second on the difficulty list. Almost none of the team members had front-end development experience. One of my classmates had done very little front-end development, so I asked him to lead the development of the first template.

But in the development process of the first template, it is also constantly stumbling and took many detours. During that period, it was the most difficult period in the whole development stage. My classmate and I were busy from morning to midnight every day. It lasted about 10 days in a row, no weekend, no lunch break. Fortunately, the first template was successfully developed.

After template development is completed, the basic form of the entire product is presented in front of everyone for the first time. Due to the tight time in the early stage, we did not have an adequate process to show the complete product prototype. As a result, the part-time students involved in the development of the product had many problems in understanding the design. This problem of understanding would later become a headache for me, and was one of the most valuable lessons learned during the development.

On the Web front-end technology selection, also took some detours. Initially, I considered using a combination of Vue + TS as front-end development. When the architecture was finished, it turned out that this combination made front-end development much more difficult. This will delay the development of the project to a large extent. Therefore, he immediately abandoned the combination. Switch to jQuery, which is easy to learn. In fact, the template page is quite sufficient for our single-page application using jQuery.

After the selection of technology is determined, there are still some problems. Because the first student developed in a hurry, there was no certain standard. Lead to the second student relay when there was a confused situation. Therefore, the second student had to re-learn Webpack and re-design his own code architecture, which slowed down the development progress to some extent.

In fact, the whole development process, the Development of the Web front-end does occupy a large proportion of the development. This challenge is probably the second most difficult of the development.

Stage 1 Summary

In the whole process of developing the ten-point resume, it was like taking an adventure, and all the knowledge was new to us. We need to learn from zero, and it’s the courage to learn from zero that makes me more confident that I can handle anything and not be afraid of the first time. At the same time, I also firmly believe that this unforgettable development experience will give all the students in the team indomitable and fearless courage.

It was a very memorable development experience, and the first time we ventured into the unknown, and finally overcame many difficulties to bring our resume to everyone.

This is not the end, this is just the beginning of our story!

Finally, thanks to all the students who participated in the development of the ten-point resume, give yourself a big hand! What you’ve experienced is not just building a product, but overcoming your fear of the unknown and taking the first step. This harvest will benefit you all your life!

Afterword.

For those of you who left in the middle of your resume development

During the development of ten resume, two students left the development team. The first student chose the development of another product because he was developing another product at the same time and time was limited. This is completely understandable. It is a matter of personal choice and perspective. Such students will not be accepted again in the subsequent team expansion. Because with the first time, there will be a next time. Such students can not stabilize output, stable input, because of all kinds of problems vacillate.

Another student chose to leave in the middle because she could not stand my stern personality. It’s easier to understand, of course, that such a departure is almost completely insensitive to me. On the other hand, if a student has invested a lot in the development, he or she has contributed a lot to the team. Suddenly chose to leave, to my blow will be bigger. And a reason like this student, chose to leave. For me, I will feel relieved, because even if such students stay, they can not follow me to the end. His ability to withstand pressure, as well as his willpower, meant that he could not go very far. The road of entrepreneurship is like climbing the Pearl Peak, and there is always the risk of falling to death. You may not feel that you have to fall to death, I have to use the most severe tone of scolding wake you, you are in the “mountain climbing”, you should not sleep! However, students like this can be accepted again as employees in the subsequent development, because they at least meet the conditions of stable output, but their willpower is weak, which can be gradually improved.

The departure of all two students is very appropriate timing, and it is the greatest respect for the team mates to choose to leave at the early stage of the team. Please rest assured that I will not blame you. I am very happy that you chose to leave the team at the early stage, which is very important. It’s like going on a planned trip and having people walk out 10 days before the trip is actually good. We can also reorganize students to join the trip, which is a good thing, I want to thank you. At the same time, the exodus also helps to screen out better employees. Of course, I also hope that the two students who left work smoothly and everything goes smoothly.

Wechat scan the qr code below to experience the mini program