I do need to apologise to prof Ben for monday's gloomy face. I know how hard it is to present in front of a unresponsive class, but it really wasn't your lecture that was the cause - i have been sick for the past few days (the almost sick but not there kind) and yeah, i had a really bad test on monday :S So yah, that's why the sian diao face.. But your lecture was really good! :D
Anyway, wanted to play cheat and do a combo of the last 2 lectures (my penalty lecture and prof's software engineering lecture), but the post for the last lecture alone drained quite a bit out of me.. merh. Prof, i'll make up the penalty lecture another time! :P
Anyway, i've tried to make this summary as entertaining as possible so i hope all of you out there will enjoy it :P So starting with prof's lecture.. I must say, prof, that you can present damn well. haha! I got several nice takeaways from it, but here's the one i like most:

I'd love to see this process in action though, and see how zihan's team actually managed to pull it off! It would have been amazing (apart from the fact where i won't really be able to tell what the programmers are doing :P)
So prof Ben basically covered 5 principles in the lecture:
Principle #1 Abstraction

Principle #2 - Separation of concerns
Principle #3 Modularity and decomposition 

The first thing that comes to mind when you hear modularity - LEGO. And it describes modularity perfectly! Basically, prof ben summarised it in three main points:
- Break it down to liddle bids so you know who's head you can chop (if one part of the lego collapses.)
- Make sure it can talk to one another! Don't get a 2 point adapter for a 3 point plug!
- "High cohesion, low coupling" Let it be a 'standalone' yet an integrated part of the big picture, just like lego bits are all one standalone piece that can be pieced firmly together. And while looking for lego i found this damn cool modular product (sorry, the ID side of me at work :P)

By the company Bug Labs,
- Break it down to liddle bids so you know who's head you can chop (if one part of the lego collapses.)
- Make sure it can talk to one another! Don't get a 2 point adapter for a 3 point plug!
- "High cohesion, low coupling" Let it be a 'standalone' yet an integrated part of the big picture, just like lego bits are all one standalone piece that can be pieced firmly together. And while looking for lego i found this damn cool modular product (sorry, the ID side of me at work :P)



"BUG is a collection of easy-to-use, open source hardware modules, each capable of producing one or more Web services. These modules snap together physically and the services connect together logically to enable users to easily build, program and share innovative devices and applications. With BUG, we don’t define the final products - you do."Super cool product, no? So now you have the LEGO computer! Want an extra gb of ram? snap it in! Want am LCD screen? There you have it! How about a speaker? And the list goes on and on.. But the BEST part is that BUG can be upgraded and scalable. Which means you can probably be using the same product 10 years down the road! (this does mean bad news for the marketing peeps tho - imagine having no one to sell to cos you're still using the same product from 10 years back? >.<) haha. So yes, lesson to take away - make it standalone, make it fit. So if you haven't already realised, the picture above is a skeleton key.
*waits for laughter, receives none* -.-
Anyway, that's basically what generality is about - to solve many problems in one go, like how one skeleton key can open many locks. Erm, the part about cutting, pasting and editing code i roughly understand only, but eh, you non-coders get my key analogy right? okay! so let's leave the coding to the pros! :P haha..
Principle #5 Design for change
This is the part where my favourite SDLC and Agile iterative process was brought up. :D I like. But yeah, what design for change basically is is to plan for change, to build in that freedom to allow your app to grow. Just like the inchworm shoe:

So after all that, what is Software Engineering? It's basically the management of complexity to reduce bugs (which i'm infamous for creating :P).
And because of that, prof had 3 of our dearest classmates, Mannie, Justin and Zihan (well one lao da) to present on how they've managed projects :D I can't sum up the richness of their experience, but i can say that the methods really inspired and intrigued me :)
Stuff that i learnt and stuff to ruminate on?
(i'm gonna list it in just small points for my own keepsake)
- From Mannie: Scrum - the naggy technique to chase people for work
- From Justin: Prioritising, the breaking down of tasks to simple achievables, subscribing manhours, cutting features, who does what and when and how?
- From Zihan: Document like crazy! Be super duper organised! (TRAC)
- Why can't programming be a simple language? Or is it because it's just another super defined language? (like hebrew :P)
- Outsourcing - it's not happening? But it's a growing trend? Why?
- Separation of UI from business logic
So that sums up our Monday's lecture! Key thing to remember?
"Think more, code less!"
Random ramblings and thoughts that occurred while writing this blog:
One of my greatest regrets is having khoa as the single programmer in our team. Perhaps if he saw many other brilliant programming styles in action, he would have the chance to be inspired :P Just like how i can't survive alone doing design.. other people's designs are constantly influencing me, pushing me to get better (like mannie's drawings!)
Nice post, very cute ... but there's a typo, it's Separation of Concerns, not Corners. :-P
ReplyDeleteooops haha paisayy!!! i couldn't read my handwriting :P
ReplyDeletewill change it now :P
Like the picture on agile iterative process :)
ReplyDeletehaha.. thankew! *beams* Original pic okay!! not like all the other koped pics :P haha!!
ReplyDeleteVery cool post! I am teaching SDLC to highschool students and I am totally gonna use your cartoon pics (...if you don't mind).
ReplyDelete