Monday, November 14, 2011

CS3216...

There it is, the final blog of my CS3216 journey. This is rather a short one because I've mentioned all the things I've learned from the previous blogs...

I mentioned in my first blog that "I want to learn how to follow my heart and soul". Frankly I didn't have a clear idea of what I expected to learn at that time, so I just put that vague statement :-P. But now after CS3216 is finished, I realize that the statement is actually kinda true. It's what I want to learn and what I have learned from CS3216. I've learned a lot of technical (HTML5, Facebook...) and non-technical (business, entrepreneurship, project management) stuff. But the most important thing for me is I've learned to do what I really want to do.

CS3216 made me skip a lot of classes. I went to 2-hour mid-term exams with the knowledge acquired from 30-minute studying (and of course my grades suffered!). But I'm fine with it. I'm happy with spending the rest of my time doing things that really matter to me. I used to the guy who tried to cover too much ground without exploring anything in depth. CS3216 has changed me...

But it doesn't mean I've done the right thing. The greatest thing about CS3216 for me is the feeling that I could've done better. I could've managed my time more effectively to achieve a much better balance. My bad grades this semester is the tuition fee for all the lessons I've learned (quite cheap I think :-P). CS3216 has helped me realized that I still have A LOT more to improve. I'm very thankful for that :-)

Thanks Prof Ben and all my CS3216 classmates. I've had an amazing semester :-)

Sunday, November 13, 2011

Final Project #3: Technology or business?

This is the 3rd and the final part of this blog series about my final project journey. Among the experiences I've had with CabSG, this one is probably the best of all.

As I already mentioned in the second part of the series, CabSG originally started quite differently from what we have now. The original idea was taxi sharing, which is quite an engineering challenge. It requires an efficient algorithm to match passengers base on their boarding time, location, and direction. The system has to be able to deal with the constant-changing data and able to deliver the best user experience. Being engineering-oriented, I was really keen on implementing that idea. But it is not practical. It's challenging but not suitable to be used in real life. So we changed to something less technical but a lot more useful: taxi booking, fare calculator, and taxi stand finder. But then we had to think about how to make our app really stand out without the hard-core stuff...

