Tag Archives: career

Me in RMIT and Vietnamese Newspaper

You can read the Vietnamese version here



Many software engineers and IT professionals dream of developing a ‘killer App’ for popular products like the iPhone, which will make them rich. Other people dream of one day having a book published.


Not many achieve either – and even fewer do so in their early 20s. But Vo Duy Khang (formerly student 3184092), an alumnus of RMIT Vietnam’s Bachelor of Information Technology program, has hit the jackpot with success in both of these areas – and now has the makings of a successful business spanning both Vietnam and Australia.


Khang graduated from RMIT Vietnam in November 2010 and travelled to Adelaide, Australia, where he is now completing a Master of Information Technology with Carnegie Mellon University, under a full scholarship.


With the benefit of the scholarship, Khang has been freed up to apply his own financial resources fully to get a small business off the ground while he also continues his studies.


His hard work and talent have been recognised by US publisher Apress, which has just decided to publish a book by Khang on how to build better iPhone applications. Khang’s book, Pro iOS Apps Performance Optimization, fills a need in the market for more practical guidance in this booming area of consumer technology.


Khang’s creativity and expertise has also been applied to a new business start-up in this field which already has five people on staff in Australia. Khang has been visiting Vietnam in the past month seeking further talent from Vietnam to join his operation.


Almost all his development team to date are RMIT students or graduates.


“They speak English well, and they all have a good understanding of what is needed,” Khang says.


According to Khang, the basis of a good user experience of any iPhone or iPad App is good performance. There is enormous potential in helping social networking applications such as Facebook to provide a better user experience by moving data in a quicker and smarter way over the net.


Apress has been impressed by his thinking in this area, as shown on his own website and as shared amongst the online community overseas.


One of Khang’s mentors has been Barend Scholtus, Academic Services Manager for the Bachelor of IT program, and the two continue to discuss shared interests regularly.


“We hope – in fact we are pretty sure – that Khang’s learning experiences at RMIT Vietnam have made contributions to his achievements to date, and we hope the best is yet to come.”



 





Khang (sitting) sharing knowledge with friends in Barcamp 2011


 


Khang’s book on Amazon: http://www.amazon.com/Apps-Performance-Optimization-Professional-Apress/dp/1430237171/ref=sr_1_1?ie=UTF8&qid=1321662306&sr=8-1


Facebook page: http://www.facebook.com/vodkhang
Contact info: Phone +61 478146872 
Email: vodkhang@gmail.com


 

High Risk – High Return

The best way to predict the future is to create it

The best way to predict the future is to create it

People always say about how passion can make you successful, and there are plenty of books around that topic. So for now, I will just look at the problem by some limited financial perspective: High Risk, High Return. Well, all financial guys know this theory, huh? So, I just try to see what I did and achieved in these terms.

Since I was in high school, I started thinking about what would motivate me, what would make me feel good when I did something. I preferred taking risks to get a really good outcome rather than staying and following a safe path since my high school. Until some recent days, I recognized that this is the only way for me to get an excellent outcome in a short time. High Risk means High Return.

 

The Safe Zone

There is not much fun and passion if I just stay in my safe zone. Everybody does that, there is a safe way for you to go. And most of the time, I feel bored with going that safe way. Passion is important, but I feel that if I don’t go further and take some risks doing what I love, I don’t love it enough. Is it so much fun if you always know how the future works?

Passion will always give you to the edge of the safe zone, you can understand and see further than other people. Now, the thing is that you need to step out of that safe zone and take risks. If you are really passionate about something, do you want to see it become a huge success. If yes, make it! make the future!

The best way to predict the future is to create it.

Since the beginning of my career, I started asking myself “What to learn next in the IT career?” and how I can predict the future of this IT industry. And then, the more I move forward into the career, the more I know that the best way to predict the future is to create it. That’s why I get more involved in what I love and believe, joining open source community, try some start-up and cutting edge technologies.

No surprising, one of the most risky situation in IT is to try to invent some new product. People may or may not adopt your product, you may not find any users. And nobody may believe in your idea except yourself.

