Skip to main content

My 2017 Review

Passion for System Design

After finishing a one year project, my longest stable team (lasted for 3 years) was separated into two smaller teams. Sadly, but that was a good chance for me to become a key member in my new team. My preferred skills were about system architectures; therefore most of the tasks of building the application structures were handled by me. In order to enhance my design system skills, I have spent much my time for reading books closely after work. These following books help me a lot.
- Object-Oriented Thought Process | Matt Weisfeld
- Head First Design Pattern | Elisabeth Freeman and Kathy Sierra
- Java 8 in Action: Lambdas, Streams, and Functional-style Programming | Alan Mycroft and Mario Fusco

Junior Technical Architect

I was requested to join a technical architect team (aka Team. Alpha) where I actually had gained experiences almost on interviewing candidates for my company (lol). Besides, I noticed myself must improve the skills of convincing people because I had had a strong debate with other members once in a sharing session (yes, I failed). It was really tough to convince others when introducing a stuff/an idea was totally new. But, "Do it Anyway" because debating makes problems clear.


New MacBook

This was something very normal but I think it's worth the money for tackling a new experience on a new operating system (macOS). I really loved it!

Facing challenges in finding a new company

I had worked at my old company (Axon Active Vietnam) for more than 4 years. It was not too long but I felt that it was the time for me to move out of my "safe zone". I had spent much time for interviewing to select a company for my new journey. Sadly, I had failed in a lot of places, from Outsourcing to Product to Startup companies. It was really a frustrated decision but eventually, I made a resignation when I didn't have a new offer. And, even my manager who also suggested a raise to keep me on my team. I appreciated that.

Fortunately, I had received several offers (exactly 3) at the end days before I left my old company. The following was my log: (Company | Applied position | Interview Notes)
  1. NVG | Senior Web Java Developer | Various questions about frameworks are being used.
  2. LenderRate | Developer | Algorithms (level: hard, difficult).
  3. ContentNet | Senior Developer | Deeply technical questions about Java core, design patterns and how to approach a technology.
  4. Absolute Vietnam | Developer | Deeply technical questions about Java core (but, it's my strong points).
  5. Innotech | Full-stack developer | Behavior questions (quickly, only <30 minutes).
  6. FPT | Developer onsite longterm in Singapore | Specific frameworks (Restful API, NodeJS, Microservices).
  7. Adnovum | Professional Developer | How you understand your most favorite projects and used technologies; algorithms (level: easy/medium).
  8. Freelancer with my beloved team | So, I passed it without conditions (Haha).
  9. Politely declined to interview at Zalora, SAI GON BPO.

Winning my first project with my freelance team

With a strong spirit of a startup, my team focused on trying to make our first project super succeed by providing a good quality and fast-building application. It was not only collaborating well with customers but consulting them to have a "better" application.

The following were key values of my team:
- Having the same vision: sharing a "can do" attitude. We organized some practical sessions each sprint such as knowledge sharing, code reviewing, and retrospective.
- Focus: reflection and adaption on whole sprint goal, not individual tasks status.
- Being agile: being flexible/effective at work rather than following strictly a process.

My desk at CirCO CoWorking Space

Happy New Year! 2018.

Comments

  1. Holy crap! but, it was cool. Algorithms can be called as "Chi" in Kung Fu!

    ReplyDelete

Post a Comment

Popular posts from this blog

Sharing a virtualenv across several Python projects using Pipenv

There is a standard library for all projects in Python. However, several projects don’t always have the same dependencies all the time. That is where virtual environments come to play. You can follow this official document to use two separated tools  virtualenv and pip to  fulfill that need. My preferred alternative is to use pipenv . Pipenv is easy to use and convenient. The following are my steps to make a shared virtualenv for my all projects which requires the same dependencies. Step 1. Create an isolated virtualenv. python -m venv my-shared-env Step 2. Create a symbolic link to the created virtualenv. cd project_1 ln -s ~/.local/share/virtualenvs/my-shared-env .venv I have encountered the following issue at step 1. FileNotFoundError: [Errno 2] No such file or directory: '{my_project_path}/.venv/bin/pip': '{my_project_path}/.venv/bin/pip' The root cause was I tried to create virtualenv by running pipenv install and renaming the generated virtualenv to ...

Regex - Check a text without special characters but German, French

Special characters such as square brackets ([ ]) can cause an exception " java.util.regex.PatternSyntaxException " or something like this if we don't handle them correctly. I had met this issue. In my case, my customers want our application should allow some characters in German and French even not allow some special characters. The solution is that we limit the allowed characters by showing the validation message on GUI. For an instance, the message looks like the following: "This field can't contain any special characters; only letters, numbers, underscores (_), spaces and single quotes (') are allowed." I used Regular Expression to check it. For entering Germany and French, I actually don't have this type of keyboard, so I referred these sites: * German characters: http://german.typeit.org/ * French characters: http://french.typeit.org/ Here is my code: package vn.nvanhuong.practice; import java.util.regex.Matcher; import java.util...

What the heck is Meteor DDP?

I was using Meteor for my messenger project. I was so curious about the real time connection. I wanted to know how exactly this mechanism works. In this post, I will go through the DDP Specification, an overview of WebSocket, and a simple demo about how to subscribe a publication of Rocket.Chat (containing a DDP server) from an external webpage. At a glance, I knew that Meteor invented a protocol called DDP which uses for handling real time connection. So then, what is DDP? "DDP (Distributed Data Protocol) is the stateful WebSocket protocol that Meteor uses to communicate between the client and the server." [1] All right! Why does DDP matter? "DDP is a standard way to solve the biggest problem facing client-side JavaScript developers: querying a server-side database, sending the results down to the client, and then pushing changes to the client whenever anything changes in the database" . [2] In order to understand deeply the protocol, I decided ...

JSF 2 - Dynamically manipulating the component tree with system events

Let's suppose we want to modify the metadata (attributes)  of elements such as render , requried , maxlength but we do not define in JSF tags. The manipulating components can be conducted in Drools  files, for example. How could we do? I think that is what we need to change something of component tree during JSF life-cycle. JSF supports event handling throughout the JSF life-cycle. In this post, I use two events: postAddToView for scanning components tree and preRenderView for manipulating the meta of components before rendering to GUI. I modified my own project from previous post for this example. This is my first further JSF trying out with the project as I said before. :) We define the tags f:event below the form - a container component of the components which we want to work on. The valid values for the attribute type for f:event can be found from tag library document  of JSF 2. <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" x...

Coding Exercise, Episode 1

I have received the following exercise from an interviewer, he didn't give the name of the problem. Honestly, I have no idea how to solve this problem even I have tried to read it three times before. Since I used to be a person who always tells myself "I am not the one good at algorithms", but giving up something too soon which I feel that I didn't spend enough effort to overcome is not my way. Then, I have sticked on it for 24 hours. According to the given image on the problem, I tried to get more clues by searching. Thanks to Google, I found a similar problem on Hackerrank (attached link below). My target here was trying my best to just understand the problem and was trying to solve it accordingly by the Editorial on Hackerrank. Due to this circumstance, it turns me to love solving algorithms from now on (laugh). Check it out! Problem You are given a very organized square of size N (1-based index) and a list of S commands The i th command will follow t...