And then it came to us. We asked ourselves "since we're doing a taxi booking app, why not partner with a taxi company to do a booking system for them?". Currently only Comfort and SMRT have mobile booking apps. The rest (Premier, Transcab, Prime...) don't have the resources required to implement such a system. So why not work with them? So we decided to talk to the taxi companies to see what they think about our app. And among them, Premier cab is the most interested after listening to our initial pitch. They scheduled a meeting with us to discuss more about the partnership. To my surprise, Premier took us very seriously regardless the fact that we're students. We had a meeting (yes, it's a real business meeting) with their senior managers. The meeting went quite well. We got a good lead and made a good impression. We're gonna discuss this further after exams.

The meeting is the best experience I've had with CS3216, and this experience has changed my mindset significantly. I used to think that a good idea is something unique and hard to do. But now I realize that a good idea is an idea that can sell. Implementing an idea (the technology part) is not hard, but selling it (the business part) is really difficult. That's why pure engineers can't do good businesses even though they can get all the technology right. Technology and business always go together and are equally important. One cannot only focus on one and ignore the other.

I'm very grateful for this wonderful journey with CabSG. It has taught me a lot of things that I can never learn from normal school projects. We're still not done yet. There are a lot of things left to do to make CabSG a successful app. But overall, we've done a great job!

Thursday, November 10, 2011

Final Project #2: Idea and team

In the second part of this blog series, I'd like to revisit the discussion we had in the case study: "Idea first or team first?". I'm gonna share what my team has gone through and my thoughts on the topic based on my  experience.

Our project idea started from our HTML5 assignment - Carpool. After Carpool, Deepan, Jason and I realized that it made more sense having a taxi sharing app rather than a carpooling app, simply because taxi sharing could give users greater financial benefits that could motivate them to use the app. We pitched the idea to the class during the Pitching Party and got our 4th member, Joey. At that time we were all very excited. The idea was really promising and interesting to us.

But then turned out we were wrong. After spending a whole week discussing and consulting Prof Ben, Kok Wee, and some other people, we found out that it was not worth it to implement the idea due to these reasons:
- Taxi fare in Singapore is not that expensive. The maximum amount one has to pay for a ride may be up to $30 only, much more tolerable than, say, in NYC or other big cities.
- Singaporeans don't like sharing stuff, especially with strangers. The culture here is not really suitable for a taxi sharing app to succeed. Most of the people we talked to said they'd prefer taking a cab alone rather than asking strangers to share the ride. And since the taxi fare is not that high, sharing to them is not necessary.
- The possibility to get a match is very low. The prerequisite for our app to work is a large user base, but even if we could get like 10,000 users, the chance for some of them to be at the same place, at the same time and going to the same direction is extremely low. And if they can't find a match after a few times trying the app, they'll possibly never use it again.

So that idea was pretty much over for us. After 2 weeks we went back to where we started. It was too late for us to switch idea entirely, and also we couldn't come up with anything else. So we decided to stick to the idea of a taxi app, but this time focus more on the features that users would actually use: 1-click cab booking, fare calculator, and taxi stand finder. We wanted to build something simple and yet could benefit many people. We focused on making a nice, easy-to-use UI to provide users with the best UX possible. After 4 weeks, Cab.SG was born, available on both web, Android, and iPhone. At this moment we already have 100+ downloads (and counting) on Android app store after 1 week.

So what's the morale of this story? How is this related to the discussion topic I mentioned earlier? It turns out that in a project with a very tight deadline, idea does matter a lot. It is much easier and less painful if the team can get the idea right at the first place. When the idea is right, the team can focus all their energy on implementing the idea and make the best out of that short period of time. But it's normally not the case for most teams including us. It's very hard to get everything right at the very beginning. We have to try out things first in order to know if they're good or not. And that costs time. What if we try and fail? We will have to do everything all over again. And the only thing that can salvage the project at this point is the ability of a good team. I have a belief that good teams can always finish strong regardless of the difficulties and obstacles that get into their ways. In our case, even though we faced a lot of hard time, we still manged to work it out as long as we worked together.

So to sum up, in my own opinion, idea matters, but good team is the most important element of a successful project. A good team can always figure out a good idea and implement it nicely.

...And I'm moving closer to the final blog...

Saturday, November 5, 2011

Final Project #1: Application framework

I'm going to start this blog series about the final project. I have to write multiple posts because there are so many things to talk about (and also it's a nice trick to increase the number of posts haha :P). This one is all about the lessons I've learned from developing an app with Sencha Touch.

Our team were quite confused at the first place about whether or not to do a native app. We obviously wanted to develop a mobile app, but we were afraid that the learning curve of native app development would slow down our progress. Also we wanted our app to run on multiple platforms in order to get a large user base. So we chose HTML5 and PhoneGap, which seemed like a perfect solution: learning curve would be significantly reduced since we were all familiar with HTML and Javascript, and also PhoneGap supported both iOS and Android. That sounded like the best approach for us. But reality has proven the opposite...

The first PhoneGap test was fine. PhoneGap worked well with both iOS and Android as advertised. But we didn't realize that the real problem lied in the application itself, not PhoneGap. As suggested by experienced PhoneGap developers, we chose Sencha as the framework for our app. Sencha is a good framework based on ExtJS, which has a really strong community. But the more we used Sencha, the more we became less confident in our choice. Here are the reasons:

-  Poor documentation: Like all other frameworks, Sencha requires time to learn. But the learning curve is much worse than JQuery or Prototype because of poor documentation. For example, the API Docs for Ext.Form.Search says "Wraps an HTML5 search field. See FormPanel for example usage." When I went over to the Ext.FormPanel docs, there's absolutely nothing...It took us too much time to learn things like Panel, Component, Extension, which could be picked up very easily with good tutorials and examples.

