A Leaf on the Wind

Standard

I’ve been coaching other teams for over a year now (I spent 15 years coaching my own teams), but I still have a small software development shop bubbling behind me building products, where I have an apprentice and, occasionally, interns.

I can continue to manage the culture there, refine what I established with our larger consultancy in years past. Compare and contrast it to what I see in my coaching engagements. Also, unlike my coaching engagements, I can blog about it!

Last week I prefixed our Monday stand up with a talk about entropy, the essence of which I will present here. It gets a little philosophical, so grab yourself a cuppa.

Chaos Creeps

The world creeps towards chaos and entropy. The wind blows the leaves from the trees and scatters them in a mess. Our kitchen at home accumulates garbage, dirty dishes, recycling. Our pets find a piece of cardboard and shred it on the living room floor.

It happens in our code too when we are not careful.

Think about our life as a software developer. People come to us with scattered, unformed ideas in which we seek patterns and order. The technologies we use sometimes elude our understanding (happened to us this week with some sharp corners in cross-browser CSS3 flexbox) so we wander blindly looking to understand. Writing tentative code to build that understanding.

So here we are, a codebase full of exploration, of what was asked for, of what the market might need, of what we might understand. Pulling us in too many directions. Then add a couple people to the mix and we start dealing with multiple interpretations of those directions, multiple problem solving approaches, multiple mental models of roughly the same concepts, half in someone’s brain and half in the code repository.

It’s a wonder anything works, right?

The Professional On The Job

So here is the thing. As the professional on the job each of us is expected to spend each and every keystroke we make towards taming that chaos.

This involves talking to each other, while pairing and while exploring ideas with stakeholders. Using a source control system to isolate ideas and experiments. Writing tests first so that we have at least two perspectives on every line of code we write.

Sound familiar? It should. These are core activities in a modern, healthy, software development practice.

It is not your job to crank out code, it is your job to crank out the “correct” code in as small a quantity as possible. The “correct” code is the code that solves the actual problem.

Look at how much code you wrote this week. How much did you throw out? How much is covered by automated tests?

Throw out a lot of code. Writing it helped you understand the problem you are solving, the underlying technologies, the bugs in your communication. Don’t get attached to that code. The value is not in the code. Then, while the learning is fresh in your mind, you will write a better implementation, solving something closer to the actual problem. Code worthy of your talent, worthy of the code base, worthy in the world. Commit that to your repo. Delete the rest, and revel in what you learned from it.

WTFs

You do use source-control, right?

Frequently I come across freelancers who don’t use source control. It amazes me. I just can’t imagine picking apart the chaos without seeing how it evolved, lifting apart the threads, zooming in on the nugget we half missed, pulling it forward to polish it off and commit it. Maybe they think their work is mundane enough to have an immunity to chaos (note above my CSS3 flexbox surprises). Maybe they never have to maintain the code they write because it became “done”, “shipped”, abandoned.

Surprise!

The chaos doesn’t always present itself right away, described in my “Chaos in the Matryoshka” post from years ago. Sometimes you find you were walking straight into it all along. Today I reverted 4 merges along our main branch in our current product, erasing 2 days worth of our work. It had to be done. The code was worthless. Sunk cost. What we deleted would have cost us weeks to maintain. What we learned will save us weeks knowing the bad path.

Incomplete thoughts

Especially early in projects, your code accumulates a number of half finished patterns, things on their way towards an idea you had. Then you have a better idea and more things are on their way to the new idea. You weren’t sure it was going to work out, so you held back so you could get some screens in front of stakeholders for timely discussion. On about the 3rd or 4th pattern things click and you apply it back to the other areas, and realize you can improve it, now you’re juggling 7 or 8 things that almost fit the ideal in your head, codified differently in the codebase. Then toss another person or two in that mix. Chaos, eh?

This can be one of the most insidious things to tame on a team. Alignment with each other takes time. When working remotely it takes longer. Pair programming is your single best tactic for dealing with this, and you can juggle the pairs so that the ideas spread as the pairs talk to each other. Pair and bring the threads together, between yourselves and in the code.

Every. Single. Keystroke.

