Categories
Monocategorized

My book stack (of shame)

I sometimes visit the Amazon Affiliate Reports page when I need a chuckle, and I was surprised to see a non zero dollar amount there. I am shocked and humbled in equal measure. Thank you for sending me some of Jeff Bezos’s nickels.

I am going to ramp it up this week by Actually Promoting Things I Have Purchased That You Might Want To Purchase Too! Disclaimer: This list is all linked to my Amazon Affiliate Code because I am drunk with the dizzying power of all those free nickels.

Without further ado, I hereby present:

The top eleven books that I have purchased and have not yet had time to read!

(number five will totally shock you)

Solomon Gursky Was Here by Mordecai Richler – This book was recommended to me by a leader I work with because it is a great book… and I am painfully Canadian.

Algorithms to Live By by Brian Christian and Tom Griffiths – This book was recommended to me during a meeting when we were discussing how to manage people and discussing mentoring. I am certain that more than one person has recommended this book to me now that I think about it some more.

Aging Backwards by Miranda Esmonde-White – I do not remember who recommended this book. 

Disunited Nations by Peter Zeihan – This book was recommended by a friend on Facebook.  

Slaying the Dragon by Ben Riggs – I purchased this book because Ben Riggs shared some fascinating sales statistics on old TSR™ products and I wish to reward this kind of awesome transparency with nickels and eyeballs.  

Elements of Game Design by Robert Zubek – Robert Zubek is a Zynga alumnus and is someone I know. If you wrote one or more books and you are my friend, I will buy at least one of your books and creep on you for a signature eventually. 

The Power of Kindness by Piero Ferrucci – This book was recommended to me by someone I met on LunchClub.ai   

The Story Factor by Annette Simmons – This book was recommended by a product marketing leader that I cannot afford to hire to help me with my https://derfdice.com product.

Semantic Software Design by Eben Hewitt – This book was recommended to me by a mentee that worked with me at Zynga.  

Mulligan Stew written by Gilbert Sorrentino – This book was recommended to me by someone I work with—the same person who recommended the Solomon Gursky book above. 

An Elegant Puzzle – Systems of Engineering Management written by Will Larson – This book was recommended to me by someone I am mentoring.  

I am woefully behind on my reading this year, and I need to get caught up. It might be hard to spot, but there is a common thread to almost all of these recommendations—they all came from conversations with really smart people. I hope that one of you feels inspired to buy and read one of these books, and not just because I am squeezing nickels out of you in the process, but that you learn something interesting and exciting.

If you do not wish to read and/or learn, then I will present you with an alternative. Please enjoy this extremely expensive children’s indoor playset where you can roll around safely and mirthfully for hours without learning anything interesting. See you next week! 

Categories
Monocategorized

Multi-Level-Management

I am presently mentoring people at three different career levels: Lead/Manager, Director, and Vice President. There are new skills and habits that you need to learn in order to be effective at each of them. As you progress professionally it is important to be able to teach these skills, and to teach people to teach these skills. That is subtle but important.

In addition to teaching your direct reports, it is also important to provide the right amount of teaching and mentoring to your indirect reports too. This is tricky because you want to give enough space for your managers and directors to be effective as well as making an impact on multiple levels of the organization.

It is a good idea to get to know as many of your indirect reports as you can. There is this notion of the Dunbar Number that is worth knowing here—the suggested cognitive limit to the number of people with whom one can maintain stable social relationships. If you have a high Dunbar Number, it certainly helps you to maintain the right amount of contact with everyone in your organization. The real question is: How many of them should you be mentoring and advising in addition to your own direct reports?

The correct answer is not zero and it is not one hundred percent. If you are mentoring and advising one hundred percent of your organization, you have too much time on your hands or your organization is too small.

Over the years I have concluded that there are three groups of indirect employees you should be investing time in understanding: Your top performers, your struggling performers, and the named successors for your direct reports.

Having a named successor is important. I try to identify the most likely person on every team I run to replace me if I get struck by space debris. I also encourage managers to identify their successor too. Investing time in training and mentoring your organizer’s named successors is a great tool for helping to grow your team and to retain them. I highly recommend it. Whether or not you explicitly tell the named successor that they are a named successor is entirely up to the manager in question. Some people take it well and use it as a learning tool, while other people might wield it as a cudgel on the rest of the team. If you see the latter activity happening, you definitely know that you have some work ahead of you to address that issue. I like to make sure I am spending enough time with named successors for the organization to help give them visibility into problems they will encounter at the next level, and to build a communication channel for them to ask questions and give feedback.

Investing time in mentoring your top performers is also very important. This is an excellent retention tool for your team’s best people, and it is one of those intangible benefits that they will need to balance against “shiny new title” or “three new flavors of sparkling water!” with a BATNA (BATNA is an acronym for “Google it”) at NewCo. I have also found that building relationships with star performers at one company has led to some great lifelong friendships, and I have been blessed to work with them again at other companies!

