Some of my thought about Software Architecture
September 4, 2007 § Leave a comment
Upon various drinking occasions with fellow developers, there are a couple of wisdom worth sharing about software architecture. Enjoy…
Don’t do some of them because James Gosling said so. Don’t do some of them because the book said so. And more importantly, don’t do it because your blue suit client demand you to do so.
Use design pattern technique based on necessities and careful consideration about the feature’s purpose.
Don’t just use design pattern that you only know. Depending on the requirements, sometimes you just have to learn new design patterns. Better start learning now rather than never.
Be very careful with it. Don’t over do it. Nobody wants to see 10M lines of stack trace.
Remember that the purpose of polymorphisms is to re-use parent object’s properties as much as possible. Extending excessively cause object’s behavior to keep changing throughout software’s life cycle.
Which one is really good for you? Is the company you are working for a JAVA shop? Is the application that you build need Perl? The answer of this question depends on what skills you already have. Unless, if you make an application for the sake of learning something new.
CakePHP is awesome by the way, but that’s me being a zealot.
If you think a framework sucks, is it because the framework really suck? or is it because you don’t want to learn it? or it’s because the learning curve was huge? It is best to stay objective when reviewing or using a framework, you might miss some awesome features.
Ain’t nobody cares about your choice of framework, as long as it get the job done.
Scale what? How to scale it? It is very important to be able to identify which part of the application that needs to scale well.
Between friends, the zealotry is fun (i.e. OS X rulez, Windoze sux) but in professional setting, this is bad. Not because it would make you look “unprofessional”, but because it will clouds your judgment.
Not everything needs to be Service Oriented Architecture & definitely not everything needs to be AJAX.
Ruby on Rails may be cool, it is actually so totally cool, but the performance may varied (depending on the Gems and many other things).
Sometimes reading Slashdot too much makes you think that all of your choices sucks big time. For example, client-side development requires AJAX, or Flash, or Java Applet, or Browser plugin. All 4 of them suck big time in different categories. Maybe it’s best to just pick 1 and read more API.
I think Java sucks, and becoming suckier in every upcoming version but it is de facto standard for blue suit jobs. If I’m starving, I will code in Java.
Debunking Old Myth:
It is true that IE 7 is still suck, but try opening IE 6… you will realized that the world had become a better place. In addition, Firefox was and is still awesome but the memory usage is still brutal.
Scriptaculous was great, but there are others which is flat-out better now, i.e. Mootools or Mochikit. Why I said that Scriptaculous was great? Browser memory is precious and Scriptaculous is not really efficient, new Effect is always creating a new object as opposed to recycling existing Effect object.