- Bugs, bugs, and bugs: Sencha is super BUGGY! We spent hours or even days trying to make something work the way we wanted to just to find out in the end that it was a permanent Sencha bug that was not yet resolved. There are things that can be done with JQuery in 15 minutes but took us 3 hours with Sencha with most of the time being spent on wondering why the heck it didn't work.

- Ugly codes and poor structure: Javascript is a loosely typed language. Sencha is meant to make it more
structure with OOP and MVC. But our attempts to create a well structured javascript application didn't end really well. Most of the time we ended up using tricks and hacks to get around the weird behaviors of Sencha. As a programmer, I'm very frustrated about ugly codes, but there's not much I can do about it...

Sencha has slowed down our progress quite a lot. Our initial aim to release the beta version 2 weeks ago was completely backfired. Now thinking back it's all clear to us that we should have chosen to go native at the first place. The learning curve wouldn't be much different from Sencha, and yet we could enjoy the native look and feel. But as people normally say "Good judgement comes from experience, and experience comes from bad judgement", I'm glad that I've gained such a valuable experience. Sencha did pose a lot of difficulty to us, but we have a great team who can overcome all obstacles and challenges. We'll keep developing with Sencha and creating the best app possible. Only a few days to go...

Friday, October 14, 2011

What went wrong in Assignment 2 and the lessons I've learned for Final Project

Assignment 2 is way over, but there're still a lot of things to think about. Honestly saying, our assignment 2 was not close to my expectation. We faced a lot of non-technical problems that in the end made it so difficult for us to finish the assignment nicely. Here are what went wrong for us:

1. Miscommunication:
I admit that our team members didn't communicate well with each other, and most of the time we didn't know what the others were doing. We were too focused on working on our own tasks. And in the end, integration was a real pain. It's very difficult (if not say almost impossible) to join different pieces of a puzzle if they don't perfectly fit together.

2. Pre-planning is important, but we overlooked:
We spent too little time on meeting and discussion. We never analyzed the potential problems and difficulties the assignment might face. Also UI mockups, project timeline, and development process were not given enough attention. We only focused on feature list and individual tasks. Because of the lack of pre-planning, we underestimated the difficulty of the assignment, which led us to the next fault:

3. Procrastination:
We didn't start working until week 2 (assignment 2 was given only 3 weeks to complete). Because we overlooked the difficulties and challenges, we felt no rush to start doing things early. And the result is obvious: Camping in Com1 with last minute panic. It's so ironic that only at the end of the assignment did we recognize the need to start things early. That made the deadline day the most painful days I've had in my NUS life so far...

4. Teamwork and leadership:
As I mentioned before, we encountered miscommunication when working together. Our team structure was so much different from my first assignment team. In the first assignment, my teammates and I were able to work well with each other. Miscommunication happened a little bit here and there, but overall our teamwork was good. It wasn't necessary to have a leader. But in the second assignment where teamwork and team communication were not as good, there was a clear need for a good leader who had strong team building skills to connect all team members. But none of us was skillful and courageous enough to step up and take that lead. Prof Ben raised an interesting topic in the case study discussion 3 weeks ago about whether or not to have a team leader. My thought about this is that if the team by nature is strongly connected, a leader may not be needed, but for a less connected team, the team definitely should promote a clear leader.

Ironically, despite a great deal of pain I got from the assignment, I'm very glad and grateful. I've learned a lot from those faults and mistakes. The assignment is way over now, and the grade we got reflects correctly our product quality. But as Prof Ben said, the purpose of the 2 assignments is to help us learn and prepare for the final project. I can't imagine if we didn't make those mistakes in assignment 2 but in the final project (or further in life/business) instead. That would be a disaster...