Finally, it is important to develop relationships with your struggling performers. Managing the bottom of your team and trying to lift them up is hard. It is also very important. Sometimes their direct managers might not have the experience or vision to figure out how to unlock their potential. By investing time in understanding the team members who need the most help to be successful, you might find that they have team fit or skillset issues that prevent them from doing their best work. It is worth investigating how you can help these folks serve the organization better, and as the manager-of-managers you might have more ability to move them elsewhere to see if you can find a more suitable role.

In summary I heartily recommend finding the right level of interaction for you and your indirect reports. For your organization’s best performers and future leaders, having your indirect managers investing time is a great way to accelerate their success and make sure they are really engaged with their work and current team.

Thank you again for reading! I still do not have a sponsorship from Raid Shadow Legends, nor an endorsement from 5 Hour Energy Drink. I will keep trying to get those endorsements. At a bare minimum, if you have derived no value from this article, or any of the deranged scribblings on this site, allow me to encourage you to purchase this Amazon Affiliate Linked Book to help you understand your part in all of this.

Categories
Monocategorized

Ladders within ladders

There are terms for pluralities of various things: A gaggle of geese, murder of crows, et cetera. I am trying to figure out the right term for one of these myself. I narrowed it down to two so far, and I could use your help in deciding. Is it “an excessance of Twitter engineering leadership opinions” or a “bullshittery of Twitter engineering leadership opinions”? I cannot decide. You might see where we are going today.

There are so many people giving their popular prognostications on the notion of engineering ladders that it makes my head hurt. I will not link them—they have thousands upon thousands of followers already. Everyone has their own flavor of whether or not you should consider jumping from the IC track to the Management track, and almost all of them are completely wrong. I am here to give you my own flavor of wrongness on the subject.

I think it is important for every engineer’s long term growth to contemplate a role in engineering management and for some subset of those people it is important to attempt it. There is no one-hundred-percent-all-of-the-time rule for each person, or even for each company, as to when this makes sense and when it doesn’t. The sheer number of people who are online making an argument that sticking to the IC track or jumping to the Management track seem to ignore one fundamental thing: The individual themselves. I have met engineers who are very far away from leading or managing, and I have met engineers who need to be fast-tracked into one of those roles due to exceptional ability.

For the individuals who are very far away from the ability or desire to manage, I think it is worthwhile conversation to have. You may not have the interest in managing people or the ability to manage people. I think that a lot of people fixate on the latter. If you are great at writing code, there is a blanket generalization that you must not be great at managing people. I have met people who possess both skill sets, and they are incredible assets to your team. The big question is: If you are a great coder, how do you become a great people manager?

This is the biggest part of the problem. When you give an engineer a battlefield promotion into a management role, they often get very uncomfortable because the skills they used yesterday to be successful are very different from the skills they now need today.

I have helped people through this transition in the past, and it starts out with about six weeks of pep-talks and ad hoc meetings where we describe the challenges of the new role they will experience and what they need to learn. I have turned this into a formal list a few times for a few different employers. You will find various snippets of that buried in various portions of this very blog.

If you are going to transition someone from an IC role into a manager role with the goal of getting leverage, it is important to make sure they have proper support and training to be effective in that role. This is one of the largest reasons that many people do not make the transition successfully.

When I have transitioned people into a management role for the first time, I generally give them three to six months to decide whether or not they want to keep the role. This is very important. It gives people some amount of comfort to know they have a way back to a comfortable place if things get too far out of control. If you do not have a conversation about how to move forward if someone does not want to be a manager or is not successful at it, they will just go find their old job at a new company.

Between creating a comfortable space for a new manager and also giving them some coaching and mentoring on how to be successful at it, I believe that every talented engineer is capable of being a talented manager.

Let’s get to the spicier part of the conversation and talk about compensation. The other thing that makes me twitchy is the blanket generalizations about which path gives better compensation and career opportunities. This is so completely dependent on the company that everyone’s generalizations about this make my brain bleed.

All companies value management, leadership, and individual contributors differently. Some will have similar bands for compensation, and some will even have nearly identical titles. Some of this has occurred because of fast-following for recruiting purposes, and some of this has occurred because of the changing needs of the organization.

Regardless of which path you take, the opportunities to progress professionally get smaller the farther up the stack you go.