The chaos naturally creeps in, you can’t stop it. You’re writing code to solve a shifting problem, in a shifting team, in a language that’s a work-in-progress, using frameworks that are a work-in-progress, in an editor that’s a work-in-progress, on an operating system that’s a work-in-progress, on a computer that you’re likely to replace in a couple years.

You are a leaf on the wind.

Every keystroke you make must tame the chaos.

The alternative is ultimately to be buried in your technical debt, all those little untied threads, those “I will fix this later”s, those “I don’t have time right now”s.

Advertisements

What is a Hacker?

Standard

This weekend I attended a “hackathon” and was surrounded by folks who didn’t really understand the word hacker. They struggled to get through the pejorative meaning to which it has so popularly become attached. I’ve long been a fan of IETF RFC 1392, in which the fine folks at the Internet Engineering Task Force (those hackers largely responsible for the early formation of the Internet and its mechanics) attempted to formalize a definition of the word.

As an old, grey-haired, life-long hacker, let me lend my perspective to it here.

A hacker is someone who delights in the construction, deconstruction, or reconstruction of things in the world around us. Those things might be abstract (software, philosophy, business, ideas), they might be technological (electronics, materials), they really could be anything. The activity that is hacking is the sometimes careful, often clumsy, always playful journey.

You see, hacking gets its name from this clumsy playfulness.

We find delight when we discover something new. This may be a new way to put two things together that we’ve partially or wholly disassembled. It may be something we tripped over trying to create something else.

We find frustration when we don’t fully understand what something is. We turn it around, try increasingly silly things to align our mental model of it with the observations we make. If we solve the puzzle, find the right mental model, discover truth, the frustration is shoved aside by elation and pure joy. If we don’t, we try differently, we talk to others, and we learn from it..

The pejorative meaning has stemmed from when people hack for nefarious outcomes. When they take the results of their hacking and do harm. It is this activity, after hacking has been done, that may be harmful or illegal. Though these days some companies would make the act of hacking itself illegal to protect their secrets.

There is much to be discussed about a society that seeks to transfer the pursuit of knowledge from a personal activity for the benefit of human beings, to a profit-seeking activity for the benefit of a business. This may sound like an odd statement from an entrepreneur, but this is a long and tedious topic best approached with healthy amounts of liquor and when your optimism reserves are running high.

 

 

AI Programmers Will Take Our Jobs!

Standard

So, this hit my newswires today:

https://www.newscientist.com/article/mg23331144-500-ai-learns-to-write-its-own-code-by-stealing-from-other-programs/

Let the panic begin! Programmer jobs are dead! Cheap programmer labour! All our software dreams are about to come true, for free, and as fast as the supercomputer can deliver them!

Mmmmhmm.

On the surface, this seems pretty reasonable. These days, many programmers will start by googling their problem and then reading what they see on sites like Stack Overflow. Programmers of all levels of experience.

So what are they thinking when they search?

Sometimes I think, “How do I solve this?” I see “answers” presented, pick the one at the top, and effectively copy it.

Sometimes I think, “How have others solved this?” I see “options” presented, check how recently it was discussed, and how well it aligns with my goals, and if it’s a fit, effectively copy it.

Sometimes I think, “How have others solved this?” I see “options” presented, check how recently they were discussed, wonder how the differences in the answers came about. I look at different ways the question has been asked, and wonder how the differences in those questions came about. I journey through the humanity of how these things came about. I laugh, I cry, and then finally settle on how I will approach the problem.

You see, the more experience you gain in this field, the more you understand that software development is for the time being a very human endeavour. It requires things like empathy, delight, things we’ve traditionally characterized as human.

Now, don’t get me wrong, I have a lot of experience but when I’m googling how to get some arcane portion of iOS to do something I’ve never done before, I’m very much a beginner, and I end up doing things that are very trusting of the folks who contribute to Stack Overflow. This is a normal thing, as a beginner I have little ability to reason about that particular corner of the technology landscape. Everybody’s a beginner about most things (for large values of most).

What makes people good software developers is more their ability to learn new and different things, because this field is nothing but chaotic change. Accelerating.

So back to AI.  How many years will it be before a computer has the pattern matching capacity of the human brain? How many years before we draw that distinction between having empathy and simulating empathy?

