Software Creation Mystery - http://softwarecreation.org

Archive for the ‘Job’ Category

The Happiness. Programmer’s Edition.

Happiness is a direction, not a place. - Sydney J. Harri


tookie

Happy programmers are more productive, healthier and live longer. It is pleasure to work with happy programmers. Are you a happy programmer? Do you have feeling of joy and satisfaction every day? Do you want to know how to become happier?

This post considers programmer’s satisfaction with live as a whole (I had another post dedicated to happiness at work).

Programmers as other people are happier if they have

  • more money
  • successful marriage
  • excellent health
  • good friends
  • live in a beautiful place with wonderful weather


But we have what we have. It is not easy to achieve all of this: become rich, find perfect spouse and friends, be completely healthy and move to the best place on the Earth. But the most nasty news is that even after achieving all of this happiness is not guaranteed to last forever.

Read full post >>

Top 10 Qualities of The Perfect Programmer

Who are the perfect programmers?

Popular blogger Alex Iskold answers in Top 10 Traits of a Rockstar Software Engineer:

  1. Loves To Code
  2. Gets Things Done
  3. Continuously Refactors Code
  4. Uses Design Patterns
  5. Writes Tests
  6. Leverages Existing Code
  7. Focuses on Usability
  8. Writes Maintainable Code
  9. Can Code in Any Language
  10. Knows Basic Computer Science


It is a solid list, but this list concentrates on the secondary traits, which are just consequences of the deeper set of qualities. And it is an idealistic list. Do you expect the same qualities from a Flash programmer for kids websites and a software engineer for B2B financial transaction services? But how can we recognize a perfect programmer in the crowd of developers?

The Ultimate Criteria for finding The Perfect Programmer: The perfect programmer delivers good software that meets client’s expectations.

Therefore, the shocking truth is that perfect programmers could know only one programming language, don’t have any idea what are design patterns and don’t program all nights in their basements creating the next Google. We cannot objectively measure the programmers perfection like you could measure diameter of your biceps. The perfect programmers are simply perfect if they deliver a quality, usable and maintainable software system [a good system] in time and meet client needs.

Read full post >>

Five Big Personality Traits of a Programmer. Do They Matter?

“Variety is the spice of life”

Did you see a software team with members that are

  • always stressed and full of fear to fail or completely indifferent to end results?
  • totally agree with each other and satisfied with their product, but very far from harsh reality?
  • competing and fighting for the true solution, but cannot achieve common goals?
  • always inventing something interesting, but cannot focus on work and deliver software?
  • overly disciplined, planning everything, but deliver mediocre boring results without any spark of imagination?
  • having excellent communication, rapport and environment, but spend most of the time talking than working?
  • sitting in separate cubicles without talking, barely understanding what others are doing?

Can these teams be successful? What is the root cause of their problems? How these problems could be prevented?

Our personalities


One of the most interesting things about humans is their personality. We are different in behavior, reactions and feelings in the similar situations. These wonderful personality traits make our life refreshing and sometimes totally unpredictable. Do they matter in software development, apparently logical and rational activity? I believe that people are the most important factor in the software development and they determine success. A programmer’s personality affects behavior and therefore it must have significant impact on the work itself.

Empirical research shows five broad dimensions of personality:

  • Openness - appreciation for art, emotion, adventure, unusual ideas, imagination, curiosity, and variety of experience.
  • Conscientiousness - a tendency to show self-discipline, act dutifully, and aim for achievement; planned rather than spontaneous behavior.
  • Extroversion - energy, positive emotions, and the tendency to seek stimulation and the company of others.
  • Agreeableness - a tendency to be compassionate and cooperative rather than suspicious and antagonistic towards others.
  • Neuroticism - a tendency to experience unpleasant emotions easily, such as anger, anxiety, depression, or vulnerability; sometimes called emotional instability.

What are the best personal traits for the programmer? Before answering this question, I want to mention research of rudimentary personality traits in wild animals. Small birds, great tits, have personality ranging from highly exploratory to more cautious one. Scientists found that the both personality types are optimal, but under different conditions. When resources were scarce it paid the birds to dispense further. However, when resources are abundant more cautious birds were more likely to survive. Morale is that our evolution preserved different personalities for the good reason. They help us to survive and advance under various unpredictable conditions. They made overall population resilient to changing environment, threats and challenges.

Software teams need diversity not only in skills, experience and knowledge. They need the optimal balance of personalities to effectively build software, especially in our rapidly changing technological, business and social worlds.

Read full post >>

Can Computers Beat Human Programmers? Part 5. Future of human programmers

Part 1. Gaining processing power
Part 2. Becoming intelligent
Part 3. Interacting with humans
Part 4. Building useful programs
Part 5. Future of human programmers