Many organizations have “Staff Engineer” or “Engineering Fellow” roles. These are preserved for the very best of the best. It is hard to get recruited into one of these roles directly. Most companies like to award these prestigious roles for heroic feats or accomplishing specific goals that impact the whole company. Some companies hand them out based on time-in-role in addition to specific milestones. The time-in-role requirements for these types of roles are measured in years, if not half-decades. While there is a need to create these roles to retain your most senior engineers, once a group like this springs into existence, one of the first things they do is institute gate-keeping processes so they can control the membership. There are a number of people who I have spoken with who have wanted to join one of these internal engineering upper echelons who were not able to do so, often for utterly banal reasons. Nobody likes to talk about the ratios of top tier engineers to lower tier engineers within their own organization because it might highlight some of the hidden gatekeeping by people who love their own scarcity.

Now that we have explored some amount of issues related to engineering promotions, let’s cheerfully return to our initial question: If it is dependent upon the individual and their abilities and their desires, as well as the companies and their internal structure, the question I would ask most engineers is this:

Why limit your options?

If there is a company with an urgent need to hire a vice president of engineering who can grow their plucky 20 person team to 200 people, that is often just as valuable as being the chief architect who can scale their output to 20 million customers.

It is not in your best interest to listen to a glorified 10x engineer to say that his ladder is the best ladder. It is clearly true for that person, and the companies they have worked for. Congratulations on your single point of data. Okay that is not fair. Congratulations on the six points of data from you and the people in your scotch/book/co-investing club.

It is in your best interest to maximize your skillset and see what you are capable of accomplishing. There are individuals and companies out there who will help you get there from where you are now. If your current employer is not one of them, then maybe that is one of the first things you should change.

Time to insert my personal sales pitch here.

I have switched a few times between management and IC roles over the course of my career. Most of said career has been shaped by responding to SOS calls from people I trust and admire. I am grateful that the last decade or so has been mostly working with previous coworkers who know I will come in and catch anvils for them.

Rather than listening to a bunch of tweetholes about what you should not be doing, I would love to have a conversation with you about what you are capable of doing. I have helped a considerable number of people on my teams in the past grow into new roles. Some of them have even surpassed me!

So give me a shout if you want to talk about where you want to go professionally, especially if you are not sure how to get there.

Alternatively, you can click the “Like” button on someone telling you that you shouldn’t bother. Some of them make tremendous amounts of dead presidents with their negative armchair prognostications. If you are in this bunch of sheeple and you simply do not care about opening new career doors and growing your own capabilities, I only ask that before you leave you click on this link to this overpriced hammer that I am giving to you as an Amazon Associate, so I too may profit from your random clicking. You get a very nice hammer and some percentage of proceeds go to veterans and first responder causes. In fact, if ten of you buy this hammer out of spite for my gaslighting, I will also buy one.

Categories
Monocategorized

Don’t do negative work

One of the interesting challenges about software development is how non-linear the work can be.

Sometimes you can rathole on a problem for hours or days only to find you have chased a dead end, or even worse, discovered that work you have already done is suddenly useless.

Welcome to the world of negative work.

Negative work is one of the most frustrating parts of software development. We talked previously about the importance of planning your work, as if you were building a bridge.

Preventing negative work is really hard. Most of the time it is due to incorrect assumptions which may also include random things like language constraints or possibly even deployment security issues.

I do not have many silver bullets for preventing negative work—sometimes it just happens. The most I can do is to counsel patience when you discover it and try to understand how you got to where you are. If you are lucky, it is something you can add to your leadership playbook as a preventative tool in the future.

The most important thought I have about negative work is to realize when you have avoided it. There have been times when I was making software that I narrowly dodged negative work, but actually did not accomplish meaningful forward progress. While it is frustrating to have zero forward momentum, it is nice to avoid creating an engineering deficit.

Sometimes the best you can do in those situations is to share this discovery with your team and then say “Hey we did not move forward, but at least we did not do negative work!”

I am going to give the salty signoff a pass today with the hopes you spend some time examining the times you have created negative work, or narrowly avoided it. The better you are at identifying it and preventing it, the more effective you will be as an engineering leader in your career.

Categories
Monocategorized

C’est ne pas une Engineer

I cringe every time I hear someone say “Software Engineer”. Some of this has to do with growing up in Canada where there is actually a “Professional Engineer” organization, and some of this has to do with the way that people view the profession itself. There are some odd parallels that people associate between building software systems and building bridges that I think have warped people’s expectations. Be prepared to have this metaphor taken to extremes today.

Estimating project size and scope is one of the most daunting problems that happens as a result of lumping software developers into the engineering bucket. After all, if it took you six months to build the last bridge, it should take you six months to build the next one, right?

It is not that simple. The difference probably comes in the planning. If you are building a bridge, you will generally do a lot more up front work. What are the elevations at every point along the project? What is underneath the bridge? Is there clay, silt, or bedrock? Will the bridge need to be elevated to a certain point for river traffic to flow underneath it?