What’s the biggest lesson I learned so far this year?

Lesson over plan and time management

Biggest lesson this year

My learning progress this year has been increasing so fast, many things change in my life for the last 3 months. I changed to new living environment, new learning environment and start up my business when I came here. There are lots of lessons that I learnt as a manager in my new startup and a student in CMU. I think the 2 biggest lessons I have learnt so far this year are: planning and time-management.

Plan and Vision

Let me tell about my story first. My plan has been changing every month since the last November. The event that I went to CMU has changed my plan for my master degree and my career. You can read over my past plan here. I had a plan to work hard and plan for the master degree 2 years later. Then that plan changed. Next, I plan to study hard in CMU. Then, chances came and plan changed.

The main point that I want to get is my visionary. My vision and objectives over all of the plans do not change. I want to become an entrepreneur and build something that can change the world, something innovative in terms of technology and business. Planning is a tool for me to set up my vision, to see what will happen for me and other trends and I am more than willing to change any plan when necessary.

I have learnt significant lessons over financial planning in my CMU, which will help me over my company growth a lot. I think that this is what I lack from my undergraduate career. Money. Financial. These are important for any business technology people. I believe if you want to be successful, you have to understand about 3: Money, People and Technology.

Time-Management

The last few months, I ran in a crazy way, not like ever before. Look, everybody, who knows me, will know how fast I learn, implement new ideas and improve myself. However, I never see I learn and work at that crazy speed before. Lots of things got done, lots of breaking news. And I am still looking for more.

There are a couple of issues and lessons I learn from that fast moving. Time-management. I got a few problems at the first time when I have too many things to do than the time I can have. Then, I try different approach to optimize my time, calendar, todo list and time saving strategy. I now work much more efficiently than months ago and can really focus on a thing that I do. That’s why I love moving fast. Only by moving fast, you can learn really fast.

Again, what I want to say is you have to focus, and have a good timing management skills to control your time. Time cannot be bought!

Freelancer Lessons and Strategies

freelancer jobs

freelancer jobs

As my plan in Adelaide, I want to get some job to earn money as well as keep me up to date with industry technologies. However, this turns out to be much harder than I believe when Adelaide is such a small city that does not have many IT companies here.
Then, I started my second option in my plan to looking for freelancer jobs and going to websites that offer freelancer jobs to see what I can get from there, and things are growing up fast enough and I learnt some key lessons over the my new job.

 

Price

Price was my first concern over deals and bid to get accepted a project. However, I can see that most of times, price is not the top priority for employers. What they care is they can have a high quality product in a short amount of time with a reasonable price. My strategy is to pick a fixed hourly rate for myself when competing and then just calculating over the number of hours I need to work and give them a general price.
I try to convince people about quality, in many terms: communication and product. I think it is true for any work with clients to try to exceed their expectations, try to understand their problems well and do exactly what solves their problems. The price can be higher but we can save time, money and make people feel safe, they would hire us. So, don’t aim for only price. Put one that is reasonable and prove clients that it is worth every penny

Outsourcing

This is always a way to cut down the business cost. People hire me because they want to look for more reasonable price with the same quality. And I can make another step to outsource them back to Vietnam developers. It cut down the price for me and the client and I can save my time to more important jobs, such as studying in my university 🙂 (Supposed to be the most important one)

There are certainly more aspects about management when you have to do outsource and communication with customers when both of these are remote only. I don’t forget about technology lessons that I learnt and expect to learn and work over these freelancer works. These will be shared on the next entry.

References:

Image source: http://freelancejobfeed.blogspot.com/

Why should we join and support community?

There are always people keep asking me the same question: “Why do I actively join free community like Stackoverflow/BarcampSaigon/MobileDevCamp/My Blog/Top Coder? What is the value and the benefit?”. It is nice that people ask this question and actually think about it. And I hope that I can answer them fully with this post somehow.

vodkhang on stackoverflow

1/ Fun.

