Friday, July 07, 2017

[Worth Thinking] Years of experience

What are years of experience meant to you? How do you count the years? Is it the number of years you had in some companies, or how long you had worked as a particular role? What years of experience meant in the society?
For example, should someone with ten years worth of working experience in a company consider "experienced" in a particular role, or that someone only had one year of experience that repeated nine times? 
How many years of experience you have?

Friday, June 30, 2017

Marketing now


With the advancements and immense adoption of the Internet in the past decades, it is much easier to reach your audiences today. Anyone can easily share a piece of content online and instantly get viewed by hundreds or even thousands of targeted audiences. It is also significantly cheaper compared to traditional marketing techniques, and there are vast collections of information to guide Marketers how to create their online presence.

However, while there are more tools and better technology available, the consumers are also hailed with a vast amount of information, beautiful images and engaging metaphors every day. These surge of marketing contents in return made them more sceptical on the stuff they received through these touchpoints.

Rather than just being shoved with digital content, they wanted to participate, and be engaged with those companies. The consumers desire an ecosystem to allow them to be a part of these enterprises decision process, enabling them to have a say in the communities. Social media, in particular, is one of the most remarkable instrument today to engage consumers with your companies. People trust social media they are taking part in, and are more willing to try out what their social media network recommends.

So the question now is how companies can engage their customers and let them feel part of something larger?

Wednesday, May 04, 2016

Starting to understand the word Leadership

About eight years ago, I told myself that the path I should journey into was the management world. But sadly, I never really understand what the management world is. I only knew, well, I wanted to be a Project Manager.

But what exactly is a Manager? Manager, in any organisations, is someone who was granted with a position to govern over a group of one or more people to fulfil certain tasks during their working hours. The people that were reporting under that Manager will be required to comply with any order within his/her control. And that's my friend, is called a "position leader".

But what is so peculiar about this "position leader"? Well, anyone who worked under this person will not only be unmotivated, but would only do what is needed from them, and will never contribute anything more to the organisation. Have you ever counter this strange phenomenon in your office that all the employee left the office exactly at knock off time? 10 minutes before d-time is the toilet break, 5 minutes before d-time is the saying goodbye stage, and what happen exactly at d-time? An empty office without a single living soul.

But why is it so? The answer is simple. Heart. All the employees under this person had never felt any sincerity of being cared for and never felt the heart of this leader. This unappreciated feeling results in distrust of this "position leader" and would never follow him/her outside their jurisdiction.

That is what happened to me two years ago when I was with DSTA when building an internal application with 13 developers. As all other "Managers" had left the project, I am lucky enough to be appointed as their Scrum Master, someone who is similar to a Manager. It is a very new position for me as I had never lead such a big team before, and not even worth mentioning, to influence the Scrum way to them.

Excitement rushes all over me, and the first thing I would want to do is to execute all the Scrum methodology processes to all the developers. Day by day, I would make changes in different areas and try to enforce everyone to follow them. Then came one day, suddenly I realise how distant I am with the team, and how much unhappiness I had created just within a three months period. No one on the team approves me or appreciate what I had done in the last couple of months. It was more of a devastating experience to them, then an opportunity to learn something new. Deep down, I am sure that I was trying very hard to create the best out of everyone, but in reality, I don't understand what went wrong.

Looking back now, I realised what I had wanted to do is not wrong, but just that I never really get the trust of the team before implementing so many changes. Everyone in heart will always have this fear of change as it an unknown path where they had never stepped foot on before. And without a good leader they trust to bring them along, they will never move out and explore the new horizon.

This experience is just a glimpse of what a fail leadership is really about, and I now understand that I am still just around the starting line of this overwhelming topic.

Sunday, May 01, 2016

My SEO Experience


Search Engine Optimization is one of the fastest moving industry that changes its algorithm now and then. As someone who is always keen in the latest SEO trend, I consistently update myself with the most current information so that my effort will always provide the best value to all my clients.

Even tho search engine algorithm for Google or Bing are constantly changing, I still believed that fundamentally these big providers are always moving toward providing more values to their users. By saying value, I meant providing accurate information to their users by semantically understanding each website sole purpose and meaning. This is the reason why I always focus on the business first, even before talking about the website and SEO portions.

In my past 10 years of developer life, I am honoured to be appointed by some of my clients to handle their SEO as an analyst. The following are some of the websites I helped to improve their performance in search engine:

http://www.siidcap.com/ (on-going)
http://letsvolunteer.today/ (down)
http://heartlandbuzz.hdb.gov.sg/ (down)
http://www.nexwavetelecoms.com/
http://www.digitalwalkietalkie.com.sg/
http://www.csfsolution.com.sg/