That’s how long we have before I fear the obliteration of the software development profession. Heck, it’s still in its larval stage, we haven’t even seen it’s most interesting advancements yet.

And by then, we may well have found that our extraterrestrial search for new life is less interesting than life that evolved in a different way here on earth.

The Long Road

Standard

More than occasionally, I get asked, “How can I learn programming as a beginner?” I have many thoughts on this, and here is just one of them…

The Long Road

When I think about my own path, I’ve been learning programming for a very long time. Experience has shown me that I’ll be learning programming today, tomorrow, and again next week.

So ask yourself why you want to learn to program. Because you may be doing it for the rest of your career, and you will think many times throughout, “why did I choose this?!”

Today’s electronic devices are mostly programmed by people who started with the same thought as you are having, and they have taken a wide array of paths. Take comfort in that. In knowing that there is no “one true path.”

Learn something, every day. Write code. Throw it out. Rinse, lather, repeat. Find joy in that cycle. Toss your proudest moments up on Github to show others, and to remember for yourself. Also remember that next week, they may not seem so brilliant, but they are important. They are you in your past, being the best you that you knew how to be in that moment. Be kind to past you. Learn from past you.

You don’t need to take a course, you don’t need to obtain a certificate or degree, or jump from bootcamp to bootcamp, though those are options that might focus you. You can do this in your evenings and on weekends while you eek out a living elsewise. Decide for yourself why you are choosing this, so that you can answer future you’s inevitable question.

George Leonard in The Way of Aikido wrote about the Obsessive, the person so eager to learn that it actually got in the way of their journey. “How long will it take me to master aikido?” To which Leonard says there is only one answer, “How long do you expect to live?”

If you can stay it out, if you find that you enjoy it more than simply being able to do it, know that the world needs you.

In Memory of Nancy Diamond

Standard

When I was growing up, I didn’t have a lot of friends. I had a small circle of friends in high school, and through this small circle of friends we began to congregate at one house, where there was space for us and we were always welcomed. When I first met Nancy, I thought she was “the cool mom”, though she’d been just as happy with keeping us away from the kinds of trouble teenagers tend to find I think. That was so long ago, most of my memories are just feelings now.

I knew that Nancy was involved in politics, a professional woman with a degree and leadership skills. She was my earliest exposure to what I believe are the best qualities of feminism. This was so different than my family – my mom was a home maker, I never witnessed her in a leadership role other than being the matriarch of our family. That’s OK, but I knew in my heart that wouldn’t be my path. Nancy was a capable woman, navigating a man’s world, the world I was resigned to (at the time) living within. I didn’t know it then, but that boy’s view of the world given to me by society was gonna get shattered in my years to come.

I am a transgender woman. As I transitioned 6-8 years ago, I didn’t immediately realize how much Nancy had inspired my self-image.

After my business’ 10 year anniversary open-house in 2012, which followed my social transition in 2011, I finally felt comfortable telling Nancy how I’d considered her a role model since I was a teenager. Her response was plain and perfectly punctuated: “I was not thinking of myself as a role model; however, I shall just blush appropriately and say thank you.”

I had grown up falling into the patriarchy, seeing that men were leaders, believing at some level, despite reading and observing otherwise, that I could lead and conduct my professional self only as a man. I’d seen a tiny bit of how Nancy challenged that, but didn’t really understand the depth of it.

As I transitioned, it was Nancy’s immediate acceptance and inclusion that gave me the perspective and examples that shape who I am today.

She invited me to join the board of the Business Advisory Centre Durham (BACD), an organization rebuilding itself after some challenges. A place where I could see her at work. She was a regional and a municipal councillor, and I watched how she conducted herself in meetings, in rooms full of men. She knew the rules, held her ground, leaned into the work, and was the first person out the door to grab a glass of water for a presenter when they looked parched. This embodiment of a person driven by compassion for others, drives my understanding of what it is to be a servant leader. She was strong and compassionate and oh so sharp.

She reminded me often that I needed a healthy business as a foundation from which to help others. As I’d say today, you can’t pour from an empty cup. She’d look at me with that look when I described my latest venture, talking about apprenticeship, or our code retreats. A look that said “and how will you make money?”