It is fun. Really? Yeah, it is actually fun. Wait a little bit, why is it fun for working? I love playing game, I love to see my level going up and my mark changes everyday, I love beating the top challenging problem. It is just so fun there. If you still suspect this for somehow, I would rather ask you why you play football and play guitar in the church outside of working time. If you think this is not a good example because people don’t have headache over those things, then we take a look at some others. Do you play chess? Why do people play chess and what is the value and benefit when playing chess? If you can figure out the answer at this point of time, then we are done. It is fun, that should be it.

At this point of time, if you still don’t feel anything fun to do so, I don’t know if you should continue reading about other benefits: brand advertising, learning and contributing. If you don’t get fun out of the work, especially the overtime work, it is hard to persuade the goal just by other visible benefits. Moreover, these benefits are only long-term seeing and require lots efforts and time.

2/ Brand Advertising/Social Networking & Trust.

WordPress Sharing

WordPress Sharing

Brand Advertising and Social Networking is important. When you actively join communities, you get to know more people and more people get to know about you. Nobody knows if these people turn out to be your next employer or your next friend that can help you out in the difficult situations.

I partly believe in the theory that sometimes, we should hire people that we are familiar and can trust rather than hiring some talented stranger. So, when people can see how you engage to help the community, people started to trust you. The more people know about you, the more people may trust you. And when people can trust you, they can give you the chance to work together or hire you as an employee or even work for you.

Moreover, these things are not built overnight, there is no overnight success. It may take you couple of months, or even years to write a blog and only your friends read it. It is the same with answering on stackoverflow, topcoder. It takes years for you to reach to an acceptable point that people start to recognize your name/your company’s name.

3/ Learning & Contributing.

Open Source

GNU Open Source

Now, we go to the last reason. It is the last not because it is the least important reason, it may be the most important reason for many people. However, many people want to see the something visible, something that either gives them lots of money or reputation to move forward to their career first. So, I just leave them read things they want to read first.

It is so obvious. When you answer something in stackoverflow, it is either help you to solid your knowledge or help you to think deeply to debug. I really like debugging on stackoverflow, it is challenging. You have to find the bug as soon as possible, and sometimes, you don’t have debugger, you don’t even have IDE to help you. You just read over the code, verify each line of the code and try your best to guess the part that can create the bug. That’s challenging and fun, actually.

References:

http://iphonedevelopment.blogspot.com/2010/12/non-deterministic-problems-aka-finding.html

Image Sources:

http://stackoverflow.com/users/flair/227698.png

http://en.flossmanuals.net/floss/publish/WordPress/rsrc/WordPress/Introduction/icon_big.png

http://t0.gstatic.com/images?q=tbn:ANd9GcQj7UR1webcv1NlEzFaRpAUeudZjWyOYYAA27iiaxot4X9vdDa2

Try, Run, Fail and Motivate

,Running And Failing

Running And Failing

I am extremely happy these days, I got a full scholarship of CMU – the first one I got after, uhm…, 10 or more scholarship submissions. This one goes by some luck. You may not believe in that, I don’t either till it happens. I started applying and the decision is out for less than 2 weeks and I had no plan for this scholarship until the chance came and I took it seriously. Here are 3 things I learnt from this happy event.

1/ Keep trying, you do not know what happens next.

Some people love perfection and are scared of failures to try. In many cases, trying does not cost you much except, some money and efforts and in some cases, it is free to try. One important decision I made is to talk and then email CMU representatives to ask some information about my specific case with important background. That let me know some important information about the admission process and I took advantage of it successfully.

For things that are uncertain, the only way you can be sure about is to try it. Start up, scholarships and R&D job is like this. Sometimes, things go out of your hand and strategy, then you just keep moving fast to the next goal.

2/ Everything you do, either succeed or fail make you one step further

I am happy that I tried to apply for President Award of RMIT Vietnam although I didn’t get it. It was a huge step preparation for me for the scholarship. There is no way that I can prepare all documents like transcripts, recommendation letter in around 3 days without any earlier work.

