Ready…Begin….Teach!!!

Recently I have been given an opportunity to teach and pass my knowledge of my craft on….this should be an exciting day….

As I used to be a teacher in public schools, I was like “I got this, no prob”. Instead I found myself in a frustrating situation.

I was tasked with teaching/mentoring a recent graduate colleague who was put in a position as “developer” because they had “experience” in college developing. The company’s mechanism for hiring people didn’t do any rigorous testing to validate these claims, it was more on how did this person’s personality fit and worry about their technical skills as on-the-job training.

The first thing you may be saying, if you were like me, would be “that is insane, why would you do that”. But I have learned that 85% of success is your ability to work with others and only 15% is technical skills. I believe this is because we know when we “like” someone and are willing to work with them, versus most people are not technical enough to know what is “right” technically. So it is much easier to teach technical skills then people skills…..relatively.

“I knew the most when I was 18” – Michael Stewart

Do you remember when you were just learning something, there is a period that you learn just enough to believe you know “soo much”, but really at this point you are ignorant to your ignorance. So often we hear others around us claiming to be “experts”, but to find out their actual experience they may have done some one-off training at some point that had some relevance to the topic, or read a blog somewhere.

“How can I fill your cup if you bring it to me full?” – Unknown

Pride and hubris is truly a sin, it will bring the greatest of us to ruin. The best way to improve and to get even better is to be ready to learn from others. This will not only help you understand things you may have not known before, but it builds a relationship with the teacher that you value what they are saying.

So, you may be thinking I ran into this issue with my new “student”…..well actually it was me who was too prideful, and I didn’t understand immediately what opprotunity laid before me to help shape and mold this person. Rather, it became frustrating that this person was hindering progress due to a severe lack of development skills. I found myself thinking “but they said they understood Javascript….but they don’t even know how to create and use a variable”.

I am a very lucky person; I have parents, a manager, and friends who helped to ground me and try looking at it from a different perspective. This was a golden opportunity to build a great working relationship with this new developer and help shape them in practices that I believe make great developers. I was also lucky that I caught myself early in this opportunity so as not to have alienated this up-and-coming developer.

The lesson for me….take every opportunity to become better, and sometimes you will be given an opportunity to become better at something you never thought you needed to learn.

Posted in Uncategorized | Leave a comment

Caring Too Much or Control Freak

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”?

  1. Come to your senses and learn to be an active listener and take in the suggestions or thoughts of others.
  2. Plan to actively work with those that are going to work in your systems, you may learn something from them
  3. Collaborate, and build a relationship (even if it is just a working one)
  4. 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.

Posted in Uncategorized | Leave a comment

The Road to Becoming a “Master” Developer – First Steps

“The master has failed more times than the beginner has tried”- Stephen McCranie

If you look up that quote from above, you will see I got it from an Anime….yes, I watch Anime, probably like most developers. But that quote struck me as awe-inspiring. I was stunned by how true this simple statement was. I find that many comics, Anime, and cartoons have gems of inspiring wisdom that are often overlooked by the masses due to their appearance. The truth about life is there is rarely (so rare, I’ve never met one) a person that is so naturally talented at whatever that they skip all stages and become a “Master”. So what does this mean, are all beginners just pretending to know about something they don’t, because there sure seems like there are a lot of “Masters” out there? The answer is, yes….but usually not because the beginner is intentionally lying. What you may encounter more often is “young” developers who don’t know what they don’t know. To become a “Master” of anything requires practice and many failures. In order for me to become a 5th Degree Black Belt in Tae-Kwon-Do I had many failures, but the reason I reached a level that most never attain was due to picking myself up and trying again, albeit in a slightly different way, but eventually overcoming the hurdles until many years later I reached this coveted level.

“I was the smartest I ever was, when I was 18.” – Michael Stewart