The average software project does not have nearly as much up front effort put into it. Imagine if you are starting to build a bridge over a river and you did not do all of this work in the beginning. If you did not check the riverbed to determine whether there is soft mud or bedrock underneath, you might expect that there will come a moment where you will need to invest more time in making sure that the piles needed to support the bridge are deep enough and tall enough. “We did not do enough planning” might sound familiar. It happens all of the time, especially if someone in your team is fond of saying things like “something something agile!” when asked about your processes.

This is the problem that gets created when you slap that “Engineer” sticker on the forehead of your software developer. There is not enough structure and planning around the average software project for the term “Engineer” to be appropriate.

We can fix this in a couple of ways. I sneak the word “Developer” into discussions whenever I can. This is not really a solution, but it prevents me from screaming out loud and clawing at my eyes due to the horrible burning sensation created by most software projects. I have been given feedback that people on my teams do not appreciate it when I do this for the duration of the post mortem meeting and it is a super bummer during sprint planning. Feedback taken.

The real way to fix this is to help educate the non-technical leadership around you about what software development takes and why it is so gosh darned hard.

Let’s go back to our bridge example. If we are building a simple bridge for foot traffic and bicycles, that is an entirely different proposition than building a high throughput multi-track railroad bridge. The amount of support work, the types of materials needed, and general planning that goes into making the railroad bridge is going to be significantly more involved.

The choice of materials might not feel like it translates into software development, but it kind of does. You have to choose your deployment strategy and the language/environment in order to bear the proper amount of load. If you choose your database infrastructure poorly for a high intensity system, it will be the same as trying to make a railroad bridge out of simple timbers and pedestrian bridge materials—it will come falling down.

The farther we go into this the more you might be looking at me and asking “Aren’t you basically proving that the two of them are really the same thing?”

You might not be wrong here.

The bridge metaphor helps to highlight where the difference is and why most software development projects are not really engineering endeavors. Let’s go over the differences.

Planning and approvals – There is generally a document or two that exists in every project before people start building. Most software development projects do not have enough of this. It is one thing to have a few requirements sketched out and another to have deeper architecture dive done before actually getting started. This goes back to those surveyors and architects

Architecture – This is one of the big problems in software development. Certainly at some larger companies, or more mature companies, there is a group of people who have to think long and hard about the deployment environments, development tools, and scaling strategies. The average software project does not have enough of these. Most software architecture is ad hoc and has poor assumptions about infrastructure and deployment. Even more controversial is that some of the people who design the architecture for some software systems are also the people who end up building them. The kids might tell you this is “totes cringey”. The software development projects I have been on that have been the most successful are the ones where there has been enough independent oversight in place to help steer software developers towards a successful deployment.

Complexity – Last but not least is our good friend: complexity. This is not to say that bridge building is not complex— it is. Software complexity is its own beast and is largely the reason that many software projects struggle or outright fail.

There is a big difference between linear complexity and geometric complexity. Google yourself some math terms if you wish to be educated on the shape of those curves. The best software development projects reduce the scope of their complexity at the planning phase. It is very hard to do this until you have blown up a project or two. I now ask myself “How can I reduce the complexity of this system?” at every part of the software development cycle.

Over the course of thirty years I have seen many different kinds of software projects. I interned at Motorola Canada working on an ISO-9001 certified waterfall software development project for emergency dispatch software. That was probably one of the more thoroughly planned out projects I ever worked on. A modern day Agile developer would have turned blue and clawed their eyes out at how much up front planning and process was involved. It was also a great project that shipped in a reasonable amount of time—and it saved lives!

So where do we wind up? I will still twitch a little when I hear “software engineering” and that will probably be true for some time. This is because so many companies have poor processes for planning software projects. As we march blissfully towards the heat death of the universe I hope that we see more architectural support for projects and more thought about software complexity. This will go a long way towards making me feel better about the phrase “software engineering”.

I hope it gives you an opportunity to reflect on the subject also.

Thank you again for reading. I hope that my angry fist-shaking-at-the-sky rant about software engineering has exploded your brain and left you completely shook. At the very least, it has moderately amused you and convinced you to come back next week to read some more.
If you do not plan on coming back for more, then you should immediately go purchase this six-pack of colorful clown wigs (disclaimer: This is Amazon Affiliated Merchandise) that you can buy and wear to work. You can see yourself out.

Categories
Monocategorized

I am growing on you

I mentor half a dozen engineering leaders. Half of them have very specific career goals they are looking to achieve and the other half are tremendous leaders who just want to have feedback on their growth.

I have observed some patterns of career growth over twenty years of managing and leading people. I do not know if these things are universal truths or if there are textbook studies that confirm or deny these things but I want to talk about transformative career opportunities and how to find them or create them.