Another thing that I learnt from the fail of President Award is that my approach is kind of not correct. I tried a with a crazy approach in the award essay just to see what happens. And, I think the result gives me some feedback over the approach for the next one.

3/ Fail and run again

I mean RUN, actually run not just to go ahead step by step. I am willing to fail while I am running rather than moving slowly to the goal without any failure. For some people, failure is not an option, you are not allowed to fail. However, in my opinion, passionate is necessary but not enough for people to be successful; sometimes what matters is to keep the highest motivation for long time. Only challenges keep me motivated and moving with my best skills and efforts. That’s why I love the Google quote: “Achieving 65% of the impossible is better than 100% of the ordinary” (Don Dodge’s blog) . Here is what you get from that kind of fail, you know that you did a great thing, you are motivated about what you do all the time and you know you are doing something only a few, the best people can do.

And I always remember the Edison quote, you don’t fail 1000 times, you just found 1000 ways that things do not work, and I am happy to get a confirmation if a way is a fail as soon as possible.

CMU Students

CMU Students

Just some information about CMU and my courses there:

– Top 6 in 2008 in Engineering and IT QS World University Rankings

– Top 12 in 2010 in Engineering and IT QS World University Rankings

– #1 in Computer Science Schools (US News and World Reports)

I hope that this is a great step to the next big goal:)

My Career – A year look back and fro

vodkhang's career step

vodkhang's career step

It has been almost one year from my first day into my career (4/11) and since that day I have learnt a lot of things and sharing lots of things in my blog, stackoverflow, facebook and twitter. I will try to summarize and make a general view for my career in the last year. I will also give out my vision for my career for the next year

Web Development
My first work is Scala researching – a still hot technology and growing quickly until now.

Although currently, I do not work much in Web Development, but I will try, for sure, come back to this field again. Why? My vision about this field is still hot, highest and most challenging technology for scalable system is still here with the born of lots of things like Cloud Computing, Google App Engine, Scala, Ruby and Clojure. Maybe my next programming language for the web is Ruby. I already have the intention to jump into here. Hope that my colleagues in KMS can help me to catch up this technology fast.

The good thing about Web Development now is that we have Google App Engine and some App Store for the web is growing. With the born of Cloud OS which will happen soon, I hope that I will have the time and chance to come back, either individually or as a developer in the company.

Artificial Intelligence
This area is cool by its name and it is part of a reason I went to Melbourne last year. I had chance to work full time on it and even it was not a success, I learnt a lot from it. What I think is that I will try to focus on Computer Vision and Machine Learning (and may be Agent system) with the intention to apply them into iPhone someday. Why is iPhone? Because I still need to do something with commercial purpose and dealing with iPhone will at least give me some financial benefit in short term. And with iPhone and client technology, I don’t have to deal with massive amount of database problem which I have no chance to practice.

Related to Artificial Intelligence, I intended to take Phd from years ago. However, my decision now is something industry oriented rather than academic environment. I appreciate the academic environment, which is good to work and learn what you like but for now, I think I do not prefer it.

Mobile Development

I came to this area by luck, I didn’t really intend to jump into. iPhone programming is cool by its design, working in limited environment and dealing with memory management. There is another challenge for building iPhone app for me is how to make it the best for user, in other terms, usability.

I learnt lots of things about usability over last few months after reading some books: “Don’t make me think” and “User Interaction Design”. This viewpoint is a little bit from a designer’s perspective rather than a developer’s one. This is cool and make me understand more about users. To be honest, before I do iphone development, I am scared of designing (both in terms of graphics and interaction) and I don’t get love in it. But now, I think I can do at least interaction design well. The usability lession is a first and perfect one for overcoming scareness in my career.

Other stuff
Working in iPhone let me have time to learn something else that I am scared about. Git in terminal for example. I am scared of terminal and scripting and all those administration stuff before.

I am also trying to do a lot of testing in iPhone, from UI Automation Testing to Unit Testing which make me fall in love. I love the Google Testing Blog’s Term: “If it ain’t broke, you’re not trying hard enough”. Now, I feel so bad for anytime I cannot make a software crashed :). It is also good that I am still looking forward to improving my productivity day by day, automation process, hot keys and dual monitor was what I achieved. The next stuff will be emacs, for example.

