Tuesday, January 10, 2012

Learn learn learn


It has been an eventful new year so far.

Just a bit of update, I am doing ATAP at PayPal, started on 3 Jan. And the first week was such a good experience. There are times when I left in the evening seeing people coding furiously, and then come back the following morning seeing them still being there coding furiously. Luckily the CS3216 experience does not make me so shock about this. I feel blessed I had a chance taking CS3216 before, because there are a damn lot of new things I can (and have to) learn! And learn them fast! Almost everything is new and exciting. I spent last week entirely browsing through the code repo, exploring the code structure and watching webcasts (must say NUS prepared me well for this haha). Haven’t produced anything so far, but I am looking forward to being “up to speed” this week soon.

Another update, I got an offer from Facebook for a software engineering intern position. It will start from August 2012, meaning I will skip a semester here, results in graduating one semester late, but I think it’s totally worth it. I will try to write down my interview experience in another post, right now just too excited to thinking about it. It is definitely a big chance for me to learn a lot more and more and to become "something" at a higher level than now!

P.S: I’m still sad I cannot take CS3217 this semester. Argh, this look like the last sem it’s offered already. It’s obvious from my CS3216 experience, I can learn tons of new things from Prof.

Tuesday, November 15, 2011

What I have learnt

So, it’s reading week here, final report is submitted, and the poster session is over. In short, the final projects, and CS3216 in general, are awesome.
This final blog post (for this course only, guess I will continue writing after this :D) is about what I have learnt from the course this semester. But first, let’s have a look at what I said in the beginning :)
“First, I definitely want to improve my teamwork skills. In fact, I am quite silent and not confident to say my opinion frankly in meetings, or tend to do things only before deadlines.
Second, I want to learn how to learn new things.
Last but not least, programming skills. HTML5, MySQL, PHP and more, what can other module can make us learn all in one semester?” 
Let’s see how things have changed.
On my teamwork skills, I feel that I have improved a lot. In meetings, I have talked more and contributed more than I was in my first 2 years. However, I feel that it is still not at the level of contribution I expected, where I can easily (and frankly) express my opinion without causing any personal issues. I need practicing a lot on this, since I realized once I cannot express your ideas (even good or bad), later I will regret.
On “learning to learn new things”, this was an awesome take-away from CS3216. With tons of projects and deadlines, and even groupmates’s expectation, the need of learn new things comes naturally. And it’s true that I always feel uncomfortable when getting anything totally new, the feeling after understanding and getting things done are wonderful. Besides, I think now I’m much more confident in picking new technologies and make things from them, that’s a great change in the mindset, I must say.
On programming languages, my expectation is totally fulfilled. This is the module where I learn (and do) most new languages. On web programming, database configuration, various types of APIs, even iOS application for our final project, things are totally new at the beginning become too familiar at week 13. And the speed of picking up these is another exciting thing!
Other than that, I meet really awesome people here. Some with *incredible coding skills, some with professional communication and presentation ability, some are great at design and some are amazing entrepreneurs. I’ve been lucky to work with and learn from them. Anyway, this is one of the courses that I can look back and proud of being one of the students. And last, remember the first lecture, where Prof shows the picture about potential and intrinsic motivation ? With CS3216,  I think my bar is effectively higher than I was at that time. But I know I’ll keep pushing it higher, without CS3216.
It was such a great experience taking this module.

Saturday, October 8, 2011

On final project

It has been 8 weeks from the start of the semester. The start of CS3216. There has been a lot of events and stories. Most important, I think I really can do what I love here. Spending hours, days and nights setting up the database, coding and debugging. And on things that I want to build! It’s really exciting to be part of the journey, got new friends, been through two assignments, picked up new languages :-). I almost wished that every module can be as awesome as this one, before I realized what will happen to my school life when I am going to spend over 20 hours a week for each of 5 modules.

Ok let’s talk about our final project. What makes it so great that I want to join the team? What can it make a difference to me? Ok, we are going to build an interactive storyboard based on a cartoon. This is for kids, obviously :-). To my thought, this is like a mixed between a cartoon and a comic book. You (the kid) can actually control the cartoon’s speed, and can really interact with the content :-). Isn’t this what I want when I was a kid? To watch over and over again the scene that Superman beats the villain? Now by swiping on the iPad, and playing games that embedded right into the cartoon. So it’s like making a childhood dream comes true to me.
So after the meetings and discussions with Prof and 2359, what are we supposed to do is to build a framework for the making of the storyboard, make it easy for the editor to insert pictures/scripts or animations into it. It should be scalable, and easy to use enough that can handle multiple episodes content. Maybe in the future it can be a framework that a cartoon maker company will think of when they are about to build an interactive storyboard. From the tech side, we will use the Sparrow based on the raw code supplied by 2359 to complete the framework. Other than that, we are going to build a 3D game based on the cartoon (stay tuned, you will know what it’s about in the poster session) :-) From my side, I have to pick up Obj-C and Sparrow fast in order to start coding this weekend. Hope things go well to the end of the semester. Really excited now!

Assignment, teamwork and peer appraisal

Ok, so it’s been 3 weeks without writing down anything :P. I don’t have any excuses but the thing called other modules. That includes midterms and deadlines (assignment 2 too). So all are over, and here I am writing updates about what happed so far.

