Internal systems and the environment to grow up members

Recently I train running in the near park from my apartment because I plan to join Da Nang marathon in August…! I’m not so good at running for long distance but I’ll try it! I’m going to be iron man in a half year 🙂

In this blog, I’d like to introduce our internal systems and the environment especially to grow up members. These are not all but I would be glad if you could imagine how we grow up (especially technical skills) in our company together.

HR system as foundation of the company

Ideal Engineers

We define human resources clearly that the company requires. The picture at the top of this blog is the poster to show it. All engineers are aiming such “ideal engineers” and they are evaluated with following it.

This was considered and defined by all managers. Internet industry changes very quickly, and as a result, important required technical skills change too. But we will keep working for tens years from now on. So we considered “what is the most important attitude to be top level of engineers in any generation from now on?”. Then here are the answer.

We also defined “ideal managers” (I don’t publish it here) and managers aim it too.

All internal systems and the environment are designed to be “ideal engineers” and “ideal managers”.

MBO

MBO stands for Management By Objectives.

We adopt it as a tool to promote continuous growth (and HR assessment) of members. Through this method, we can confirm by ourselves our string points, weak points and what we want to do from now on. With considering of them, each members set objectives. In order to set optimum objectives for each members, we have interviews between managers and members. Half year later, we check the achievement level again. MBO can be a good communication tool between them too.

Welfare

Work in Japan

In order to learn the latest technique, we started the system to “work in Japan”.

In this system, if members hopes it and get approval of company, they can try to work in Japan. In Japan, they work with Japanese engineers and learn there with learning the latest techniques. Currently, 2 members are working in Japan from Vietnam. I look forward to meeting them again with much growth…!

Purchase technical books

In our company, we encourage to read technical books aggressively in order to learn the latest techniques and get excellent knowledge efficiently. We have budget and members can purchase any technical books within budget. We have tens of books in Vietnamese, English and Japanese currently.

Incentives for blogs and presentation in seminar

We strongly encourage to output something not only inside but also outside. Outputting for others almost equals to teaching, and it needs more understanding level than getting knowledge for only myself. So it should be a good opportunity to learn more. In our company, we often write blogs (like this) and hold seminar. Then members can get incentives. Of course, it can be helpful to share knowledge among members.

Japanese education

It’s a kind of volunteer but we hold Japanese classes twice a week for applicants (for beginners). Our company is Japanese one and basically product owners are Japanese. It must be more efficient to communicate in Japanese. Also members can be easier to have a chance to “work in Japan” if they have Japanese skill.

External training

In order to improve basic skills such as project management, soft skill, team work and so on, we sometimes hold external training. But this kind of services in Vietnam is not so high quality and meaningless to pay for it. So we check quality of services in advance before we are provided external training course.

Internal and external event

Tech Talk

In order to share know-how and knowledge of members each other, or to grow up geeky culture, we hold the event once a month called Tech Talk. In this event, we register as a presenter in advance, and can give a presentation. Of course, a presenter can get incentive written above. As you know, we often use OSS product. Yes, we’re riding on the shoulder of giants. This must be culture of IT industry. We should not “hide” and share our knowledge aggressively as long as we work in IT industry. This is our thought.

TDD Boot Camp

One of the most important skill in our company is test code. Actually TDD is optional but it must be helpful for us to write strict test code and to make our production code clean. TDD is skill and we need to practice. In order to keep practicing TDD, we hold TDD Boot Camp once a quarter. In this event, we “compete” to practice TDD and choose TDD king!

Duy Tan Geek

Through this event, we aim “real” IT special zone with cooperation between companies and university. We provide opportunities to output and communicate easily. In our company, we strongly recommend to give a presentation in this event because it must be a good chance to get feedback from lots of great engineers and to discuss deeply.

Development environment

Development support tools

We use lots of tools to support our software development but we especially use Atlassian products such as JIRA, Stash and Confluence. They are excellent products and are well designed for more efficient project. I’ll explain about Stash later below but we realize pull request + code review with it. And we can share our knowledge easily with Confluence. We store all of information (including minutes of meetings!) and can refer them all anytime.

Code review

As I described above, we realize pull request + code review with Stash. Code review is very important to improve coding skill. Reviewer can see codes written by the other programmers and can notice new way to write code sometimes. It can be new knowledge. Reviewees can get nice feedback from reviewers and they can find better way to write. Reviewers and reviewees can grow up togeter through this system.

The other tools

We use more tools but especially we adopt Jenkins for CI environment. With this tool, we run all of test codes, plugin to measure code coverage rate and inspections at the timing of source code merge. Then we can know source code quality and whether or not merging affects to degrading soon. This can help us to build good and stable software.

Dual monitors and chair

We basically provide dual monitors because productivity can be double! Because we have to open lots of windows when software development such as browsers, IDE, explore and so on. This is the easiest way to improve productivity, I think. Also, we provide comfortable chairs because we work with sitting for long time. Software development is desk work. If we can sit down on comfortable chair, we can keep good software development for long 🙂

Office environment

Cafe

We have “cafe” inside our office. We can listen to comfortable music here. This is the place used for lunch, break and birthday party. But it’s possible to work here. We can refresh to work to change the place!

Standing desk

I don’ know why but he works with standing despite we provide comfortable chair. But it’s better for his health and productivity. We can choose standing or sitting at work in our company. (Actually most of members are sitting but…)

Free style

Yes, he in this photo is NOT working but just having a break (this is one of the meeting room, not outside). But what I want to say is not such thing. We can choose any cloths at work. You wanna code with formal suits? My answer is NO! Creative ideas can’t occur to me.

You could imagine the environment that we work? I hope it can attract you.

Now we’re looking for great engineers who want to (and can) grow up with us. If you’re interested in our company, please do not hesitate to contact us.