My current love in technology can be said: “user, automate and scale”.

PS: To be honest, I hope that this is the first time I can focus 150% into working and researching. For the whole last year, I had to spend so much time in university assignments, exams and then GRE. Those things do not just take off my time but also kill my energy and passion so fast, while those things are either not challenging, boring or just I do not love it.

Software Engineering and Algorithms

Algorithms and Data Structure against Software Engineering

Firstly, I want to talk a little bit about algorithms, data structure against software engineering.  Joel’s Article pointed out an excellent point that algorithms, data structure, functional programming is really important to learn, to challenge your mentality. And he is also right that current CS (and maybe IT, SE) degree is not hard enough, simply because if you designed a stupid software, it still WORKS, students will at least get  90+ points in your assignment. I see many not excellent students get 3.8 – 4.0 without any problems, because as Joel already stated, the problem in Software Engineering is when you have to extend, to make the software scalable, not when you create it. He’s all right about that. But he may make people misunderstand.

Algorithms is not the most important skill

For me, algorithm (if we consider it as a specific method to solve a specific problem rather than defined in wikipedia) is important, but it is no longer the most important skill and knowledge software engineer must have. Software engineers, nowadays, should expert about SOLID principles, and write reusable and maintainable code. Software engineers know how to design, architect and integrate between different system to write and maintain a scalable system. Software engineers can work with usability, working directly with client, understand and see the business and users’ world. These things require practice, thinking, learning from failure not just memorize them.  There are now many different jobs that do not require software engineers to become expert in algorithms, and also many great jobs requiring you to become algorithm expert. You may say that they are different jobs (like understand user’s business would be business analysis)) rather than software developers, you are wrong. Software developers now have to understand users’ mind, in general and specific domain to write usable features (read the Usability part in understand and see the business and users’ world for more details).

Algorithms != IT

Another misunderstanding about learning algorithms is that it will give you great mind in thinking in IT. It is right but not that much. In many cases, we work directly with a specific problem, like searching, sorting and computer vision. But that is a specific problem, people tried to solve it under a specific set of constraints. But software architect see the big picture, when to integrate, what to integrate and how to integrate. Both kinds of thinking are really difficult, requires creativity and experiences but hard to go for both. If people go too much into specific problem, it takes time to become an expert in another area. So, if people love one and want to become an expert in one, go for it.

But I like Algorithms

Personally, I do like algorithms so I usually do some algorithms competition in my free time on topcoder. Currently, I am working on this problem (another link if you can not access topcoder), if you want to join, just come. More people, more fun. I will write another entry to introduce about online IT competitions.

Usability for Users

I am currently working at a mobile phone development company (Multinc) and I started to see and learn many more things about usability, which can be said as the main strength of iphone. So, I want to share some usability experience when developing and working with iphone team and as usual, I also wanted to hear more experience from other people from other cultures. Usability is a ambiguous term and almost depends on the culture and users’ type. I will try to give out experience about normal, ordinary users more than advanced (e.g IT) users because most of us create software for ordinary users rather than advanced one and may be this one is only for a group of users like American.

Most Users are stupid and lazy

First and foremost, the most important thing should stick into our, developers’ mind, is that “Most, or even all users are stupid and lazy”.  How many cases that you can teach your friends, your families or anyone using IT successfully? How many cases, even IT guys spend on reading instructions of a new software/game/websites, and how many hours for non-IT people? Our answers will make us understand clearly about users, especially non-IT people. They want to finish their jobs on computer without caring or have to care about technology at all. Why do they have to spend their valuable time for something supposed to help them make their job easier and faster?

Users are never false

The second thing is that users have problem, the fault should never be their faults, or more precisely, it must be software providers’ fault. They type some bad password, text input that we do not parse or check before and system crash. It is our faults. They use our system not in the way we want, it is our fault. IMO, there is no such thing in the world that the customer is false, they are always true, by default. So, if there is some bug, or some crash and users give bad feedback, any classic excuse (like “It works on my machine”, “They should never use my system like that” … ) never works.