She also reminded me how to go to a meeting. Read the materials ahead of time. Think of questions, look for problems or errors. Throw some rocks at it and see if it holds water. Then go prepared. Rarely a board meeting went by where she didn’t find an error in the previous minutes, or a by-laws question.

Nancy was an ally to the LGBTQ community, she went to every flag raising we did in Oshawa against homophobia and transphobia, transgender visibility month, she attended PFLAG galas and donated money to help us in our outreach to help the community. I could tell the groundwork she’d laid, people knew me or of me, knew what things were about. She’d give tips on navigating tricky processes, and she was nearly always there to hug when I arrived. Nancy went out of her way to be an ally for the community, and for me.

Nancy and I were about the same height and had the same shoe size, and thus the same challenges finding clothing in a world that caters to “regular size women” (whatever that means). When I saw myself as too tall, feet too big, feeling bad about my body, un-womanly, Nancy reminded me. Women come in all shapes and sizes, even mine, and every shape holds dignity.

She departed true to her nature. Insisting she was fine, continuing her work, until she wasn’t. Then, in a heartbeat, she was gone.

Nancy reminds me that every day on this earth is an opportunity to do good, or do nothing. To improve, or be complacent. To serve others, or to spectate.

I endeavour to do her spirit justice before it is my turn to leave.

2016 Big Steps Forward

Standard

Lots of folks have been complaining lately about 2016.

Certainly, as one friend of mine pointed out, as movies and celebrities have become more prominent in our lives, and my impressionable teen years were in the 80’s, I’ve seen a lot of my childhood heroes fall away this year. This trend I’m sure will continue as I age.

But personally, since I significantly shifted my business focus nearly two years ago, 2016 has been one of the most fulfilling to-date.

Professionally, I have found my path forward into more of a consulting role with clients. This has been immensely fulfilling. I didn’t realize how much I’d picked up through my years of struggle in my own consultancy. Problems that I stopped seeing entirely because I just reflexively dealt with them. It is still hard to see them, but now I’m developing a reportoire of feedback from others who seem better qualified to put how I help into words.

Perhaps it’s my perspective from my work in the trans community, but I see oppressions and micro-aggressions in many places, they are rampant in my industry. Perhaps they are in every industry, perhaps this is simply universal. My view has widened from myself, to other trans people, to people who have chosen careers in software development, to the companies that employ them. Helping folks break down the barriers they put in front of themselves, helping them see past the small shadow they see cast beneath them to the fullness of their capability and humanity. Freeing them to courageously explore new ideas and technologies, develop their craft, this is uniquely rewarding for me.

Personally, we’ve been nesting in our home up north, improving the property and house. The uniqueness and draw of this life drives me to leap towards it. As I describe to new acquaintances and clients, “I live in a log cabin in the middle of the woods.” This is who I am, who I want to be, how I want to live life. Work is fine, but is just a means to this end. This perspective has been freeing. Invigorating.

The Trump presidency may narrow my professional opportunties, if he follows through with his promise and dismantles NAFTA (management consulting is the NAFTA window that allows me to work with companies in the US). Perhaps Canadian companies have started to catch on to this new trend of bringing software skills in-house and growing local teams. I feel like my new perspective will help me locate and close opportunities here, at the very least it has given me the confidence to pursue them.

This holiday season has been one of the most fulfilling over the past 5 years as well. Having our daughters close, minimal family friction, a further glimpse of how our family will grow in the coming years, and having my spouse’s parents much closer than ever has made for a fun family filled season. Maybe this rare 10 days (in a row!) at home has inflated my fondness for being here, but it just feels good.

This year marked 5 years into my social gender transition, the time at which I began exclusively presenting to the world in my felt gender. That was an important anniversary. The initial shock of transition has given way to slow growth and self-acceptance. Undoing half a lifetime of dysphoria and male socialization is painstaking. As sure as I was, I didn’t realize then how tentative and hesitant my initial steps were in this direction. With each step over the past 5 years the feeling that I’d done the right thing has solidified. Now it’s just odd habits and mannerisms and allowing myself to accept the woman I am, in all my geekiness, weird body shape, too-deep voice, and oddly acquired mannerisms.

