Code Renaissance is about building great teams and great software. By exploring best practices, team interactions, design, testing and related skills Code Renaissance strives to help you create the team and codebase that you've always wanted.

I've been putting a lot of thought lately into what it means to become a Renaissance Developer, a person who is a master of multiple domains of knowledge relating to software development.

Some today equate Renaissance Developers with T-Shaped people or Generalizing Specialists and in doing so, I think, cheapen the term. Not that the individuals that they refer to do not deserve a ton of respect. They are experienced people with a great deal of skills, talent and cross domain knowledge that are well on their way to becoming Renaissance Developers. This is no small feat; but I would rather that we be careful not use the term Renaissance Developer too lightly. It's like calling med students doctor; you don't do it... they must first earn the title.

It takes many years to master one craft (some say up to 10,000 hours spent striving at continual improvement). The idea of choosing and mastering several of the many related domains of study that influence software development is daunting. Just to list a few of the applicable fields:

Business

Software Testing

Configuration Management

Graphic/Visual Design

Coding (multiple language/platforms)

System Architecture

Security/Hacking(know thy enemy)

Marketing

Typography

Public Speaking / Writing (effective communications)

Interaction Design

User Experience

Database Administration and Optimization

Information Architecture

If someone chose any 5 of those of those and then spent many years mastering each of them then I'd say that would qualify them as a Renaissance Developer.

But if the title is so hard to earn and applies to so few, and if we cannot associate ourselves with it, then why even bother discussing Renaissance Developers at all?

I'd say that you make it worthwhile by not cheapening it. Otherwise you'll have any web developer with a bit of graphic and business knowledge lauding themselves as a Renaissance Developer. Just another piece of personal marketing fluff.

I think what we really need is to set the goal clearly and help as many people to get on the path as possible. The more who get started, the more who will reach the end.

In light of this I propose creating a Renaissance Developers Creed.

Why a creed? Why not a manifesto? (After all manifestos are cool, right?)

Well manifestos tend to be statements of belief by those who have arrived. Creeds, on the other hand, are commitments to a set of beliefs by those who have yet to arrive but have chosen to set out on the journey.

The Renaissance Developer's Creed

We believe that there's more to great software than just the code.

We believe in continual learning. We believe there are many domains of knowledge that can aid us in creating better software and that we should strive for some level of expertise in as many of those domains as possible.

We believe in exploring new languages and new systems, in applying the concepts that they introduce to our work and in learning from both their achievements and their shortcomings.

We believe that real world experience is to be preferred over book knowledge and that opportunities to apply what we have learned should be diligently pursued.

We believe in being a part of the developer community and sharing what we've learned with others. We believe that one indication of mastery of a subject is the ability to teach it effectively and that our knowledge is increased and perfected through the feedback that we receive from others.

I must admit that I do not follow these tenets perfectly and that there are some of them I'm just now starting to explore. But I think that that's the point. I think that if we commit ourselves to these principles that we will be much better programmers one, five.. ten years from now than we are today.

I think that is what makes the struggle worth it, whether or not we are ever awarded the lofty title of Renaissance Developer.