Never teach users at all

The third thing can be “you should never teach or try to teach your users at all”. All assumptions like “They have to/need to read our instruction and manual” are really stupid. It is like the first one, all users are lazy (and also stupid to learn new thing), if we give users software with an instruction on how to install it, most of cases they may give up so soon, the only thing they may know is click “Next”. Despite the great idea of our software, if user can not use it in a short enough time, user will move away from it. I do not have many experience on business but with a period of time working as marketing and sales assistant teaches me one important thing: Marketing for users to come is 1 thing, keep them is another story. If users come and they leave, they will never come back. So, IMO, having a user leave is worse than not having that user at first.

Final List

Some suggestions for software development, this list is really long but I want to list few important ones:

_Be aware of any users’ problem and compatibility. One problem I still see a lot in famous/good start up is compatibility. It looks bad on my browser, and I will never come back. This depends much on our market, but I even see an anti-virus website shows ugly on Google Chrome.

_A good feedback system is important. I will never come back to any company that the customer service dare to say: “It is your fault”. Make the user feel free to write any feedback and respect them. We need them (except you are Microsoft or Google), but they do not need us yet. Treat them as “God”

_Implicit learning can always be implemented. Explicit learning is too difficult, except we have awards for any feedback or we hire people to do so, so implementing implicit learning may be a good idea. Some ways of implicit learning in software/website I can know is : logging, look at any click, any move around our system, relationships between service and product they buy, time they spend on something. Add more if you can.

Learn new things in IT

 

What and how to study in IT

What and how to study in IT

Generally, I think in every area, not just IT, people face 2 questions on their studying lives. What to learn and how to learn it as fast and as deep as possible.

What to learn

In fact, the problem with “What to learn” is in some case really hard to answer, in some other cases it is really easy when somebody like your teachers, your bosses tell you that you need to learn this specific topic to serve for the assignments or for working this project. However, when you decide yourself, it is a big challenge requires a lot of experience and high vision on What will be the next technology/idea coming and if it worths spending time learning that new ideas in a big forest of technology. Our time is valuable, there are many interesting outside, you can not learn all of them.  I will not focus yet on this problem but I want to Open Discussion for everybody to share their experience and vision to answer the big question “What Will be The Next”

How to learn

Now, I focus on the easier question, how to learn fast and deep enough.

Here is an interesting post that you can read it yourself. BuuNguyen’s blog, learn new things from books. Overall, it says something about why you have to learn new things from books.  If you have any arguments with that post. You should reply on that blog, that guy is willing to answer you. I want to extend it and share some thing more here.

That post only focus on convincing the advantage of books. I want to suggest that you should learn from many books on the same topic.  It is not a new suggestion also, I read it on blog KHMT (I forgot the link of the post, search it later).  Why do you have to do so?No matter how good the book is, it is coming from an individual or a small group of actors,  that is restricted, and not enough.  Every books has a different way of addressing the problem, and that particular addressing model, in most cases, is not always excellent for every chapters/problems. My experience is picking some good books, looking through table of contents, looking through explaining model (graph, text, code, examples, mathematics, science, technology solution, tutorial…). Usually, the explaining model is consistent through a whole book (or many chapters of that book).  Moreover, different books can suggest other ideas, concepts that a book lacks which will be seen when looking at the preface or table of content.

There are many other ways of learning suggested by Thanh Cong (slides) on barcampsaigon. In brief, he suggested team working, tutorials, pair programming. One more thing suggested by me on barcampsaigon also is Teaching (thanks to huyzing and eric hosick). IMO, you will not be an expert in a specific topic until you can teach other guys to be as good as you. You will need to understand the problem deeply before you can tell it by your language by your ways. Moreover, different people learn by different approaches, you have to teach them based on their approach, their way of thinking. Another value is that you will immediately know what you lack in that topics when standing before a huge number of different kinds of questions.