My teammates and I are in the midst of the final project (I'm working with 2 teammates from assignment 2 and 1 from assignment 1). The team is moving in the right direction. We've spent valuable time analyzing all aspects of the project before getting dirty with codes. We're doing things very early to avoid last minute panic. The team is connected and all of us are working very well together. I'm very excited to see how our final product will turn out. Aim for the best!

"Mistakes are a part of being human. Appreciate your mistakes for what they are: precious life lessons that can only be learned the hard way. " - Al Franken


"It's always helpful to learn from your mistakes because then your mistakes seem worthwhile." - Garry Marshall


"A life spent making mistakes is not only more honorable, but more useful than a life spent doing nothing." - George Bernard Shaw

Monday, September 26, 2011

Case Study: Help me!

User Interface design:


Navigation:
The navigation bar is quite confusing. "New project" is a big red button, "Overview", and "Recommendations" are hyper links, while "Badges", "Profile", "Stats", "Invite" are tabs. I think to avoid confusion, all of them should be in the same format. I prefer the slanted tabs because they make the app look cooler. Also, the tabs could change color or something to indicate which page the user is on.


Home page (also the New Project page):
I think it's good to show users the 'New Project' page when they visit the app. But having the posting options below the input bar is quite misleading. Users may not be able to understand what the options are for, are they global settings or only applicable to the current posting. Also the first things users may want to see when visiting the app are the progress of their past projects and calls for help from other users. So I suggest that the posting options should only be shown after they click on "call for help!". The rest of the home page should be dedicated to showing other useful information.

Statistics page:
This page should be called "Leaderboard" instead. The nicknames shown next to the users' profile pics in this page are quite confusing. At first I thought "Mr. Good Samaritan", "The Great Guru"... are real Facebook names. Perhaps the real names could be put next to the profile pics instead to avoid such confusion.

Question/Project page:
This is the individual page of a need posted by a user. I think it's quite nicely done. It shows all the related information and functionality. The only thing I don't like about this page is the red buttons. They seem to draw all my attention while the thing I really need to see when visiting this page is the user's need.

Functionality and User Experience:
First, I want to comment a little bit about the idea. From what I understand, the developers were trying to create a combination of Yahoo Answers and Facebook News Feed. But for me, if I want to get help from my friends, I'll just post a big status message and tag some of the friends I know who might be able to help. If I want to get help from a bigger community, I'll just use Yahoo Answer or even Google. The problem with this app is that users don't have much incentive to use. The game mechanics can't help much. "Not everything can be gamified", said Prof Ben. If users don't have the incentive to use the app at the first place, there's no point for them to use it to gain levels and badges.

Next, the statistic page is quite "out of place". I don't think users care about who's the best helper. It would be more relevant to show statistics related to the user himself or his friends. Or if the developers want to show the leaderboard, I think they should include some options like "Ask the champion" to engage users.


Users will continue using the app if they receive useful answers for their questions. If not, they'll forget about the app after a while. Therefore, a mechanism to help users get fast and useful answers would be a good way to make the app more engaging. I would suggest some features like sending mass messages to all helpers about a user's need, or match the user with some potential helpers who have knowledge about what the user's asking.


Overall I think the biggest problem with "Get Help!" is getting a large number of users. After all, the app is all about crowdsourcing, and crowdsourcing without a crowd cannot work.

Monday, September 12, 2011

VSee's sharing:

Today the CEO of VSee, Milton Chen, came down and gave a talk. I didn't know about VSee before (even though I vaguely heard about the company from the NOC seniors). But it doesn't matter. Mr Milton's talk just fascinated me.

VSee's video conferencing technology is amazing. It's able to deliver videos at high speed and high resolution. Not only that, VSee allows users to share files and work on the files in real time. It raises significant interest in me. Recently I've been particularly interested in XMPP (Extensible Messaging and Presence Protocol). I've been trying to create stable web-based XMPP applications but failed many times. Making it work is not difficult, but keeping it stable and scalable is a huge technical challenge for a 2nd year student like me. That's why to me what's VSee has done is so magnificent. I really want to learn more about the technology the company's using as well as the XMPP video standard Mr Milton created.

Ok let's move away from the geeky stuff. The message that Mr Milton delivered to us today is actually about life, leadership, and relationship. I want to write everything here, but I'm quite sleepy already. So let's just summarize what I find the most interesting and meaningful:

- Breaking patterns: I've been doing it for many years already. Basically breaking patterns is about changing habits of doing normal, daily stuff. For example, sometimes I write with my left hand (I'm right-handed btw), open my room's door with my mouth, walk to school instead of taking bus, etc. I feel great everytime I do it. It makes my brain alive. I become much more aware of things around me. And it makes me feel even better knowing that Mr Milton, a successful entrepreneur, also does the same thing.

