webpage stats Everything that is happening: Concepts for a S/W Engineer

Friday, August 8, 2008

Concepts for a S/W Engineer

The number of S/W Engineers is quite enormous these days especially in India.Unfortunately the quality is not quite matching with these numbers.Majority of these raising developers are lacking in basic S/W concepts core to this technical field.From my limited experience in the industry and my academic exposure I am listing out certain domains mandatory to gain expertise in this field.

A successful S/W Engineer bases his development on proper design,effective coding,comprehensive testing continuously striving for a match between simplicity and completeness.Beyond the basic methods, there are concepts that good software engineers know about. These transcend programming languages and projects - they are not design patterns, but rather broad areas that one needs to be familiar with.

Databases

Data is the key to information management.And the key to data is storage i.e Databases.Though scalability is an issue with them especially with regard to web-based systems,they are one of the fundamental concepts of computing.

The key database concept to know would be relational databases,query language and data normalization.

Suggested reading
Security

Security is of paramount importance and it covers authorization,authentication and network protection.While authentication is about verifying the credentials, authorization is assessing the permissions based on the credentials.Network protection has to deal with sensitive and secure data transmission.

Suggested Reading
Concurrency

Concurrency is about parallelism, but inside the application. Most modern languages have an in-built concept of concurrency; in Java, it's implemented using Threads.The complexity in concurrency programming stems from the fact Threads often needs to operate on the common data. Each Thread has its own sequence of execution, but accesses common data.

Suggested Reading
Data Structures and Algorithms

Algorithms and data structures form the crux of effective programming.They are crucial to the art of programming.There are just a handful of things engineers must know about algorithmic complexity. Planning is particularly necessary for simplistic and efficient programs.Algorithmic skills evolve as a subset of problem-solving techniques.Quick and to-the-point logic is of importance is heavy-duty applications.

Suggested Reading



Modeling,Design and Architecture


Lots of systems suffer from the extremes: clumped, lengthy code with little abstractions, or an overly designed system with unnecessary complexity and unused code.

In modeling, you iterate towards the right solution. Firstly, never add methods that might be useful in the future. Follow a minimalistic approach. Secondly, be willing to change things.Iterative development is key.Ultimately you will arrive at a system that feels right. Until then, keep iterating and don't settle.

Suggested Reading

Proficiency in the above concepts is guaranteed to ensure the gift of being an effective and purposeful programmer.Strong concepts and a learning mind is enough to set aside one from the milling crowd of engineers.

No comments:

Social Twist

Sharing

Bookmark and Share

Technorati

Add to Technorati Favorites