Please indicate the original source, thank you!

HappyFeet blog

Before writing, ask yourself, how much have you paid in these two years? And how much?

2019 is coming to an end. I remember I had the idea of writing a self-review at the end of 2017, but it has been shelved and not been done. Circle of friends as proof:

Take this opportunity, finally owe their debt to repay.

This is a self-summary, but also a technology of the growth experience.


1. How is the ability of the technical white girl two years after graduation?

As a Java backend development, the current technical level is as follows, I hope the big men do not laugh at:

  • The main programming language is Java, and I have written business code in Scala. In my spare time, I have also written a little Python.
  • For the basic knowledge of Java are more familiar with but not proficient, if the level of the question is relatively deep, may not answer, because has not gone to in-depth study of the underlying source code;
  • Read some Java source code, for example:HashMap,ArrayList,LinkedListStringAnd so on; Know their underlying implementation principles;
  • Most of the back-end technology stacks used by the company are used; Usually write code encounter problems will go to see the source code of these frameworks, and did not complete the study of the underlying implementation of these frameworks;
  • Have some understanding of design patterns and JVM, can basically locate some problems of JVM;
  • Be able to meet business requirements;
  • Basic ability to develop independent projects including DevOps work.

I believe we all know that technical breadth and depth of these two things can not be achieved overnight, but by gradually accumulated bit by bit.

I was also a technical novice. Before my internship, I had never used the most basic commands such as CD, cp and mv under Git and Linux.

More than two years of time, I from a small technology slowly walked to today. What happened in the middle, please listen to me slowly.

2. Xiao Bai’s technical growth experience

In July 2016, during the summer vacation of my junior year, I found an internship at that time. The company I worked for was the same company I am working for now.

When I first joined the company, I was just a blank SLATE. How white is it? A few examples:

  • Never use the Git
  • None of the Linux commands
  • Not sure what a SpringBoot framework is

So I was assigned very few tasks, such as a few days to implement a REST interface to add, delete, and change, and there were already examples for you to look at.

Fortunately, the project was also starting from scratch, so I didn’t have to spend much time getting familiar with the original project. So my daily job at the time was to write some simple business code based on the existing code, Ctrl + C, Ctrl + V, and then change a little bit, complete code porter. If you encounter problems, you will check the data by yourself. If you can’t solve them, you will ask the Leader for help. Then I would write down the new knowledge and problems I encountered every day. I would go home after work in the evening and continue studying. I would spend a few hours studying at home on weekends.

The most impressive ones are:

  • Every day a Linux command series: AT first I read this to learn Linux under the command, later bought “bird brother’s private house dishes – basic learning chapter”, for the zero Linux foundation of the people this book is particularly useful, highly recommended.

  • Liao Xuefeng’s blog: Teacher Liao’s technical blog is also very helpful to me;

In addition to these:

  • Related technical official documents: most of the official documents are relatively simple, relatively quick to learn, but basically in English

  • And a lot of blogs written by big guys

I would like to express my heartfelt thanks to those who have helped me! Thank you very much indeed!

At that time also did not have their own learning system, are generally their own resources on the Internet all the way blind learning, information, see the blog, read a book.

Through this internship experience, I have accumulated a lot of basic knowledge and gradually formed my own learning system. This has a great impact on the subsequent growth.

After graduation, I became a regular employee of the company. There was no such thing as a graduation trip. I just joined the company.

There is a difference between a regular employee and an intern. The tasks of an intern are very simple, and when assigning tasks, they will tell you what to do and how to do it, while the tasks of a regular employee are obviously different. Basically, they give you a demand directly, and you can divide it into sub-tasks by yourself and then complete it. Since I just graduated and have been working as an intern in the company, I have a good understanding of what kind of Leader I am. Therefore, at the beginning, the Leader will give instructions to teach you how to split tasks and the priority of tasks, and then gradually start to rely on themselves and complete tasks independently. I also constantly improve myself in this process.

That’s basically what happens in business, and then we’re going to talk about technology.

There is generally no technical accumulation for fresh graduates (except for the big guys, of course). Therefore, the Leader usually proposes the framework to be used, and then you study and learn how to use it in your daily life and after work, and then directly apply it to the project without thinking about why you use this framework instead of other frameworks. It belongs to the level of “knowing how and not knowing why”. So it’s basically brick, brick, brick.

Since I was working for a small startup, I had access to almost everything. In addition, I prefer to “meddle”, like the usual upgrade deployment, I will also participate in the first time to help solve any problems, so I have learned a lot of DevOps related things, and apply the knowledge of Linux.

In less than a year, the company had basically run out of technology stacks to use, and then devOPs-related stuff could be tweaking. And then their own peacetime write code quality is also good (test big guy said that I like to test the code, because few bugs! A little self-praise hahaha), hence the following story.

