Browsed by
Tag: Mindset

Reconciling the Temporal Nature of Software Development

Reconciling the Temporal Nature of Software Development

Stop me if you heard this one before, you are working on a code project, and you really want to make this one perfect. You spend a ton of time brainstorming ideas to make this code “future proof”, this code is going to be elegant and perfect, and the code that will last forever.

Or here’s another one, you open up a project you worked on a long time ago, and when you look at the code it is just awful. I once saw a quote in a software comment that says, “When I wrote this, only God and I knew how it worked, now only God knows.”

Now both of these statements are extremely common among a lot of engineers I know and have worked with, and I’ve fallen into these traps myself (a lot), way more than I care to admit.

But over the past year, I’ve come to the conclusion, that these types of behaviors are fool’s errands.

I can’t tell you the number of times that I’ve seen this confirmed for, and that these type scenarios never lead to a positive outcome. And if we’re being honest, the past decade with the adoption of agile processes, in many ways addressed these same problems. Waterfall as a development methodology is built on this falsehood, so why do we continue to chase this “Holy Grail” that always turns out so poorly.

Realistically, I have found that these situations lead to either:

  • Setting unrealistic expectations and forcing additional stress on yourself to deliver.
  • Making it really easy to fall into imposter syndrome.

Now I’m not writing this and claiming to be some kind of psychology expert, all I wanted to do here is share my own thoughts and feelings on this, and honestly your mileage may vary, but this is based on my experience.

The simple fact I’ve come to realize is that Software Development is a temporal activity, like any act of creation. At the end of the day, all you are capable of doing is creating the best code that you can at the present moment. Period.

Any act of creation, whether it’s writing, art, architecture, etc, all have one thing in common, once you go through the process, they are frozen in time. Let’s face it, the Mona Lisa isn’t going to change, and any work being done on it is strictly to maintain it.

When you boil it down, at the project level, Agile focuses on this through the concept of “Definition of Done”, or a “just ship it” mentality.

But I would argue that this mindset needs to extend much further to help prevent ourselves from inflicting burnout upon ourselves. Carol Dweck talks about this in her growth mindset to a certain extent, specifically questioning the idea that talent is fixed, and pointing out that we as humans have the ability to grow in our ability to do the things we care about.

Let me give you an example, there are whole college courses that talk about the differences between Van Gough’s work over the course of his career. The simple fact is that every day we get better at our craft. So ultimately, it’s important to embrace that coding is no different.

My point in this post is this…it’s not worth putting the stress on yourself to build something that’s going to “stand the test of time.” Remember that at the end of the day, the best you can do is the intersection of these constraints:

  • Resources – The tools you have at your disposal.
  • Skill – Your ability to do the thing you are trying to do.
  • Knowledge – Your knowledge of the problem being addressed, or the environment your work will live in.
  • Time – How much time you have to create the thing.
  • Focus – The number of distractions getting in your way.
  • Desire – How much your heart is in the work.

These 6 pillars are ultimately the governing constraints that will determine the level of work your going to do.

I have been writing and re-writing this post for a while, but as we approach the end of 2021, I’m feeling reflective. My point is this, when you do your work, or build your solution you need to embrace the idea that you are not going to build the digital equivalent of the Great Wall of China, and your work is not going to stand the test of time. There will be new technologies, techniques, and even learnings you will be bringing back. So don’t put yourself through that pain, rather do the best job you can, within those 6 pillars, and move onto the next thing.

When you start to consider this, if you’re like me, you will realize that you are free to do the best you can, and not put that additional pressure on yourself.

The joke I tell people is this:

  • Past Kevin is an idiot who writes terrible code and makes bad choices. And he likes to procrastinate.
  • Future Kevin is a genius who can solve any problem in an elegant and amazing manner.
  • Present Kevin is stuck in the middle, doing the best he can, and trying to figure out how to get it done.

I wish you all the best in the coming year, and hope you have a great holidays.

Book Review – Innovator’s Mindset

Book Review – Innovator’s Mindset

So I have been trying to read more, and focus less on technical technology reading more books on a variety of topics. So one that I wanted to check out was the innovator’s mindset.

Right now my family has been going through a lot of changes, and at the forefront of that is the fact that my kids are a school age, we are moving, and I’ve been looking at my approach to tackling innovation and education as the mission of our family is to secure the future of our kids.

Because of that I was really keen to hear options for people use to help guide new innovative learning methods for not just myself but my children as well.

The book interesting mirrors the work of Angela Duckworth, and her book Grit. And Carol Dwreck’s book, Mindset. Both of which I am very familiar with, and enjoyed and have seen value in my life.

The interesting part he points to here is honestly that the education system. Is ripe for disruption. Many schools and institutions cling to the old ways of doing things and are afraid to take risks with how they teach.

The focus of the book is around how we as a society teach problem solving but not problem fighting, the idea of how you look at the world and see that something is wrong. That requires intelligence but more than that requires empathy. The ability to understand how people feel and to gain understanding into their situation and problem.

The intention is then that we should focus on using learning to drive outcomes, because knowledge that is not practical is wasted effort. There needs to be a way for the student or person to absorb that knowledge into the fiber of their being, into their structure of knowledge for application.

The idea of the innovators mindset is that we need to seek alternative viewpoints take risks and recognize that their is a cost to not changing, and know that failure and iterations are a part of that solution.

I enjoyed the focus on how to embrace the idea of taking risks and the kid of challenges you may run into, and overall found this book to be great. I think he focused a little too much of examples that involved social media. This is not a magic silver bullet for education.

But one point I do agree with is his focus on honest and public reflection. The idea of declaring you will do something is a great way of encouraging accountability, but to the authors point, it also encourages us to be more thoughtful of our ideas if we know that others will be reviewing and challenging these ideas. This can lead to a better more thoughtful effort and a crowd sourced solution to problems.

The biggest thing that really landed in our family is that right now the education system is very focused on consumption, and pushing kids to consume what is thrown at them. While this type of learning can work and has its place, there is such a thing as focusing on empowerment. The idea is to take an objective, and help our kids to have the resources to learn everything they need to obtain that objective. It’s an interesting piece of learning but it works.

So how did this help, my daughter, has been struggling with learning her letters in kindergarten, worksheets are like pulling teeth, flash cards are boring. She’s been having a rough time. While listening to this book, I noticed my daughter loves putting on plays and shows at home. So I asked her “let’s make a letter video.” Not only did she get excited but she pushed passed what was required. After practicing her letters making videos and her wanting to practice “for the video.” She took her test and went from struggling to pass 1 list of letters, to passing 2, and almost a third.

It occurs to me this goes beyond kids, in my own profession. Anyone can learn a technology but it becomes a lot easier when you focus on solving a specific problem and direct your learning as such.

There is no better place to learn than the foxhole. Ultimately it leads to much better drivers to success at the end of the day.

The interesting part also was the second half of the book which talked about how to as a leader foster a culture of innovation within your organization.  And the key points I would acknowledge here are that the giving peole the freedom to fail, and fail fast.  And encouraging your people to take risks.  This is something that I’ve been working on in my family and with my kids, and celebrating the fact that they “tried something new”.

Overall I recommend the book, it gave some good ideas with regard to approaching innovation that I found enlightening, provided you can get past the “education system” focus.