You will have more growth opportunities and a faster career trajectory at a smaller company. There are many reasons for this. Larger companies generally have an established hierarchy and existing engineering leadership at the top. The existing engineering leadership has an obligation to help you grow professionally. They also have their own jobs and careers to think about. If you are an exceptional engineer who learns quickly, you might run into a ceiling because there is no room for you at the table due to scarce thinkers in leadership, or just due to the need to follow career growth processes which often include time in role. I have found several talented engineering leaders who were “stuck” in this situation. Most of the hard problems might already be solved at a large company. The ability to build a large scalable system is different from the ability to add features to a large scalable system. Every once in a while you will get the opportunity to participate in a refactor or rewrite but these opportunities are few and far between.

Growth opportunities in smaller companies vary from organization to organization and there are some things to look out for. If the business is growing, then the engineering organization will need to scale up to suit. If the business is not growing and the products are largely the same year-over-year, then there is no need to grow the team and generally there is no need for people to develop “next level” skill sets.

So what do you do if you do not have a transformative career opportunity at work?

There are a couple of things you can do.

Change employers – If you have spent two or more years at a company and it is not clear what your growth opportunities are, you might want to hit the reset button. I will confess I did this too much early in my career and if you are like me, you might have to spend fifteen minutes in every job interview explaining that.

Change teams – Sometimes there are different organizations within your own company that present career growth opportunities. There are rules about how to switch teams in most companies and you should certainly talk to your manager prior to getting too committed to changing teams. That might even be the catalyst for your manager to find something that will enable you to grow in your current role!

Join an internal committee – You may have internal technology groups or task forces that exist at your company. Many companies have different groups for managing the state of their platform, or have mentorship groups dedicated towards cross-team learning and promoting growth. Getting involved in one of these shows you are dedicated to your employer and should help you get visibility for growth opportunities!

Join an open source movement – If you are not able to find a new opportunity then you can also consider contributing to an open source movement. There are a lot of projects out there and some of them need help. I have seen a number of engineers grow professionally by doing this and I approve of it. It is not something I have done myself but it bears mentioning because I have hired people with strong open source contributions.

Write your own software – I will start by adding a caveat that some companies and jurisdictions have rules against this. I think that is unfortunate and if you feel like you want to write your own software, then I would recommend moving to a new location or changing jobs to give you the opportunity to do this. This is the thing I do the most. I have written a significant number of independent projects. Some of them have even launched! You learn quite a bit through the end-to-end software development cycle and this is one of the things I look for in a resume.

Do a consulting gig – The previous warning on companies and jurisdictions applies here. If you do not have any big ideas of your own, you can always find someone who needs urgent help or discounted labor because they cannot hire an entire engineering team. You can help someone build a prototype or repair an existing system to get some professional leverage and get paid for it at the same time! If someone does not have a large budget, you can always discuss equity in the project or ownership of the code. The latter is valuable if you want to use the code in the process of looking for more opportunities as a demonstration of your skills.

You might notice that all of these things sound hard or time consuming. This is true. Growing professionally is easy at first and after a certain point the number of professional openings at the next level decreases. You can always sit around and wait for that opportunity to appear in your current job. The problem with that approach is that you might find someone who has made more of a time investment into their career growth. You might get passed over by someone who is demonstrating that they want it more through some of the items above. Your recourse at that point will be to look for that next-level role elsewhere, with the understanding that if you have spent multiple years in your current role, you might only be eligible for career sidegrades instead of career upgrades. I caution people against doing this. Which brings us to the last thing you can do.

Retain a mentor – Hello and welcome to the sales pitch! If you are struggling with any of the above things and want to grow professionally, then you should consider finding a mentor. Some companies will have a Mentor Program. Some companies will give you a learning and development budget to hire a mentor. If neither of these things are true then there are some people out there who mentor out of the kindness of their heart for free. If none of those things are true for you, there are a dozen or so places you can go, present company included, to hire a mentor at whatever frequency makes sense for you at whatever price is affordable. You do not have to figure this stuff out alone!

So there it is! No begging for Amazon nickels this week. I have zero billion of those already. I have some limited capacity for new mentees and I am happy to spend an hour or two discussing it with you as a courtesy. That is right. If you are willing to give this car a test drive, you might be able to drive it home today. I always tell people I am willing to spend a few hours a year with them for free and any time after that is stealing time from my children. They are open to bribes and if you need to meet quarterly or monthly (or even weekly) then let’s talk Hard Cash Money. I don’t even need to go in the back to talk to my manager—I can either help you or I can’t.

Categories
Monocategorized

Creating things is fun

Happy 100th post!

So I have been working on a “TTRPG” project for a while now—since 1997 in fact. I have talked about the “Joe the Elf” problem last fall and how I have mostly solved the problem for myself. As a result of “The Difficult Times™” and “hey everyone is playing Dungeons and Dragons now” I decided I would spend some time to modernize my tool from a win32 C++ app into a modern day web application.