Around September 2018, the company received A project in Shanghai, which was our top priority at that time. Let’s call it Project A. The company plans to select several people with good abilities to do this project. Since the Leader just got married, the company could not let him go on business trips, and the other one also became a father. In addition, the project itself will not use too advanced technology. Finally, for various reasons, I was selected.

From October, I started the development of project A with developer Y, A back-end developer with 3-5 years of experience, A front-end developer and A test team. At the request of Party A’s company, we went to Shanghai to work in Party A’s company in November.

Working in Party A’s company is much more stressful and the hours are tight.

However, the office environment of party A company gave us a big surprise, which is right beside the Bund.

  • In the evening, you can enjoy the night view of the Bund

The project lasted from October 2018 to July 2019.

So what is my role in this project:

  • In the early stage, I was responsible for my own functional modules. Later, I gradually became the image ambassador of the company in Party A. I communicated with party A about product docking and technology docking. In the mid-year review, my boss intended me to be a Project Manager (PM), which not only refers to the current Project, but also other projects in the future after the completion of the current Project. Meanwhile, during this period, the person in charge of party A also offered me an olive branch.

After the first phase ended, the two sides of the company had some differences on some points of view, and finally the second phase was not carried out, and I returned to Chengdu to continue the development.

Let me tell you how I felt about this project: there was almost no growth in technical depth, mainly dealing with customers, communicating and matching requirements, and realizing business.

So it’s mostly soft skill growth (although I can’t see where that is) and really little technical growth. Usually, I mainly communicate with customers to meet their needs. I get off work late and study less after going home. During this time, I briefly read the book Head First Design Patterns, then did some reading of the book High Performance MySQL (less than 30%), and that’s about it.

At this point, the technical experience is almost over.

Here are some of the techniques I have used in the past two years. I hope to have some reference for you.

Some of the technologies I have used since graduation (mostly just at the level of use, ready to choose one of each category to study its source code implementation) :

  • Databases: Cassandra, Redis, Oracle, MySQL
  • Programming languages: Java, Scala, Python
  • Code building tools: Gradle, Maven
  • Continuous integration: Jenkins, Docker, Rancher
  • Version control: Git and SVN
  • Framework:
    • Spring related: SpringBoot, SpringDataJpa, SpringCloudConfig
    • ORM framework: MyBatis, Hibernate
    • Parser: ANTLR
    • Log related: SLF4J and Logback, log4j2
    • Database Migration: Flyway, Liquibase
    • Authentication: OAuth 2.0, JWT
    • Unit test related: JUnit, Mockito
    • Concurrency frameworks: Akka and Actor models
    • Message queue: kafka
    • Excel framework: POI, EaseExcel
    • Process engine: Camunda

Now let’s analyze some life experiences.

What is xiaobai’s life like?

  • Officially graduated!

  • I updated my equipment as soon as I got my regular salary! Big love FILCO

  • Bought myself an iPhone 8 for my birthday!

  • Thinking about life after working late at night

  • Start cooking and bringing your own meals

  • College roommates get together in Yichang

  • I took my parents to Hangzhou and Shanghai

  • Books I bought (I have almost finished reading the novels, and I am still chewing on the technical ones)

In fact, some of these experiences have been a little fuzzy, looking at the previous talk and circle of friends or can probably remember. All right, let’s move on and see what the future looks like for Xiao Bai.

Small white vision of the future

What I want most at present is to improve my technical depth as soon as possible.

I started my blog as early as May, 2018, and kept writing 2-3 posts every month for several months. Later, I stopped updating my blog in December, 2018 after I went to Shanghai.

After three months of self-decadence, I suddenly began to work hard and started to update my blog: HappyFeet.

After one or two months of reading and learning, I have clearly defined my goals and realized that I had taken some detours: I had studied in the wrong order.

For example, I read the book “Understanding the Java Virtual Machine in Depth” in 18 years, and still have only a few impressions. Behind also roughly read the relevant source code of SpringBoot. But for Java J.U.C, NIO related source code has hardly read, how to say, it feels like the foundation is not solid to learn higher things, a bit of the cart before the horse.

The order in which I currently intend to promote looks something like this (recently looking at the source code for J.U.C) :

  • The JDK source
  • Data structure, algorithm correlation, etc
  • JVM, GC, and so on
  • Database related, how is the data stored, indexing, tuning, etc.
  • Spring source code, AOP, IOC, Tomcat and so on
  • Other usually used some framework source code
  • Hot technology
  • .

Let’s make the first four transparent, and the rest should be no problem.

Easier said than done, the most important thing is persistence.

Hahaha, I can see the big guy waving at me…

This is the end of the story, if you feel good, to help you, you can point a like or comment on support, ash often thank ~😊