Here are some of the steps I took to help my client to improve their search engine performance. These are just the tip of the iceberg, and there are more subtle steps to be done.

1) Before we even talk about bringing traffic to the website, first and foremost, is the website presentable? Does the website align with the business branding strategies? Does the website capable of converting users into their client? If not, the best way is to start the process is by re-aligning and re-designing the site. During this process, we will identify the demographics the company is interested in so that we can effectively pinpoint to that sets of audiences.

2) Discuss with my clients to come out with the best "keyword phrases". Normally, I will sit down with the company stakeholders and write down all the keyword phrases they think is important, and do research on tools like Google Adwords keyword planner to understand what is the best list of keywords to optimise.

I always suggest looking into their online competitor's website and research on which keyword they choose to optimise so that we will know more about how others position their SEO effort.

3) Next, would be the Technical Phase. The website should be technically friendly towards search engine crawler where it can easily pick up the necessary information and semantically understand the purpose of your site. Keywords phrases will require being strategically incorporated at difference sections inside the website markups and URL to communicate effectively to the search engine about the site.

One of the importance of this step is how Google or Bing will display the website inside their search engine. Does this page have a rating? Is it a restaurant or does it have a geographical address?

4) Content is always the key priority in SEO. I will guide the company to provide content that has all the necessary keyword phrases at difference section of the content. This allow's the best impression to the search engine on the selected keywords.

5) How does my client know their SEO effort is worthwhile? Measurement. It is when we analyse and understands how much traffic being directed to the website from search engines. In this phase, we will need to research and understand what keywords client normally search to reach the website, what is the bounce rate (users that leave the site immediately after opening the page), does traffics comes from Google or Bing?

After we analyse and understand the situation, we will make arrangement to improve those specific portions so that we can further improve the outcome.

* Do note that measurement can be used even further to improve the customer conversion rate, but I will not cover here in this write-up.

Search Engine Optimization is a long term investment for any company, and we should always create micro goals and iterate the process to reach the global presence ultimately. I call this the Lean SEO process.

Monday, December 15, 2014

Setting up an web development workflow using bower, npm and grunt

I came from a .net development environment where my development workflows are all within visual studio. However, recently, I had the opportunities to move out of these ancient workflows and move into the leading edge development. Because of this shift, I interface with new technologies like grunt and bower, NodeJS (NPM to be specified), Rudy gem, etc.

One of the better workflows I encounter are

1) Use Bower to download all necessary packages like Bootstrap, jQuey, AngularJS, etc. The reason behind the use of Bower are we can easily synchronise the same environment across all developers; we do not need to push in libraries into our git repository and we can update all libraries at the touch of fingers. Another advantage is I normally separate the front-end libraries installation using Bower, and the back-end libraries using the NPM CLI.

 2) Grunt is an automatic task runner that are capable of running predetermine tasks sequentially. If setup correctly, it can significantly increase the efficiency of the current development workflow. Some of the most basic tasks Grunt can do are compiling Sass, Coffee or Typescript, logging of issue and request, injecting live reload, and much more. There is also an alternative to Grunt, Gulp. Gulp is also a tool that is similar to Grunt. The real different to me is just the syntax, and it is up to the developer preference on choosing which one for their projects.


That is about it for now. I will post more topic about the workflow we adapt and use along the way.



Wednesday, December 10, 2014

Four months. My path towards my dream.

Four months walking down the path of light is an enriching, yet stressful one. There are so many factors to worry about especially the unknown path ahead. The feeling of both nervousness and overwrought fills our mind each day. But on the other hand, uncovering the hidden path and shining lights into the never-ending darkness is the real fun which creates the awesomeness each day.

Even in times of stress and uncertainty, fun and excitement still coexist, which makes the feeling both complex yet rewarding one. Allowing passion for quenching our thirst each day makes our life fills with hope, and always ensuring our line of sight is pointed into the future. Setbacks are always there, no matter it is the people, the resources we have, relationship with families and much more, but these will never stop us from continuing our journey.

Inspiring times are near as holiday season is in the corner, but let us not forget the real purpose of life and happiness, which would only be achievable with the continuous passion and fire that lights up the way. Life is a journey, and happiness is the fruits that came along with it. Do what you like now, and start growing the fruits you want. Sooner or later, the fruits will rip, and that's when the harvest begins.

Monday, November 10, 2014

What is Prototype in javascript