I started promoting my web app on the Twitters and now that we have some pretty cool tables, I have been working on my marketing skills a little. Judging by how few nickels I am getting from Linking Random Stuff On Amazon as a Clearly Promoted Item, I still have some work to do.

I am now up to 300 followers and have tens of thousands of impressions with some single digit percentage of engagements. I don’t know what is a good number yet for those, but I have seen some of my random tweets get up to 20% so I know there is some room for improvement.

The product itself generates strings of text to assist storytellers and game designers. This stuff does not quite sell itself. I am making the product very frictionless and very free in order to build an audience and presently that is slow going.

So today I want to show what I am doing to make promotional content for derfdice.

Here is a sample of some output from a derfdice table:

  • Caer Gorom, a decaying Church, overlooking the ruins of a destroyed city.
  • Cael Crevil, a doomed Abbey, shrouded in dark clouds.
  • Dol Ithskull, a crumbling Hermitage built on the ruins of a Motte and Bailey, blackened with scorch marks from eldritch fire.
  • Dol Gorith, an ancient Synagogue, emerging from the face of a cliff.
  • Morth Nevthad, a decaying Hermitage built on the ruins of a Keep, in the heart of a decaying forest.
  • Amon Morthad, a damaged Synagogue, emerging from the face of a cliff.
  • Caer Crevskull, an ominous Convent built on the ruins of a Armory
  • Tyrn Guul, a dreadful Cathedral, sunk into the ground.
  • Caer Ithgul, a damaged Shrine
  • Amon Sheld, a giant sized Bastion, where Overlord Arianerath the Passionate fell in battle.
  • Helm’s Harg, a crumbling Bastion, surrounded by overwhelming dread.

Each of these is a cool, random location that can be used by a DM if they need an urgent random encounter. This describes about fifty percent of “John is just making it up as he goes along” DMing.

How do we go about making this interesting for Twitter?

Let’s take the first ominous fantasy building, which just happens to be my pinned tweet.

After a few attempts at taking pictures of strings with a variety of different formats, I stumbled across starryai. I set up an account and started feeding the string outputs into the site to generate random images.

Here is the one for my pinned tweet:

Caer Gorom, a decaying Church, overlooking the ruins of a destroyed city.

I post one of these to Facebook and Twitter every day.

A few of the DMs on the site are getting deeper into making tables. We got a cool table for tavern meals, and a cool table for tavern drinks.

It stands to reason that the next step was to make… Tavern menus!

One of the very first tables I made for myself was a random tavern generator. I have added the full tavern menu to it to add some considerable flavor to a random location in a tabletop game. The result is pretty awesome.

In order to promote these, I take the headline from the tavern and run it through starryai, and I get a pretty cool custom piece of artwork. In order to elevate the presentation to the next level, I then put the text through a homebrew formatting generator, and append a screenshot of the text to the tavern image.

The end result is, as they say, chef kiss.

This does not have anything to do with career growth or managing teams. This is me talking about a small side project I built with a little help from my friends.

Now that I have updated the framework to work on my phone and run in a browser, the itch to use it myself has increased tremendously. At some point in the not-so-distant-future I am going to get back to running a weekly tabletop game.

I would normally send you off with a scorching final thought. Today I just want to ask a question:

Do you have a creative hobby you would like to talk about?

Categories
Monocategorized

Negotiation Education

Negotiating is hard. There are many books on the subject such as “Getting to Yes” (disclaimer: I git payed if you buy this book). Some of these books will help teach you to be a better negotiator. Today I want to talk about one of the things I learned about negotiating… from negotiating: How to learn your counterpart’s position through negotiation.

When you are negotiating, you are always operating with imperfect information. You do not know your counterpart’s primary desires nor do you know where they are flexible. You can do things in your negotiation process to help understand what is necessary to come to a final agreement.

For example: If you are negotiating a work contract, you do not know if there is flexibility on the feature set or the budget. When I am faced with this situation, I generally break down a project into several optional milestones. This is a good practice for a couple of reasons. For the purposes of this discussion, when you break things down according to feature sets or phases, you have a rough idea what your counterpart is looking for and how much money they have to spend.

When negotiating with startup companies, I find they are generally more cost-conscious and will likely trim additional features or extra platform support in favor of a slimmed-down agreement. Other companies, especially larger ones, might be interested in all of the bells and whistles.

The response to a proposed list of optional milestones will tell you whether features or budget is more important to a potential business partner.

Unrelated to features or cost, you might also learn that time is important. If they urgently need to see something, you should make sure that you are getting a premium for making something urgent. If you need to dedicate extra time and energy towards shipping something as quickly as possible, that constitutes risk.

