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

Junit - Test fails on French or German string assertion

In my previous post about building a regex to check a text without special characters but allow German and French . I met a problem that the unit test works fine on my machine using Eclipse, but it was fail when running on Jenkins' build job. Here is my test: @Test public void shouldAllowFrenchAndGermanCharacters(){ String source = "ÄäÖöÜüß áÁàÀâÂéÉèÈêÊîÎçÇ"; assertFalse(SpecialCharactersUtils.isExistSpecialCharater(source)); } Production code: public static boolean isExistNotAllowedCharacters(String source){ Pattern regex = Pattern.compile("^[a-zA-Z_0-9_ÄäÖöÜüß áÁàÀâÂéÉèÈêÊîÎçÇ]*$"); Matcher matcher = regex.matcher(source); return !matcher.matches(); } The result likes the following: Failed tests: SpecialCharactersUtilsTest.shouldAllowFrenchAndGermanCharacters:32 null A guy from stackoverflow.com says: "This is probably due to the default encoding used for your Java source files. The ö in the string literal in the J...

My must-have apps for daily work

There is no doubt that cool apps can help us be more productive and enjoyable at work. For the time being, I really love the following apps which are used by me almost every day. 1. A personal Kanban In fact, a personal kanban is the most useful app for me. Why does it matter? It is not just a to-do list, but it keeps me motivated every day because it helps me be able to know what my "big picture" is. I usually set up my plans together with a path to reach them.  KanbanFlow  is my preferred tool. KanbanFlow 2. A terminal Needless to say, a terminal is a must-have app for every developer, especially the ones use macOS/Linux. Due to its importance, I love to decorate and enhance it to be super exciting with various tools such as  iTerm ,  oh-my- zsh , and  thefuck . ;) iTerm + oh-my-zsh 3. A documentation "ecosystem" As a developer, I can not remember all things that I have experimented a day. Moreover, a document is really useful for sharing an...

Performance of a Data Structure

Why data structures matter The fact is that programs are all about processing data. Data structures are referred to how data is organized which affects the time of executing a program. How to measure the performance of a data structure In order to measure "how fast"/efficiency/performance of a data structure, we measure the performance of its operations. There are four basic operations including reading , searching , insertion , and deletion . A pure time consuming is not used for the measuring because it is not reliable depending on the hardware that it is run on. But instead, we use the term time complexity which refers to how many steps an operation takes. An example of how a single rule can affect efficiency Let's compare two data structures: Array and Set (with N elements). 1. Array - Reading : 1 step (because the computer has the ability to jump to any particular index in the array) - Searching : N steps (the worst case with linear search) - Inserti...

4 Remarkable Notes for JSF Apps Using HTML5

In the previous post , I've already shared with you how my team consults clients by using a HTML prototype. This post is about the used technologies for reusing the provided HTML template and communicating with backend. What is the issue when using HTML elements with Primefaces components? Primefaces is a great extension for developing JSF web apps. However, it is really frustrating in case we have to make it work with an existing HTML template. Why? - Primefaces has its own theme for styling. - Primefaces changes the HTML structure. Therefore, that would be a huge effort to use the Primefaces' components to replicate the elements of the HTML template; especially it is impossible for images drawing by " canvas " tag. That requires us to find a better approach. Since Java EE 7 (introducing JSF 2.2 included), it supports to use HTML5 elements . The idea is that JSF components don't effect the style and HTML structure, so we can easily reuse the provided HTM...

Monday vhandit #2

  Introduction to OpenLDAP directory service "A directory is a specialized database specially designed for searching and browsing, in addition to supporting basic lookup and update functions" A directory service can be local, providing a restricted context; or global, providing service to a much broader context. Curlie is a good example of a directory service. LDAP (Lightweight Directory Access Protocol) is a protocol for accessing directory services , specifically X.500-based directory services. OpenLDAP is an open-source implementation of LDAP. Writing system software: code comments I have read Clean Code (by Uncle Bob) and I thought that I should void comments since the code it explains its implementation itself. That is right but not always true. In this post, the author categorized the comments into 9 types. Only "trivial comments" and "backup comments" are the ones that should be avoided. I myself agree with "writing good comments is harder tha...