I feel less fragile now than I ever have. For a few years my professional confidence carried me through the turmoil, but now I feel like my personal confidence is starting to be able to take on some of that burden. I’m not sure it will yet withstand judgement from the family I grew up with, that feels like a race against time, but I’m certainly not up for a race. I won’t suffer people in my life who refuse to accept me for who I am, so I am left wondering if we will ever speak again, and wondering if I’ll ever have the strength to find out before they’re gone. If that’s to be, then so be it. Maybe it will be more comforting for them to live with the memory of who I tried to be rather than who I actually am. That is their choice to make, not mine, and I think I’ve finally stopped feeling responsible for it.

Who knows what the next 5 years holds for me, as I get back on my feet financially, as our children continue to mature, as we try and build a life more on purpose than by how the wind blows us. It feels good.

Life could still capsize us in this little dinghy we’ve built, but it’s nice to float for a while.

The Fable

Standard

There was once a family of beavers who lived in the forest in a quiet valley. They had found a stream and made their home there, a lovely lodge in the small pond that had formed. Food was plentiful, there was work to be done, and they were happy.

Occasionally the beavers would travel to the city to see their raccoon friends, who had their own lovely home and had begun raising their family.

One day, there came a fierce storm, and a pair of old trees in the forest were weakened by the winds. One quiet night, the first tree gave out, fell into the other, and then they both fell onto the beavers’ family lodge, and in a flurry of sticks and mud, it was crushed under the water.

The home was sturdy, and beavers do just fine in the water, so the family, a bit rattled, made it to shore and thought about what to do. They consulted their raccoon friends in the nearby city.

“We didn’t hear any trees fall. Are you sure that happened?” asked the raccoon family. The beaver family stood, dumbfounded.

“Why don’t you just come and live in the city?” asked the raccoon family. The beaver family tried to explain that beavers live in lovely lodges, made of sticks and mud, in the peaceful ponds formed by their dams. Besides, what would they do all day?

“Well, there’s plenty of work here! There are so many garbage cans to tip and explore!” The raccoons really enjoyed living in the city, and their enthusiasm showed!

The beaver family tried to explain that there were few trees, and no creeks or streams that would be suitable for a dam. Besides, the raccoons in the city tended to hire mostly other raccoons, for whatever reasons. And while the beavers thought they could pretend to be raccoons for a while, if they were found out, they’d be fired for the deception. And really, they were beavers. Unmatched in their skill of felling trees and building dams. They loved the forest. It was a perfect home for them.

When the beavers left, the raccoons were distraught. They talked about the situation with the other city raccoons. Together they decided that they were responsible for providing work for the beavers, who they felt would really enjoy foraging through the garbage cans. Who wouldn’t?! There were such treats to be found!

They wanted to protect the beavers, and felt those mud and stick homes weren’t nearly as nice as their solid brick city structures, which would make much better homes for the beavers. They also talked about the forest, it was so dangerous with all those trees!

So the raccoons banded together and decided to burn the forest.

And when the forest was burned, the dams were destroyed.

And when the dams were destroyed, the city was flooded.

As the creatures fled the valley, the raccoon family and beaver family found each other along the long road of refugees.

The raccoon family was optimistic, “Just wait until we get to the city over the hill! It’s a lovely place! I hear they have lovely puzzle garbage bins – great for keeping the mind sharp, and filled with the yummiest food imaginable!”

The beaver family sighed, and hoped for a cool stream and lots of trees.

Listen to your neighbours, your friends, your family. Believe them when they tell you what makes them happy. What makes them feel true to themselves. What is hard for them.

There are people who are different from you making beautiful lives in this world. Lives to which they are entitled by their humanity. Lives that look different than yours.

Let’s learn to love each other for who we are, instead of despite.

My little writing exercise above was a simple way for me to turn this over in my mind on a quiet Saturday morning. As a software developer, I fully realize it’s a “leaky abstraction” but it was fun to write, and I hope that you found it at least a little fun to read. And I do miss my home in the forest where I hope to be again soon with my family, which probably looks different than yours.

—-

I realized this is probably more a Fable than a Parable, so I changed the title.