Another important thing to learn when you are negotiating a project is whether or not this is a part of a longer term relationship with additional projects in the pipeline.

When I am forming a new business relationship, I often want to understand the risks they are taking as well as the rewards. I am very happy to assume some level of risk in exchange for some of the reward. I am not afraid to ask for equity, or revenue sharing on the back end, for a project if I believe in the people I am working with or the project they are working on.

I have an hourly rate for cash-and-carry projects. I also have a discounted rate that I propose if there is an advisory role or stock consideration for getting involved. I do not offer this to every potential business partner.

When do you decide to trade off cash-in-hand for equity or revenue share? That is a great question. I will admit I discounted a large number of projects early in my career for upside. About three quarters of them were mistakes. If the only reason you are going to give them a discount on the work for equity is that it is out of their budget, you probably should not do the project. This is a good example of something that you can learn during negotiation.

The things I look for today in an equity-based relationship:

  • They have proven product-market fit. They have some traction and customers use their product.
  • They have strong financial backing. They have already raised some money from a source where they are likely to raise follow-on investment after accomplishing a specific goal.
  • The leadership team has a strong track record. Whether they have managed large projects or brands in the past, or they have an impressive pedigree, I look for the founding team’s experience and how much I believe in their vision and ability to do something amazing.

Once you have established your counterparts’ flexibility on negotiation and you are close to a deal, you might find that there is still a gap between what they are asking and what you can deliver.

I sometimes bridge this gap through IP ownership. I am willing to discount some of the work that I do in exchange for ownership. I am happy to give a discount on a project if I am just sublicensing it, and I can exploit the IP on my own terms. I will give a company a six month or one year window to exercise a purchase on reasonable terms, generally after they have completed a milestone or raised funds to cover the cost of purchasing the final product.

If you are negotiating a project where there is a limited budget, and no willingness to be flexible on any of these points, there is something you can learn here too. You can learn to just say “No thank you” and get on with your life.

I also learned something else in a different kind of negotiation. This happened when I was working at a startup that was struggling to pivot. We were in conversations with investors and wanted to get some feedback on what we should do about controlling costs and headcount.  When you ask them questions like this, you would expect them to say “we support whatever decision you make”. You can phrase your question in a way that will give you some clarity about what to expect from them in the future.

For example, we had to make some cuts to staffing to get to the next milestone. We asked our investors if they wanted us to make two levels of cuts, one now, and one later, or if we should do a bigger cut all at once. We were told very quickly that we should cut to the bone and do the bigger one. This was a really important piece of information.

If we were told that we could stagger cuts and get to the next milestone that would tell you that they have institutional support and willingness to write another check depending on what gets learned.

When you get told to do one big cut and that you should cut to the bone, that is a sign that you are likely not going to get another bridge note from your investor.

It was an educational moment for myself and for the rest of the management team and we planned accordingly.

I have gotten into the habit of being very thoughtful about my negotiating over the years and asking myself “What do I need to learn in order to deliver the best results for everyone?”

I would love to learn what kinds of things you learned from your own negotiations!

Thanks again for reading along. I know it is summer time. I know you have TikTokToes to watch or possibly New-Show-On-Streaming. In order to compete, I implore you to return here so I may emblazon your eyeballs with molten hot blasts of extreme thinkiness! Satisfaction one hundred percent guaranteed!*

*not an actual guarantee

Categories
Monocategorized

My way is the wrong way

So I spent a few weeks talking about things that I learned from my dad that were awesome. I want to take this week to reflect on one thing that I think he could have improved on.

Growing up on the farm, there were two ways to do things: My father’s way, and the wrong way.

We all immensely disliked doing things his way. It should not be a surprise to anyone that I have seen this pattern manifest itself in engineering teams.

One of the challenges with leadership is trying to set the direction for your team and giving them enough freedom to make their own decisions along the way.

The reason you might have a particular idea for how to build out a software system is that you have encountered a similar problem in the past and have built up some patterns that you like to apply.

The challenge is that if you provide too much direction and guidance, then the team building your platform may not go through those same mental transformations and growth, and they might greatly dislike the process along the way.

There is a fine line between giving people enough direction and support to get to the business goal and giving them too much guidance which might smothering the joy out of their work.

There will come a point in your career where you will be confronted with this problem. You will have a software system to build, and you have a particular approach that has worked for you in the past. You will also have several engineers working with you who might not have relevant experience and you will need to coach them to get it built.

The more senior the development team you work with, the better they are at dealing with ambiguity and creating their own systems.

You will also have an engineer or two who, while just not quite ready, believes they understand the issues well enough that they should have considerable freedom on the project.