It’s been a painful yet fruitful week, the last week before assignment 2 deadline. After spending nights working at the back end and implementing functionalities (and get them done), I was quite excited about finishing our assignment. Finishing strong :P. However I was a little disappointed when the UI part cannot handle all the functionalities on time. We can only finish the basics. It’s also a big lesson for me about planning and managing work, to avoid the situation that I finish features before the desire deadline, and then go on implementing “cool” features with a hope that the UI part can handle it on time. Instead I should learn how to work in the UI part earlier, to help my UI teammates at that time. It’s suck to finish my part, and watching your teammates working desperately to meet the deadline but can’t help them because I am not familiar with the API. But it’s over now (the deadline I mean :D), and one very big lesson learned.
Besides that, it’s very irritating when you are shown a UI mockup, and you know you don’t like it, but don’t have any suggestions (because you can’t think of any!) and don't know what is best to say. I often say to the designer that it’s ok, thinking that it’s like refusing all their effort working on the UI. But I know it’s not the right way for the application development process, I know. Hmm.

On the peer appraisal, my main “bad” and “need to improve” point is too quiet, need to speak up more. That’s true I admit, and I will spend time improving my communication skills seriously. (There are more problems can be solved by good communications more than I thought). And my presentation skills as well, as I observe, there is a huge gap between me and my classmates about this. Another “need to improve” point that made me think a lot, is “Familiarize yourself with real start-ups and how they operate”. It’s true, I don’t know much about sales, management or marketing sides. But I always think that it’s more useful to spend time picking up a new programming language, or a design pattern, than reading about cash flow and business models. I do not oppose these, I know they are among the “must”s when building a company, but then, there is business guy in the company too. Nevertheless, I often think that I will learn these skills at one time, when I think I’m full of programming languages and technology, but it doesn’t happen yet, so … yeah, I will pick up them later :-)

Monday, September 12, 2011

Human nature and life

Things I learnt from today’s lecture
-          Your brain is more active when you’re bored.
This really made me surprised :) Isn’t the brain more active when it’s trained hard enough?
-          Learn 3 things each day.
Yeah, I agree. This is what my mom told me :P. And one more thing that she always adds, try not to forget what you’ve learnt :).
-          It’s the matter of time to get the first cheque. It’s the matter of existence for any startup to survive until then.
-          Salesman is important.
-          Get married first, then be workaholic.
-          It’s important to marry the right one. And normally you’ll be success on your third try.


Friday, September 9, 2011

Use case 1: Get Help (or Get Done?)

Assignment
Your task is to analyze these screenshots and uncover what was the problem faced which lead to the
team’s decision and how the problems can be resolved in terms of:
1. Usability vs Aesthetics (Is the interface attractive? Is it functional?)
2. Number of options / freedom given to user when posting a need.
3. Cycle of interaction & incentives (Are the elements of the app engaging?)
4. Other problems you think the team might have faced

Let’s talk about the home page. 
 
In my first thought about the picture, it is cool. There are multiples nice buttons here and there, nice icons and good color combination.  It makes the overall view good. However, the page is not well designed. First, I think the “need help” details are the most important part of the page. Why is its space smaller than the “Who do you want to ask?” part? Why the RSS, Twitter and SMS take so much place? Why the right side of the screen is much more colorful than the left? At your first sight, were you also attracted to look into the right side of the page?
It would be great if they have some ways to hide the whole right part of the screen. (jQuery released in 2006 right?)
Second, what’s the difference between the 2 red buttons New Project and call for help? Quite confusing for a first time user bah.
Ok, to the functional. I really have some questions after having a close look of the home page. Why all the checkboxes of “Who do you want to ask?” were selected?  Why we should embed Twitter and SMS? Is it that useful for the user when they have Facebook already? I am not a designer, but from a user’s point view, I think these questions imply most part of the home page is not functional. (One more question, why can I see the SQL statement at the bottom of the screen???)
About the overview page, I am impressed J. If I am a user of the application, I don’t feel it need to improve. Very intuitive and well organized. The buttons “Help him!” and “Refer a friend” really press the content of the page.  Wait, is this because it is Facebook-feed like? Well, I think it is.
One problem between this overview page and the home page is the location of [Overview] |Recommendation hrefs. I’m not sure what the root of the problem is, since it seems there are enough space for those 2 hrefs in one line in the home page, while there is not sufficient space in the overview.

I actually like the badges system in the view project page. Very cute, very intuitive. Yeah although you can’t help, you can “Wish her luck”. The system is well designed here to encourage the involvement of all the users (one thing to learn). However once again I think the most important part of the page, the project content, is not emphasized enough. Well in my opinion this is because the developers want to leave more spaces for the commenters/viewers. But actually a little more stress on the project details would be great.
And why does the profile pictures on the right keep repeating?
Lastly, the statistics page. Actually since I didn’t have a chance to use it, I wonder the statistics show the best one from your friendlist or from the whole system. This leads to a need of a Setting page, which the user can choose what he wants to view, and as suggested in the home page, we can hide all the checkboxes and put them here.
To finalize, I think the application user interface is mostly fine (which I can learn a lot from J ), except for the home page. It is very functional, and to me, the execution of the great idea has been done well by the team. Since our first assignment is to build a forum/trade place too (Penny Swap), I have a chance to look back at our design comparing to the Get Help application here. And although there are some basic differences between a standalone app and Facebook integration app, what I can learn here is the importance of engagement factors, which our app seems to be lack of.