I always had this issue on understanding what is prototype in javascript and finally, I had a much clearer picture thanks to a youtube video by Javavideotutorails (https://www.youtube.com/watch?v=JEJjbi5iqjc&list=PLOxOmO43E6Jt4GfZtF8yR6KghIdmc7715&index=4). 

You need to understand quite a few core topics about javascript before you can truly understand the beauty of prototype. Things like JSON, function declaration / expression declaration and etc. But to me, the light of enlightenment hit’s me when javascript constructor is mention.

Given this scenario: Create 2 persons with basic details and a function to print the first and last name.

First, we will write a person constructor that takes in firstName and lastName as the parameters

function Person (firstName, lastName) {
  this.firstName = firstName;
  this.lastName = lastName;
  this.getPersonName = function () {
    return this.firstName + “ “ + this.lastName;
  };
}


Declare some variables to hold the 2 persons

var p1 = new Person(“Angeline”,”Doe”);
var p2 = new Person(“Sarah”,”Doe”);

Each person object will contain first name and last name parameters, and also a function getPersonName tagged to it. 

In javascript, function is treated like an object that require memory to store it. For our case, both p1 and p2 will contain an additional function object (getPersonName) which practically do the same thing. Even tho they serve the same purpose, each getPersonName is a different instance that use up different memory.

This is where prototype comes into the picture. 

Take a look at this modified Person constructor.

function Person (firstName, lastName) {
  this.firstName = firstName;
  this.lastName = lastName;
}

Person.prototype.getPersonName = function () {
  return this.firstName + “ “ + this.lastName;
};


All objects in javascript contains prototype object, and prototype object is a static object which is accessable by all similar type of object.

Here in this case, we are taking getPersonName function out and declare it under Person.prototype. By doing so, when we create p1 and p2, the Person object only contains firstName and lastName, and getPersonName became a static function object that both share. Hence, whenever you access getPersonName, it will always point to the same memory sector, which reduce the redundancy on having multiple getPersonName.


Hope this clarifies some of your doubts, and do talk to me if you have any questions regarding this.

Sunday, August 03, 2014

Venture out to the unknown

Recently, I had the opportunity to move out from my current comfort zone, into an unknown, yet exciting future. My partners and I decided to venture out fully to the entrepreneurship world where our future depends greatly on all our direction and decisions. Concerns, uncertainty, fear and other negative feelings all lump up together at that point of decision, but nothing can stop us from our undefeatable passion, and enthusiasm about our brighter, and fun future.  

Stay tune for more exciting experience ..

Saturday, July 26, 2014

Work, Career, Satisfaction

Working is one of the most important mode of survival in my current environment, and I believed that this applies to most of the people around the globe. No matter of gender, nationality or age. Since working made up of most of our everyday life (more or less to about 1/3 of our life), I would presume that everyone will want to achieve the most out of it. Generally, I can't make this statement for everyone, but it's definitely true for me.

In my perception, work are about applying your talent and experience, ability to socialize with the crowd, and also the direction and path you willing to travel down the road. Within the process, it will also involves in learning, monetary gain, relationship and satisfaction. Of course there are other unglam factor like competition, office politics, biases and etc. Ultimately, what we all want about work is satisfaction, no matter in monetary gain, job recognition and achievement, or etc.

The question is, how?..

Thats all for now!

Monday, July 07, 2014

Managing people, managing emotions.

Recently, I had the opportunity to manage a group of 10 developers in my company. You can consider it as a functional job role promotion for me to become a team lead, after my 8 years of career. But having said so, this new position leaves me with ambivalent feelings and thoughts.

I'm quite content and motivated with the new experience I will be gaining for managing the scope of the project, and also interaction with the rest of my team and management. But on the same time, I am also starting to feel pressurize with the paper work required, communication with surrounding people and team mates and  also political wars among the management. Even tho my project manager and team are quite supportive and kept motivating me, things don't always goes the way I'm targeting.

Lets start off with an introduction for my team. My team consist of individuals with different nationality, similar age group as me,  and had formed a few cliques between them. But in general, we do communicate well with each other, and had already built a layer of trust between each other. Most of them do show support and kindliness towards me, and had accepted me as someone who can lead them to a better future. Disagreements do happens from time to time, but can usually be resolve on the spot, without hard feelings and grudges. From time to time, I try to boardcast an impression that I'm not a authoritative person, and I'm just like anyone here but with additional responsibility. My ideal goal towards the team is everyone work together like a family, and reduce the amount of overtime required.

Enough for my humble team, lets go on to my management. The environment we are living in are comparable to the open sea with unknown danger and threat. Everyone is trying to prey and defense against the surrounding be  survivors, and you will be easily devoured if you are not careful enough. Well, it's just my current  perspective on the environment,  and I may not seen the whole picture.

Well that's all for now, I'll continue to post the outcome and stories I encounter.