- The "Sandwich" method: It's a great human management technique that Mr Milton is applying. When you want to criticize someone, start with a compliment, then give the negative feedback, and end with a compliment again. I agree that the method works all the time even when the other party is aware of it. It helps the other party receive the negative message less painfully and prevent his defense mechanism from triggering. I'm gonna apply this technique extensively from now on.

- Being soft on people: I really respect the way Mr Milton treats his employees. He doesn't want them to call him boss. He listens to their criticisms, lets them work from home, applies the "Sandwich" method so that he doesn't heart their feelings. Most importantly, he makes them feel comfortable when working at VSee. His soft approach to people management promotes his employees' loyalty toward the company, as proved by the fact that his NOC interns are still working for VSee after their internships.

- Marrying the right person: Prof Ben's out-of-nowhere relationship lesson is super interesting. If you want to be workaholic, you have to marry the right person who can let you work on your own stuff. Also, you should get married first before being workaholic. If you do the opposite, you may not have time for dating and probably may end up alone. Well CS3216 is such a unusual course. I never know what I'm gonna learn :-P

One more thing I like about Mr Milton is his passion and affection for what he's doing. He can work 7 days a week simply because he loves his company. VSee has become a significant part of his life that he cannot live without.

And for me, I don't know if I'm a workaholic (yet), but I certainly love what I'm doing.

Pitching session: Idea sharing or networking session?

Last week we have the annual CS3216 pitching session. It was quite boring I may say. Too many people came down to give presentations about what they wanted to do. I didn't get most of the presentations. Nevertheless, there were quite a number of interesting people coming down that really caught my attention.

Dr. Dana Elliott Srither: His presentation is the coolest! I really learned a lot about AED (automated external defibrillator), which was a complete mystery to me before the presentation. His project is for a noble purpose: to save lives, which I think is a good enough incentive for computer geeks like us. Most programmers don't really work for money, instead, we work on things that are either cool, challenging, or meaningful. And as a proof, a lot of my classmates were interested in the idea and approached Dr. Dana after the session. 


- Rueben - Founder of household.sg: Before the pitching session, I received quite a lot of spams from Prof Ben about household.sg. From that, I know it's a good business because well.. Prof Ben doesn't just spam about random people :-P I think household.sg is a good idea. It can be a life changing business if implemented well. Too bad I couldn't find Rueben after the session to ask more about it.


- Laurence from Chalkboard: The shortest presentation. Most of my friends didn't catch what he was talking about. But I found it quite interesting. He talked about an API that Chalkboard is offering for free. Basically, what the API does is that it gives developer's access to Chalkboard's database to create apps related to locations and promotion information of restaurants, cafes and other businesses. I thought it'd be a good idea for the HTML5 assignment and did have a conversation with Laurence after the session. But in the end, my group and I decided to work with Carpool instead.


