Wednesday, October 31, 2007

Effective Java Programming

Effective Java Programming, by Addison Wesley, is one of nice books i have read in software development material. and i recommend it to any developer developing in Java, starter or senior.

programming by nature is very flexible. you have many choices. it is like creating a statue using clay. You choose at every point; Class names, methods and variable names. public methods, internal implementation algorithms, structure of the package classes,.. all of those and others are left for the programmer to choose.

Effective Java programming comes to introduce a lot of the best practices for Java programmers; to enhance the stability, readability, clarity, reusability and maintainability of their code. it also has guides to the proper use of a lot of the java standard classes.

A note inside the book really draw my attention; in item 8, chapter 3, Wesley was talking about overriding the hashCode method, he stated an example of a phone number class and an implementation of a suggested hashCode, then he said "Writing such hash functions is a topic of active research and an activity best left to mathematicians and theoretical computer scientists.". Wesley encourages his readers to use the state-of-art code. that's the goal of the book.

Actually i was thinking about the classes of the open source libraries we use as i proceeded reading the book. the kind of code that shall be used by thousands of programmers all around the world.

Sunday, October 14, 2007

Why Software Developers Leave...

i read a nice article with the title "Software Team Turnover: Why Developers Leave (And What You Can Do About It)".

In this article, the writer, Aaron Reed, discussed the negative impact of the fact that some software developers leave their teams and what makes them do that. it is worth to read.
Aaron specified three main reasons that causes developers to leave:

Money
Like any person in any field, Software Developers too are in need for Money to fulfil their human needs. a developer being paid below the market average might be an unhappy unsatisfied developer. and in general, a Developer can increase his income by jumping to a new place more that he can by getting a raise in the same place.

being happy with what they do
Developer can work in some place or on some project even under paid, if they love what they are working on. in other words.. they also can leave for somewhere else (even paying less) if they were unhappy about they current projects/place/team, if they were bored, or if they were not learning more and not getting experience. actually this is a key reason for developers to move to a new place. the need for getting new experiences and new challenges.

Burnout
Software development is not an easy job. It is like having a hard exam for at least 8 hours per day/ 5 days per week. sometimes the developer gets overloaded by working in some project, and due to his experience in that project or field, and due to the fact that resources are need for that project. management do not move the developers to another project. which makes leaving the whole place is the only get away for the developer. i have seen this more than once before.

i totally Agree with Aaron Analysis of the issue. but i also need to add "Politics" as a candidate cause itself. a broken promise from the management side is fatal from the developer's prospective. disharmony among team members or people in the same work place may cause some of them to be unhappy to the extent that they may not want to stay in that place any more.