Computers don’t retire, overreact and complain. They could in minutes get all the knowledge accumulated by other computers. They could work 24 hours without making stupid mistakes. They make more and more human jobs obsolete. It is inevitable, computers will replace programmers in many areas. Even more, if Strong AI, capable of reasoning and understanding meaning, will appear, programming as a profession will be almost eliminated (at least coding part). Customers will be able to describe their needs directly to a computer. Computer AI will be translating these specifications to machine code (and stronger AI will require less formal specifications) and relentlessly building the software system.

Does it mean that that at the some point in the future software developers will no longer be needed? It could be true, if customers could specify exactly what they need and can effectively collaborate with AI to build the system. But things are not so simple, especially with non-trivial problems and humans (assuming that customers and users will be still humans). There are three roles that software specialists could play in the future even with powerful computer programming AI.

Read full post >>

Lost Personalities: How our company alters us

- We’re sorry. It’s not us. It’s the monster. The bank isn’t like a man.
- Yes, but the bank is only made of men.
- No, you’re wrong there- quite wrong there. The bank is something else than men. It happens that every man in a bank hates what the bank does, and yet the bank does it. The bank is something more than men, I tell you. It’s the monster. Men made it, but they can’t control it.

- The Grapes of Wrath by John Steinbeck

Any company or large group of people is more than a sum of individuals. A company exercises control over people minds and changes them. Inside the company, organization or crowd you are no longer you, but the element of the system. You feel, think and behave differently. Collective actions are distinct and often independent of individual wills and desires. The scandal with Enron, tragedies of Abu Ghraib and Holocaust show how normal people minds could be dangerously influenced by group and context pressure.

Three stages of altering our minds:

  1. Compliance - agree with collective views or acts in front of the group, but disagree in private.
  2. Identification - temporary believe in collective view while being part of the group, but return to old beliefs after leaving a group.
  3. Internalization - the individual views are truly altered and induce permanent change in a value system even outside the group.

There are three powerful forces that change us:

  • Conformity
  • Obedience
  • Absorption

Read full post >>

Guide to Job Security for Software Developers: 15 Sure-Fire Methods

Job Security (my definition): perceived company’s losses of firing you are much higher than keeping you around.

I proudly present comprehensive collection of three sure-fire strategies and 15 sure-fire methods that could dramatically enhance your job security.

Read full post >>

How to Be Happy At Work. Short tutorial.

Then God said to Adam, “You listened to your wife and ate fruit from the tree. Cursed is the ground because of you. Through hard work you will get your food, every day of your life.”

This Adam curse continues and now - we have to work hard every day to earn our food. It is inevitable fact - most of us spend at work more than half of conscious adult life. How well do you spend this half of our life? Are you unhappy, stressed or bored on your job?

Why people are unhappy at work?

  1. Conflicts with other people and especially your boss. We all humans and, surprisingly not only you, but everybody has own agenda, interests and needs. Conflicts often happen, because we forget about this. Care about people around you and you’ll enjoy their company much more.
  2. Burnout - too much pressure, too much stress, too little time to think about yourself. Stress comes from inside - we are creators of own stress. There are hundreds ways to relieve - better organization, delegation of responsibility, better communication with co-workers. External factors are most important: enjoyment from family, home, physical activity and leisure, fulfilling personal life and achievements. At the end, we work to live, not living to work.
  3. Lack of variety and challenge. And first step to have interesting and enjoyable job is to design your job.

Read full post >>

Programmers are lazy capricious pseudo-intellectuals. Really?

“There are very few true artists in computer programming, most are just house painters.” - Tim Bryce’s Law

Management consultant Tim Bryce doesn’t like programmers. Many programmers don’t like him either (here, here, here, here and probably in many other places).
Mr. Bryce’s view of programmers:

  • programmers often bamboozle others and heighten their own self-importance
  • the average programmer has a lower IQ than any other worker with a college degree
  • programmers show signs of sloppiness and mental laziness
  • they appear disorganized to make it difficult to judge how they are progressing on their work effort and reveal inadequacies in workmanship.
  • the typical programmer often laments he/she is being overworked, underpaid, and unappreciated.
  • to the programmer’s credit, they usually possess a curiosity about technological developments. However, this must be carefully nurtured by management - too much information may distract programmers from their job.

Responses on Mr. Bryce’s post (referenced above) provide many excellent points why Mr. Bryce is wrong. However, I want to comment points where he is probably right. Also I want to understand why some management consultants with more than 30 years of experience could have such view? Certainly, I reject Freudian view that an unknown programmer hurt feelings of Mr.Bryce in childhood (the main reason is that at this time the world had only few programmers and all of them are known).

Mr.Bryce’s target audience is not programmers (whose low IQ would probably prevent understanding his Theory P anyway), but IT managers and business decision makers. The underlying premise of Theory P is: “The more effectively we manage the people who program the computer, the better we can utilize the systems to support the information needs of the business”. This theory is not about live people, but about pragmatic business and lets consider the theory from this perspective. There are three points where Mr. Bryce could be partially right.

Read full post >>

Software Creation Mystery - http://softwarecreation.org
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 License .