My dad would tell me this quote above throughout my life. It wasn’t until I was older that I really realized the truth of the underlying meaning. Basically, I thought I was exceptionally smart when I was new/young/inexperienced, because I didn’t realize what I didn’t know. This can be incredibly powerful. How many times have we seen a “young” person do something we thought wasn’t possible. They did this because they didn’t have a pre-conceived notion of limitations. However, more often then not, the beginner ends up failing, because they were not experienced to understand what the task they took on entailed.

“Learn the CORRECT lesson from failing.” – Michael Stewart

How many times have you failed trying the same thing? I imagine we have all gotten into the situation where we retry something even though we failed and that is commendable, but what did you do different? Just like the scientific method, you must identify your hypothesis, and setup variables that can be adjusted one at a time. I, like many, have found myself retrying something either without changing anything or changing multiple things. Both of those situations are recipes for disaster. You must take the approach to software as you would any hard science or engineering field. And each time you fail, you should take the appropriate lesson from that failure.

Where do I begin?

The answer to this depends on what you want to do. Did you know that a software developer is not the same across all industries? Here are just a few roles a software developer can fulfill:

  • Front-End
  • Back-End
  • Full-Stack
  • SDET
  • Microservice
  • Monolithic
  • Procedural
  • Object-Oriented
  • Functional

Could you be a combination of the above, sure. But it is best to identify what it is you want to focus your career on. Jack-of-All trades and a Master-of-None is never something anyone wants. Without mastery or plans to master a career, you will only ever produce mediocre results.

I was recently asked by a person getting into development, what should I learn?

I responded to them, learn what you enjoy, but if you don’t know what you enjoy start with looking for trending languages and making stuff with them. Learn to make a back-end microservice, then try making a front-end spa. Getting into development because it is lucrative will only make you unhappy if you are not passionate about what you do and drag down the professional of the industry because your heart isn’t in it.

“But I just don’t know what to do to get started” – Many Starting Developers

If you have ever tried to start something new, usually you feel some amount of anxiety. Anxiety is the evolutionary trait to help us avoid risk and failure. Many people give into this anxiety and let it rule their lives, and thus stopping them from becoming the best at anything.

I would say that this eventual lack of action is the basis for mediocrity. It is the reason why companies don’t try to push the envelope or why individuals accept their lot in life with pre-conceived notions. But Wayne Gretsky’s quote “You miss 100 percent of the shots you never take.” couldn’t closer to the truth. You can’t sit in a quagmire of anxiety or excuses hoping that things will change.

The solution to this anxiety….

“Just Do It” – Nike

The more you analyze and sit back trying to figure out the right place to start cutting the paper, the longer you have not done any cutting, and the further behind you are in the snowflake making contest.

“How do I measure my success” – Anonymous Developer

First, if you look at your code/design from last week and are not disgusted by it, you are not progressing. A master blacksmith is never content with the last work he produced, he always finds ways to make the blade stronger, sharper, lighter. You must be the same, judge yourself.

Tests and certifications may be how others can generically define your skills, but I find this unfortunate. I recently had to build a k8s HA cluster from scratch (literally on a basic Ubuntu server) and there was no guide or blog giving that “step-by-step” how-to that we all fall into the trap of using. This meant, I had to learn it….and learn it at all layers to make sure it worked bare-metal onsite. Well, I got it running and knew how k8s works intimately, but later as our organization hired on specific credentialed professionals and built an internal corporate k8s, these individuals had “certifications” and I found myself having to deal with them pushing those in my face, when in reality I knew just as much as they did, but without that “paper” they wouldn’t give me my professional credence until I proved myself.

….sad, but happens more often then you would like to know in all industries. The best doctors or engineers are rarely the ones that are well known. They don’t have time to peacock, but rather get stuff done and with quality.

I don’t want to sway you from not taking opportunities to get certificates and/or training, but realize those will not define you as a “Master” of your craft. Don’t let your time be consumed with certifications when you could instead be practicing and honing your skills through development.

As a true beginner on their way to becoming a “Master” you will have to prove, prove, and re-prove again to be seen as knowledgeable of your craft.

Posted in Uncategorized | Leave a comment