Becoming a better developer

Today I was asked by a fellow web developer if there is anything I could think of that would help him on his path to become a better coder and developer as a whole. The question was innocent enough but it made me think a little and then for some reason I thought back to my psychology classes in school and remembers Maslow’s hierarchy of needs. Maslow’s heirachy of needs as described in the Wikipedia article is:

a pyramid consisting of five levels: the four lower levels are grouped together as deficiency needs associated with physiological needs, while the top level is termed growth needs associated with psychological needs. Deficiency needs must be met first. Once these are met seeking to satisfy growth needs drives personal growth. The higher needs in this hierarchy only come into focus once all the lower needs in the pyramid are satisfied. Once an individual has moved past a level, those needs will no longer be prioritized. However, if a lower set of needs is no longer being met, the individual will temporarily re-prioritize those needs - dropping down to that level until the lower needs are reasonably satisfied again. Innate growth forces constantly create upward movement. http://en.wikipedia.org/wiki/Hierarchy_of_needs

So, taking that into consideration, as an answer to this simple question I present the Web Developer’s hierarchy of needs:

Web Developer’s Hierarchy of Needs

Let’s see how we can apply each level of Maslow’s pyramid to the daily lives and routines of the lowly web developer.

Physiological needs

The physiological needs ultimately control how the developer feels must be fulfilled. If at any point one of the physiological needs is not fulfilled it must be rectified and takes precedence. These consist of:

  • Hardware
  • Operating System
  • Software
  • Internet Connection
  • Programming Language(s)
  • Space to work

To fulfill these needs simply pick them. I know many developers who are continually switching between this OS and that, reinstalling their systems monthly. There’s no bigger drain on your life then spending a few day re-configuring something that was probably working fine to begin with. You always miss something or have to change your development patterns because you “think” it will be better. I didn’t this a lot in high-school and it’s just silly. Each time it’s a huge drain on your personal resources so if you’re thinking about switching make sure it’s the right choice for you and not just an idea you’re having. All of these resources need to be fulfilled before you can move on.

Safety Needs

Safety needs begin to emerge once all physiological needs have been met. These include:

Regardless of which brands and items your chose to fulfill your physiological needs, there’s some basics that any developer needs to truly feel safe. Documentation to guide you through problems and reference materials (such as a good book are always good to have on hand when you get stuck. I also can’t speak enough about a revision controls system. Use one and lean what it can do. I didn’t for years but once I started I never looked back and it may be one of the best development decisions I ever made.

Love/Belonging/Social needs

Yes, believe it or not, many web developer are social! Social needs can only come after both physiological and safety needs have been met and include:

  • Blogging
  • Commenting
  • RSS Feeds
  • Mailing Lists
  • Contributing to projects
  • Social Networks

What you’re reading here is partially fulfilling this need for me. There’s an abundant number of resources on the web where you can learn a lot and contribute back in only a few minutes. Read, comment and subscribe. Keep up with your reading on developer community sites such as:

or the personal blogs of your favorite authors and advocates (like this one - thanks). For a list of great authors check out the authors section of A List Apart though I’m not in there… Yet.

Esteem needs

Esteem needs are a little tricker. According to Maslow: > all humans have a need to be respected, to have self-respect, and to respect others. People need to engage themselves to gain recognition and have an activity or activities that give the person a sense of contribution, to feel accepted and self-valued, be it in a profession or hobby. Imbalances at this level can result in low self-esteem, inferiority complexes, an inflated sense of self-importance or snobbishness. http://en.wikipedia.org/wiki/Hierarchy_of_needs

Hrmmm.. I think a lot of commentors on social network are often imbalanced at this level :)

Esteem needs depend on both internal and external influences. Internally, the web developer must feel confident in their skills and abilities but above confidence, they also need to actually know what their talking about and prove that to others.

To achieve this you could start a blog, write an article or make some good comments. Voice your opinion and let it be know. Even if no-one’s listening it’ll help you personally get your mind around your ideas and make you actually think about what you’re doing. You’ll become a better developer as you write your thoughts down and pull the full concept out of your head. It even helps the creative process and starts you on tangents that you may not have considered.

But without an audience, there is little chance for a big sense of achievement. This is where the earlier levels come in. The physiological, safety and social needs all come together to interact with other mixes. You may achieve the fame and confidence you need through contributions to blogs, mailing lists or other networks. Just get yourself out there and see what happens.

Self-actualization

At the peak of the pyramid, we have self-acutalization. This is where you make the most of your abilities and try to become the best developer possible. Web developers who’ve achieved self-actualization:

  • Are creative
  • Are dedicated to their craft
  • Accept the facts of the web and embrace best practices, web standards, accessibility and semantic markup
  • Strive to solve problems and better technologies
  • Appreciate the difference between browsers and are interested in solving the inconsistencies between them
  • Understand the difficulties of accessibility and attempt to correct it
  • Are not prejudicial to other technologies, frameworks or development languages and are willing to listen regardless of their personal opinions or views

Achieving this level will take a lot of knowledge, work, acceptance and understanding. I remember it was only a few short years ago that I was still styling pages that were “Best viewed in MSIE 6” with <font> elements - ga!

How far you get up the pyramid is up to you but working towards the top should ultimately be a fun and challenging experience.