The most successful leaders can tell the difference between the previous two groups of engineers. They will let their best people build software unimpeded and check in to give them mild directional feedback and some suggestions on changes to make that will be beneficial.

For the latter engineers, who are not quite there, it is important to find a piece of software for them to build that is relatively low risk and give them a chance to deliver a successful finished product. There is a decent likelihood they will miss the mark and that is okay.

Setting up small parts of the project for people to have an opportunity to ship a piece of software will let your team have the freedom to build things the way that they want, and for you to give them some feedback on how to improve it in flight.

It takes a few years to figure out the right balance of testing people’s limits and knowing when you have a member on your team who you can trust to drive a project to completion.

With all due respect to my father, there is often precisely one wrong way to build software: Your way.

Leaders who try to push their ideas or solutions onto a team often fail. The worst of them will appeal to their role or title as a means to get engineers to build things the way they want. “You will do this because I said so and I am the boss” is not written on a fortune cookie for a reason.

The best leaders will show everyone where the goal is, give them some patterns that they have used in the past as examples, and step in to provide minor course corrections along the way.

Will your team ship perfect software? I doubt it. You probably did not either early on in your career.

Will they learn from the experience? Absolutely. And this is the most important thing for you to manage as a leader in a software development organization.

I am reminded of an interesting quote I heard by another engineering leader. “The best software architects create software architects”.

I think that is very true.

There is nothing more satisfying than working with a team of people who grow professionally and are able to build great pieces of software on their own terms.

I take that back. Perhaps the one thing that is more satisfying to me is when I see someone who has mastered their craft and is ready to mentor and coach the next generation of engineering leaders by letting go of the steering wheel and telling someone on their team “here, you drive.”

Thank you for reading along! It is another short post this week. If you find my ideas wrong or disdainful, then here, enjoy some ironic merchandise from The Office. I implore you to buy this clearly promoted fine Amazon product. After all, if you will not profit from my noise-making, then perhaps maybe I should!

See you next week!

Categories
Monocategorized

College stuffs

I had an epiphany on Father’s Day when I was talking with my son about college courses. We were talking about how some of the classes he took were supposed to be easy and they wound up being hard. I recalled having similar conversations about classes when I was still in school. The difference was generally the instructor. Some instructors created an easy classroom experience and some instructors created a hard one.

This is also true of your bosses and managers. Some of them make it easy and some of them make it hard.

This is important because there is a popular truism that “people do not leave jobs, they leave managers”. I do not know who said it, and I do not feel like Googling it.

It is just one more random thing that you learn in college that helps you professionally.

I am not going to get into a giant argument about whether or not you should go to college—it all depends on the person if you ask me. I do know that a lot of employers place significant value on elements of a college degree.

Completing my degree was initially something I was doing to prove to my father that I could finish something important. He was not a big fan of my love of computers and he was critical that I would go anywhere with it. Eventually I started doing well and he had to begrudgingly admit that he was wrong—maybe not in so many words.

My son is in college right now studying computer science. He is also a left handed pitcher and he is playing baseball as long as he is able to. We committed to supporting that as long as we can and asked him to commit to doing his best academically at the same time.

Will all of my other children attend college? I do not know. I have worked with some amazing people who did not attend college. There are valuable things you can learn from a college experience; however, I do not want to push any of my children into it if it does not make sense for their goals. I will provide them with a pretty good list of reasons why it has value for them before they make their decision about it.

Understanding the difference between college instructors and how that translates to differences between managers is yet another interesting thing that you learn while in school that I did not think about consciously before this week.

Having a great instructor for a class will inspire a love of learning for the material in question and possibly even contribute to a higher grade. Similarly, having a great boss will inspire people to do their best work and maybe even propel them forward on a higher career trajectory.

Every time I wanted to have an easy college class it was usually because it was an elective, or I needed a filler credit to get to the number of credits to graduate. Sometimes I was burned by buying into the folklore that a specific class would be easy only to find that I got “that instructor” who, for whatever reason, has ratched the difficulty knob up to eleven.

People who lead and manage are the same way. I have seen people move to different teams at their current employer in order to find a boss with whom they can work similar to the way that college kids will change classes to get different instructors.

If I uncover any other additional interesting life patterns from conversations with my son about college, I will be excited to share them here.

Thank you again for reading. I hope to keep you entertained with my random old people noises throughout the summer. I am now at a point where I have a big backlog of interesting stuff to write. I get nervous when my list of upcoming conversations drops to less than four.

I am continuing to breathe life into my interesting little DM tool over at derfdice and I will give you all updates about that through the summer. If you can spell D&D, please follow me on Twitter. If none of you do, I will be forced to return to shamelessly hawking affiliate merchandise in search of two nickels to rub together in consideration for spraying so many unrelenting letter and number combinations onto your eyeballs.

Until next week!