Thursday, November 13, 2008

Essentials of a Software Engineer

Sites like Digg usually have highest number of "diggs" on stuff like "Top 5/10/n" things on varied topics. Recently a co-worker sent me one such popular article about "Top 10 concepts that every software engineer should know". This was just in time as I was preparing to start this blog about the various techniques that would enable a Java engineer to be more pragmatic regardless of the kind of applications being developed and the myriad of technologies/frameworks being used . In my opinion, it is more essential to know these principles thoroughly and put them in practice before jumping to learning any new frameworks. Most of the frameworks - open source or otherwise - are usually the usage of the design principles in practice to solve commonly encountered problems. Good Object-Oriented(OO) design is the key principle here. As Rod Johnson points out here, "It's possible to design a [J2EE] application so badly that, even if it contains beautifully written Java code at an individual object level, it will still be deemed a failure. A [J2EE] application with an excellent overall design but poor implementation code will be an equally miserable failure. ... adherence to good OO principles brings real benefits. OO design is more important than any particular implementation technology (such as [J2EE], or even Java). Good programming practices and sound OO design underpin good [Java/J2EE] applications. Bad Java code is bad J2EE code."

No comments: