I am in a bit of a braindump mode right now and can’t sleep really well. So I thought I would get down the thoughts in my head in blog fashion.
Had a lot of conversations this past week (amazing) with lots of excellent developers. A lot of developers who are new to concepts like TDD and Domain Driven Design.
A topic that kept coming up (mostly from me) was the unnecessary importance a lot of developers place on their intellectual property!! I have had many a disturbing conversation with consultants, MVPs etc who use phrases similar to this:
- ‘I make sure I dumb it down for the client’
- ‘I can’t show them all my secrets’
Once again, this is my personal opinion. Gifts are given to be shared and used by many. When I am in classes or in with a client I want to make sure that I am giving them the benefit of all of my current level of understanding. Whatever techniques I currently have, I want to be able to share with them so that they can improve themselves in the process. So many developers are focused on keeping ‘their edge’ by putting up facades that ensure that the people they are working with will not be able to fully realize the benefits that they can bring to the table. Why do I do this? Because if I am still doing things the same way I showed you to do them 6 months ago (even 2 months ago) I have not grown in my craft.
Here is the great thing about top tier developers:
- They don’t care about dropping all of their secrets, techniques and practices in front of you because these things are all a result of one thing
The great software developers that I know don’t fret unnecessarily about putting their stuff out there for the world to see. They don’t care whether you steal the code/ideas and pass them off as your own (you are only hurting yourself in that scenario). The reason they don’t care? ‘You can’t steal their creativity’! In 6 months the things that you thing they know will have changed and the code that you ‘ripped off’ is now stagnant and old because you did not truly understand the concepts. They are already innovating new solutions and disseminating this new information out to teams who can benefit.
An analogy that I like to use is one that occurred in my own life. When I was about 6 I started being able to copy any picture that was put in front of me. I could draw it identically. It did not matter what the picture was, an long as I was looking at it I could draw and exact copy (usually it ended up being bigger than the original). One of the problems with this is that when there was nothin in front of me to copy from I found that my drawings looked very different (in quality) when I was creating new pictures as opposed to copying ones that were already there.
Unfortunately, this is the story for too many software developers. They get really good and ‘copying the picture’ as opposed to creating new masterpieces. One of the things I tell people I work with and the students who take my class is this:
‘If you like the way this application is written and you now use it as the blueprint for how you build applications for the next 5 years, you have not learned anthing’
As a person who is absolutely in love with the craft of software development, I truly feel sorry for the developers (yes there are MVP’s who fall into this category also) who have become really good at copying the picture. They are missing out on ,what I feel, is the greatest part of software development. Constantly striving to innovate and challenge your own assumptions about the way you currently write software. Playing around with new techniques. Not just churning out the same code app after app because it works.
People can choose to copy the picture of another developer, but trust me, their artistic skills will be in a constant state of evolution where you will always be one step behind.
Develop with Passion.