- The business guy from Carpool: I can't remember his name >"< I'm always bad with names :( Anyways, I knew the guy before from the module MNO1001: Management and Organization I took last semester. Carpool is the project his team did for the module, and it ended up receiving the best project award. The idea is quite good: matching people who drive to NUS with those who need a ride to school. The Facebook group they've created has grown big and messy. That's why they need a more systematic way, i.e. an application, to manage the community more effectively. My fellow teammates and I are all interested in the idea and decided to work with the guy and his team for the HTML assignment. 


Now when I think back about the pitching session, I realize that it's actually a networking session Prof Ben brought to us. It's the chance for CS3216 students to have a talk with people in the industry and find out what they're doing. The presentations are just for students to identify those who they want to talk to afterwards. It's one of the uniqueness that only CS3216 can offer.

Tuesday, August 30, 2011

Facebook seminar app review: Night Stand

For some strange reason, Ipad is not shipped with an alarm clock. And third party developers quickly grasp the opportunity to develop alarm and clock apps. Among them Night Stand is probably the most interesting.

It looks good. The clock is nice, kind of makes me want to look at it all the time. If I wake up in the middle of the night, I always know the exact time to make a decision whether or not to go back to sleep.

I think showing the current whether is a good feature. At least it helps me to mentally prepare in case of bad whether even before I wake up. But social integration: is it really necessary? Yes it's true that checking Facebook, Twitter, email is now my first thing to do in the morning. But what's the difference from hitting the back button and going to the real Facebook app? I'm fully wakened up already and conscious enough to remember how to check my Facebook and email. I think it's just a redundant feature that distracts people from the real purpose of the app.

What will happen if the app crushes or my Ipad runs out of battery? I'll be late for school, work, or appointment definitely. It's too risky for me. I would prefer to use my phone as alarm and use this app as a night stand or desk clock.

The voice control is a nice suggestion by the presenters. But wouldn't it be dangerous when you can turn off the alarm just by saying "Shut up"? I don't think people are that lazy to stretch their arms a bit to grab the Ipad :P

Conclusion: Night Stand is a cool app, but it kind of goes too far from what it's supposed to do. My suggestion is that it should stick to be an alarm and clock app. Too many features may confuse users. And lastly, unless the developers find a way to guarantee me a never-going-to-crush app, I'll still be using my phone alarm for now.

Microsoft lecture: The good and the bad

Finish writing this post a week ago but forgot the publish and never realized >"< how silly of me...probably that's the side effect of coding too much...

So here's the one-week-delayed post:
----------------------------------------------------------------------
We had a special lecture yesterday conducted by Microsoft guys. They came down and talked to us about HMTM5, Windows Mobile, and Windows Azure Web service. The topics fit CS3216's this year theme: Social, Mobile, and Cloud, which are the 3 directions that the technology world is heading to.

1. HTML5:
- The good: They really showed us the great potential of HTML5 and CSS3. That's what CS3216 students need to know especially when it comes the mobile/cloud assignment. I'm looking forward to the HTML5 workshop to get more knowledge on all the cool stuff that HTML5 can do.

- The bad: IE! I don't like the way they compared IE9 with Chrome during the HTML5 demos. To me it seems like a desperate attempt to salvage the bad image of IE. I downloaded IE9 to run the SVG girl demo (and the others also). It worked fine, better than Chrome I may say, but then when I switched to onboard GPU, IE9 became laggy. Apparently, Microsoft makes use of of their power to accelerate graphics by GPU rendering, which I don't think is a good approach for a web browser. Seriously I really hope that the browser war could stop. It's a pain for everyone, both users and developers. Browsers, unlike OSes, serve only one purpose - running web applications. So what's the point of having too many of them?

2. Windows Azure:
- The good: Windows Azure is easier to set up and configure than AWS. I haven't tried Azure but my friend, who is an expert on AWS, confirms that it is "less painful". I can't say much for now, but will be able to evaluate Azure when I have my 6-month access (each of us will receive one account right?)

- The bad: The presentation was quite poor. It took 10 mins for the presenter to get his computer into Windows, and 5 mins to open Visual Studio. It gives me a not so good impression on Microsoft developers. I would personally prefer a presentation on Kinect rather than Azure.

3. Windows Mobile 7:
- The good: It's the highlight of the lecture for me. The Windows phone is interesting and new, and it opens quite a lot of opportunities for developers like me. Currently the Windows mobile market is much smaller compared to Apple or Android. We could have a higher chance to survive and make a big impact. I'm seriously thinking about making a Windows mobile app for the final project.

- The bad: The Mango wasn't very stable. It crushed at some times, and some applications didn't work as expected. But that's understandable since Mango is still under development. Hope it'll get better.

Well that's pretty much it. I'm looking forward to Google and Amazon!

Tuesday, August 16, 2011

Flashback of yesterday lecture

I was going to blog last night but then decided to do it after a good sleep (maybe the last one in this semester :P). It's quite a bit hard to recall everything now, but the followings will definitely stick in my head for a long long time:

1. The importance of communication in a software engineering project:

"A group of elite programmers may fail miserably if they can't work as a team"~Ben Leong.

I totally agree! Human beings are biased, and each one of us has our own way of looking at things. We can't communicate well if we keep seeing from our own little eyes. I used to be a very stubborn boy who only cared about what I assumed to be the right thing to do. But I've learned the hard lesson: either open my mind to listen to other people or get left out and fail. Choosing the correct teammates is also important. It's a lot better to work with those who share the same mindset. But it's ok if such people are impossible to find. After all that's the whole point why Prof Ben forces us to form different teams for the 3 assignments. We just have to figure out how to work with each other.

2. Share or not share?


It's a controversial topic. Lucky Jonathan brought it up. I am one of those in favor of sharing ideas with other people. But I only share ideas that I'm implementing or planning to implement very soon. I often have very random ideas while doing other stuff and record all of them down. But of course I can only implement one at a time, and that's the one I share. I keep my other ideas secret until I decide to do them. Personally I think an idea kept secret all the way until launch is not going to do very well. It's a lot easier for other people to spot what is lack in the idea. We never know if we never ask. And if other parties happen to be able to add these missing features to their products, well... we'll be screwed!

3. The role of non-programmers:


Prof Ben pretty much said it all. That's why we have businessmen, designers, and other people here in CS3216. I just want to emphasize a bit more the importance of designers. From my experience working with programmers and being a programmer myself, I can confirm that good programmers can't design! It's because, as Prof Ben said, programmers and designers don't speak the same language. They think very differently. Some programmers may have reasonable designing skills, but they can't compare to a real artist. Products made by programmers alone are often ugly or lack "killer UI features" that appeal to users. For me, I really like working with designers because I can learn a lot from them. Hopefully one day I'll be able to speak the designer's language :)

----
I'm addicted to CS3216 already! I'm taking 6 modules this sem + a part time job, but CS3216 is the only thing I'm thinking about. Don't know whether it's good or bad...

Friday, August 12, 2011

What I expect to learn from CS3216

Only one thing: Learn how to do what I really love!

Before I enrolled in Computer Science, a lot of people advised me to change to Information System or Business / Finance if I want a higher salary after I graduate. I was almost convinced. But after taking CS courses, I realized "What the heck!! This is where I belong!". I love coding and all other computing stuff. I took 2 business modules last semester and ended up using the S/U option for both of them because I was spending too much time, well.. coding. This is what I love and what I'm gonna do.

That's the reason why you see me in CS3216 :) I want to meet people who share the same passion. I want to learn from them, especially Prof Ben, how to follow my heart and soul. I love the quote "If you do what you love, the money comes anyway". We all have big dreams, but dreams without true passion can never come true.

Thanks Prof Ben for offering CS3216 again this semester. I will learn how to suffer with enjoyment :)