Do I care too much?
I find myself running into this problem myself right now.
I currently hold roughly 10 years of professional development experience across a couple companies (private and government). My group consists of a handful of people, and many are expected to where several hats (besides developing). In fact, I believe I could get away with saying that I am the only person on the team who has done professional development. Many of the tasks on the team consist mainly of “IT” (think IT Crowd) work, where we answer the phones for customers that we help troubleshoot their issues with mostly outside bought software. Imagine a financial office that uses Quicken, and you are on a team that the company has hired to help the staff when it “doesn’t work” among other software products. Of these other individuals, none have worked in the private industry and the code experience generally lives in the SQL realm.
So as you may imagine, it is very difficult for me to let others in this group “help” develop with software that they have no experience in developing for those languages. C#, Javascript, and the likes are vastly different then your run-of-the-mill SQL. You are now expected to know about complex structures that make these languages so robust and powerful. Even basic concepts, like a Class and a Object, can be daunting to someone unfamiliar with working in these languages.
So why do I have such a problem with the “MINE!!!”-syndrome?
I’m sure if you are reading this, you a person who seeks out information, you are the 1-percenters that take your profession seriously to explore and improve. And like me, you may look around at your peers and feel that they will not take the same level of care you do to adhere to good practices or follow the patterns or architecture that you so meticulously created to make that app follow S.O.L.I.D.
Unfortunately, I may have to admit that I am arrogant to think my creations are so great that I can’t trust others to properly take care of them. This is definitely a fault in my personality. It is difficult. I actually feel like I am an accomplished painter handing over a mostly done work of art to a 5-year old to finish it up.
But does being concerned about my work’s integrity make me bad?
It doesn’t make me bad….unless you allow it to define who you are and how you interact with your peers.
I struggle….oohhh do I struggle to avoid knee-jerk reactions, and yet sometimes they still leak out. When I see someone just slapping an inline CSS in HTML either because they are lazy or don’t understand what good structured HTML code looks lie, it drives me nuts. Or when I see someone have a single function without any structures like classes or modules when working with Javascript, it kills me a bit inside.
Why does it hurt so much?
When I see code that is, what I would call, “slapped” together like a duck-tape prom dress, it hurts me to know that at the end of the day I will get “Well it Works!!!”.
The end consumer doesn’t, immediately, care about the quality of the design behind the software. It isn’t until later that the technical debt oozes out all over the place and the app is a giant mess. And then what happens, “Well I guess we just got to rerwite it”. We are truly a consumer culture, we are ok with poorly maintaining our software through hard work and good practices for the easy path. Because at the end of the day, no-one else knows how wrong we made it, we still collect our paycheck for delivering the item….and guess what it was on-time or even early.
I hope if you read the above you cringed to your bones, and I bet you cringed mainly because you see this happen. I know I have.
How do I avoid being “That Guy/Gal”?
- Come to your senses and learn to be an active listener and take in the suggestions or thoughts of others.
- Plan to actively work with those that are going to work in your systems, you may learn something from them
- Collaborate, and build a relationship (even if it is just a working one)
- Make it safe to talk with each other, and never go behind the back of the other
What is the intent of my software?
You should consider what you want from the creations you create.
- Do you want them to last forever, but never change?
- How about never getting seen or used by anyone?
- Do you want to be the sole maintainer of the work for the rest of your life (or the life of the software)?
If you answer no to any of the above, then you need to LET IT GO.