Research, Dev, Share

My Career – A year look back and fro

Posted in Career, Intelligent System, Iphone, Software Development, Usability by Khang Vo on October 25, 2010

vodkhang's career stepIt has been almost one year from my first full time job day (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.

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.

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.


Some thoughts in usability

Posted in Usability by Khang Vo on January 27, 2010

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.

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?

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 pasword, 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.

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.

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.

Tagged with: