Showing posts with label trust. Show all posts
Showing posts with label trust. Show all posts

Friday, April 8, 2016

Trust - Ebbs and Flows

I find myself thinking about trust a great deal lately - it is another of those life things that seems to be rising to the surface enough that I should likely pay attention to it. A friend of mine in fact just said

"Trust once lost, is hard to regain."

Which is why I am now sitting here typing out this post.

From a very young age I found that I was able to read people fairly well. I was certainly not perfect at it as 'reading' someone is a bit of an inexact science but I found I was fairly good at determining quickly if I was bound to trust the person standing in front of me long term. Sometimes body language would say one thing and their words something different which would leave me feeling like I couldn't trust them. Overall I was often left wondering about interactions with individuals long after they had occurred trying to understand why the conversation broke out the way it did, why certain things happened and sometimes why certain things didn't happen at all. The interesting thing for me is that while my instincts may tell me not to trust someone I often trusted them anyway. Glutton for punishment I suppose.

WHY

I have wondered for myself why it is the case that I always seem to start from a default of trusting someone implicitly even when my instincts may tell me otherwise. It seems to be my nature to start a relationship with giving it my all. I want to trust, I want to know I am trusted, I want to exchange ideas and know that ideas can easily be exchanged with me. To put it simply, I pour myself into the relationships that I have because I think it is important to be fully engaged and fully involved. This makes having lots of incidental relationships super annoying, because I am not much for incidental. I want people in my life that are willing to connect that way. I want people in my life that allow me to pour a bucket full of my trust into the relationship, instantly. In the reverse I hope for the same from them, but I can do no more than hope as their trust isn't in my control...

Trust Exchange

I had a conversation with my friend Maurice Gaston at one point about trust and trust as a flowing exchange between people. The idea that trust isn't something all on or all off at all points, that it more flows like a river or comes and goes like a tide. The discussion framed up some thoughts around why some discussions I have feel more relaxed and others feel more strained, as if some conversations require a great deal of concentration to get right and others go right naturally on their own. I think it does boil down to the trust that we have and the mental model we have built up of the person(s) we are talking to.

Chris Argyris, an American business theorist, wrote about these mental models we create for our interactions. He outlined that people over time generate a 'theory' of the person that they are interacting with and how that person will or won't react in situations that they are placed in. When we interact with someone else we try to reconcile the actions that individual takes with the theory we have in our mind for that person, if they match, we reinforce the theory being the 'right' theory for that individual. When the theory and the actions that are presented mismatch we get suddenly lost trying to reconcile and come up with a new theory for them that fits the new data and situation. He called out that this all occurs very quickly - likely at a level we don't realize we are doing it. Stay with me... bringing it back around.

I think the reinforcement or the discontinuity of conversations likely line up with the level of trust and the ease with which the conversations seem to occur. That trust ebb and flow maps directly on-top of Chris' commentary. When my theory of an individual is reinforced by that person's actions, I feel more likely to trust and less like something odd is going to happen. When my theory is constantly being challenged, I feel less likely to trust and the conversation and exchange is harder.

I am sure that there is MORE (much more) to this. This post just represents a part of my consideration of trust.

Trust for me means - Getting Hurt

I am a very trusting person, if you ask me a question I will give you the answer, personal or not. Comes with the ADHD and lack of mental filters for what I should or should not say. I have gotten better over the years about picking my words more carefully so that I don't come across as so blunt or surprising, but I haven't stopped trusting people by default. I want it to be the case that people I am involved with trust me and understand that as a friend of mine, that I would likely move heaven and earth to help them, often times at my own detriment. This has made me try to limit the number of close friends I have - but the reality is that most people I see often enough I would consider my friends and they all get equal treatment that way. Move the stars if it would help. It is painful though because often enough that trust only flows in one direction, and for me its hard to turn off allowing me to get hurt or used more than once. That too has changed over the years, but I am likely still not as careful as my experiences would dictate about how much trust I provide people (including those that have hurt me more than once).

Trust can also hurt when I don't pick my words more carefully and a raw feeling escapes to the surface and out my mouth. It often comes as a surprise to the individual involved.

Why is trust so hard to get back

I think that this is only human, we tend to focus on losses more than gains leaving people less able to see how much was there in the first place. It means that we feel so much more keenly the lost trust, no matter how small, rather than all the trust that has been exchanged over time. Changing that around is difficult because people are not wired that way. Consider your avg. IT help desk and all the vitriol they get tossed their way, no one ever calls them to say "Hey, great job your doing". We unfortunately focus on the negatives. Feels odd to me, because I get burned and go running back in, I wonder what does happen when you let go.

Monday, February 16, 2015

The lies I tell myself

When I was younger (now a great deal younger than I care to admit) I went to school in the Radnor School district in Pennsylvania. Radnor Township is one of the richest (in terms of per capita dollars) areas in all of Pennsylvania, my family and I however - were not on the same scale. I started my school experience with 1st grade @ Ithan Elementary.

I was socially different than most of my peers. This was not immediately obvious to me in school till I got to be in 4th and 5th grade. I tended to keep to myself finding it difficult to relate to those around me. I was tall - freakishly so for my age, which made it difficult to keep me in clothes that fit. I almost always had flood waters for pants as I would sometimes shoot through two or three sizes in days or weeks. This contented with my desire to just blend in because it was easy to see, and by extension make fun of, that fact that my clothes didn't fit. Not to mention that I wasn't at all interested in the word 'style' as it portended to what I wore unless it was possible to prevent additional ridicule. The problem with that was our family often was not able to purchase the 'stylish' things due to their cost. I still have memory of having one of those one piece snow suits and not being able to put it on completely during winter recess and the boy that punched me in my gut that same day because I decided to stand my ground that one time that one day.

My years in the Radnor school district left me with the jaded point of view that I shouldn't really care what other people think about me. I made a point of attempting to look past what people were whispering (or so I thought) or even pointing or saying directly to my face. I convinced myself that despite the fact that I see these people almost every single day, that at some point none of them will really be a part of my life and that their thoughts and opinions didn't matter because none of them were taking the time to get to know who I was, what I liked or disliked or even what I stood for. This idea permeated how I went about living my life. I didn't care much about my appearance - I was barely kempt by most male teenage standards.

So - why is all that back story important?

I realized something for myself the other day, I actually do care quite a bit about what people think about me - that I was lying to myself and others that I didn't care what other people thought about me. You see - I am amazingly empathetic and I connect with the thoughts and feelings of others easily. So easily in fact that it is somewhat like slipping on a shoe, or a comfy pair of socks. There are cases where that empathetic ability doesn't work as well - but for most cases, it works all too well.

Over the years I have come to think of this empathetic ability as a super power, because so many people don't seem able to connect with others the same way. The problem is that this connection, the empathy with others, drives a level of caring that in a great many ways I wish didn't exist. My empathy makes it hard to separate my feelings from those of others around me as a result I find it amazingly difficult to be around large crowds, public speaking is really hard, walking around in large cities like NYC are a drain to me. I know how to close some parts of my ability and myself down to try to prevent from getting drained - but it is difficult. I have a strong desire to be valued by those people around me, those I have chosen to be with at any given point in time.

I also find that my level of caring can be adjusted - caring more for those closer to me, that I can discriminate a bit, generating higher trust with those that are closer to me. I have learned that it hurts enormously when I misspeak, or misstep with someone that I care about, because trust is hard to rebuild, and I don't have a time machine to go back and say things differently than I did even if I want to. I have also discovered that words chosen un-carefully are a wonderful betrayer of intent just like a poorly timed or written email, txt, or tweet. I try to make those missteps and other events be learning events for me because no one is perfect and I am certainly no exception.

I said when I was a kid - that I leave my heart open, my being open, so that others can see and be involved with who I am and that by doing so I was also open to an enormous amount of hurt. This is still true today, the difference is that because of the history above, I am more discerning about how I care about being hurt. It hurts more when I screw things up with people I WANT to have in my circle and less with those I can keep further outside - but my lack of caring isn't an absolute like I thought it was as a kid. I am still learning how to deal with the ebb and flow of trust as a result of my caring. Still learning about the ebb and flow of value that comes from the people I chose to be with and those that chose to be with me.

Here there be Dragons - take care, step lively and be ready for the good and the bad. Still trying to figure it all out at age 41.

Thursday, October 30, 2014

Roles for Making a great (software dev) team

I wanted to take the time to try to document the roles I think make up a great development team. This is essentially that raw brain dump - would be very interested in engaging discussion and conversation around these. What do you think - how has it worked for you - would you refine these in any way?

The Constructive tinkerer

This role describes a person that spends time looking at the problems that are facing the team and looks for ways to solve them.  The solution can be already contained in the things the team does or may be something that team has not yet thought of or is currently using in the way of technology. This person spends the time to investigate, research, experiment with the different, better, worse ways of doing what needs to be done inside the team. This individual is often not directly involved in the shit triad*, meaning this role is often not doing product development work but is instead creating nice paved road surface for the folk who are part of the shit triad* to move faster and get more done in shorter periods of time. The work this person does tends to lay the ground work for a great deal of other work that the team does. Clearing the path and making things easier, more visible, more operational.

Additionally - this role spends time providing guidance and mentorship for the other members of the team. Sometimes the discussions being had are technical in nature, things like "How should I implement this new hot thing that product asked for..." and sometimes the questions/discussions are procedural and more team oriented... "I think that we need to make this type of error more visible and loud so that we can find a root cause and eliminate it." This role plays a part in providing a sounding board for a great number of activities in the team working to help the team understand the aspects of their software running in a production data center with real users, whom we want to delight - not make angry.

The key for this role - is that the tinkering with things, the new code, the clean up of old code, the discussions are all oriented in positive "We will use this ways". When the result of this roles tinkering isn't useful to anyone, the person playing this role doesn't get upset, nor defensive - they simple tuck that work away for some later time, or they drop the work all together. The constructive tinkerer is focused on what the team working with them needs. Decisions about the longevity of something are biased towards team needs and wants but balanced with what the larger organization needs from the team as well.

The curator (Those that care do)

This is an oft overlooked role for every software development team. This role may not even be a single team member but encompass how the entire team thinks about the code base that they work in every single day. The curator(s) are those that are deeply invested in the well being, well meaning, and intention of each and every part of the code base. Curating the code is important because as we all know, code that is no cared for tends to suffer from:

Bit Rot
Code that is left to sit eventually rots away. Of course it doesn't actually rot, but what does happen is developers lose touch with what the code was supposed to be doing. There is a lack of documentation, so there is no longer any institutional knowledge of the code and no way to gain it other than wading back into the code base to find out whats in there. Bugs stop getting fixed and people eventually would rather replace all the work than 'figure it out' all over again. This can be avoided when there is a curator around - because they are constantly looking at what can be made better - seeing where problems are and will get upset when something sits for too long without getting any touch/attention.

Different points of view
It is rare these days that a code base have a single developer. All the code that I work on is managed and maintained by either a team or multiple teams of people. The curator has the un-envious job of reconciling the differing ways that things in the codebase are accomplished. Ties are broken, discussions are solidified into a 'way' in which the code will represent a specific thing. The code gets cleaner as a result. Differing points of view have to be recognized and addressed by a curator or you will easily be able to tell which sections of a code base were written by whom based on taste and patterns of development.

New developers
New developers to the team are simply new and have to be shown a way. This demonstration is made easier when they can see that the code base looks a certain way and does things in certain ways. This is made better when they are also able to consult a curation individual for a team. Work can be made even cleaner when new developers know that there is a pattern that exists that they can follow and that the team is open to discussion for new ways and new ideas to change existing patterns.

New shiny thing
A curator helps to combat running off and implementing the next hottest, best, new, shiniest thing in terms of development. Sometimes new patterns and new ways of doing things are beneficial or needed. A curator helps to understand how that can be phased into the code base and how existing patterns can be touched and adjusted as a result. The curator helps to understand how much time and effort is involved in moving the WHOLE code base into a new direction or if the new thing should only be used in certain locations under certain conditions.

Those supporting the shit trinity - Knows Shit, Gets Shit Done, Gives a Shit

So every team needs some number of people that have the ability to get things done... and get those things done well. Those that support the shit trinity make up a fair majority of a team and ideally everyone on the team would fall into this category to some degree. This means that everyone on the team has the ability to play a roll in accomplishing the goals that the team has set out to accomplish. Sometimes the goals are development oriented and related to software design and coding, other times the teams goals are about the process that they use to get their work organized and ready to work on.

The helper/garbage man

You always have to be willing to take out the trash. This is another role that the entire team should be adjusted towards. The garbage in the case of a development team is the grunt work of fixing bugs, re-organizing code when it makes sense, basically anything that would be considered the bottom of the barrel in terms of development effort. The tasks involved are generally just tasks that need to get done in advance of getting to the nitty gritty of some new development that has been planned. Every team needs at least one, and hopefully the entire team would be willing to do this work because they know it is necessary. Having the team be adjusted to taking out the trash means that no one on the team feels like it is demeaning to have some amount of their work be involved with taking out the trash in the code base.

The adage that I think goes with this is that a good manager, exec, CEO doesn't believe that certain tasks are somehow beneath them, they see that it needs to get done and that currently no one is doing it so they go in pick up that slack and get it accomplished and then later look for ways to not miss getting that bit of work done in the future. For a team - this mentality in at least one person has to exist both because it is necessary to pick up what is left behind but also because it encourages others to also pick up what is left behind. In essence having an individual on the team that "takes out the trash" encourages people to not throw stones at already broken windows but instead to fix those windows and move onto something else. 

The thinker (although they all have to be this way to some degree)

Software design, architecture and over all capability of the code to do a given task takes thought. It is not something that flows from the fingertips of generally smart people perfect the first time every time. Software development is a thought process, a process sometimes of trial (doing what you think will work) and error (seeing that what you did doesn't work) in order to get to the point where something is produced that meets the requested/stated needs of the larger organization. Sometimes the thinking on the team is encapsulated in one individual but I find more often that while one individual seems to do a great deal of the thinking/design that everyone seems to rally around that "nucleus" adding their own identity and thought process to the original. Making the thinker role more of an instigator role most of the time, using the power of the group to find all the holes in a design, to talk about all the corner cases in what we are doing and to aid in preventing the entire team from backing themselves into a development corner that they can't get out of. The thinker/instigator provides that stable guidance for architecture so that it evolves and morphs rather than needing a revolutionary re-write to get the team out of a bind.

Verifiers  (although they all have to be this way to some degree)

Everyone should be interested in verifying their work.  Sometimes this is a single individual that acts as the last safety valve for a team, making the last checks, T's crossed and I's dotted before the result of a development cycle, no matter how large, is verified to be doing what it was expected to when the development got started. In our team this has been encapsulated into a final check before deployment of the out put of the API.  When we are getting ready to do the deployment for a given day, the code that has been worked on is deployed into a staging environment and then a script is run to look at the syntactic differences in the output of the endpoints in the api space. Differences between Staging and Production are noted, discussed and either acted upon because they were unexpected or dismissed as expected due to the code being deployed. Taking this action in the form of tests that each developer wrote during their development in the early part of a cycle and doing this final check at the end causes us all to 'verify' our work. Similar to the thinker above - when the team sees that this is expected they tend to start executing that way on their own with little to no nudging required.

The reporter - Someone has to tell the world

In the end the WAY in which you work is important, but just as important if you want others to work in the same way is that you go and tell them what you are doing and how you are doing it. Enter the reporter of the team. This is someone who likes to taut what the team does and succeeds in accomplishing. In a shout from the roof top sort of way this individual helps the success of the team become more common knowledge and more well understood by other teams. This helps to spread ideas and processes and allows others to start to ask questions as they investigate their own teams and how they operate to accomplish the goals they have set out on.

Saturday, January 12, 2013

Date Chicken

Through out my software development career I have been trying to understand how things work, actively pursuing the thought processes that people use to make their decisions. I spend time asking questions about the hows and the whys of what I am asked to do and produce. This action, over time, has produced a decent picture in my head of how software development should work and in many ways how it should never ever work. I have been able to understand the whys of certain actions and requests but the one 'action' for which I have yet to totally understand is the idea of software development "Date Chicken".

Date Chicken as I would describe it is the propensity of an organization to want to assign a date to a project without understanding or going through an understanding of the complexities around what has been requested to be developed. Date chicken comes about due to not having enough of the discovery executed such that any date that can be provided has to be provided with a long list of provisos and comments/risks about what in the world at large has to line up "Perfectly" in order to meet the date that is being published. So software development teams are asked to produce these "Plans" that indicate that we can meet the date IFF (If and only if) everything else in the world happens perfectly. What happens next, every other team produces the same sort of statement about their ability to meet the date and the fun begins. Management from each team begins to execute on the "PLAN" that has been produced, they organize teams, and instruct people on what needs to be done and they wait patiently for the first 'date' on the plan to come up.

Here the Chicken part of date chicken takes over. Basically the teams continue to plod along towards the date until that first date arises and a team has not produced the things that they 'said' they would produce and everyone else involved in the project gets to point out that 'their' dates will have to slip day for day with every day missed in the development team at the front of the train. Hence the 'Chicken' in date chicken.

Why is this so hard for me to understand you might ask - every software company of any size seems to do this...

Its difficult for me for the following reasons:

1) The date is a lie, perpetrated by someone else and then taken as gospel, which leaves me feeling like my management doesn't want me to tell the truth, ever. Ok - the date is not entirely a lie - because there is an OFF chance that the needed software shows up on "time" with high quality, but so far I have yet to see that happen when this game of date chicken takes hold.
2) Because the date is a lie everyone 'RUSHES' to turn out the thing that they were on the hook for before their date arrives. In turn this produces software of lessor quality, with production issues, that turns out to be hard to manage and maintain.
3) #2 causes our customer experience to essentially suck, driving the customers to complain or look for service else where, making my company look like the best of the worst.

I do understand that sometimes the date is important, there might be legal reasons or contractual reasons that a specific software development item must be completed by a specific date. However - when there is no specific pressure in this way, I would much rather have my management say "I want to give you the time to make the software 'RIGHT', and I am willing to wait to make that happen."

I don't think it appropriate for the waiting to be forever, but do think that a management statement that says something like "I would like to see something demonstrable in one quarters worth of time." or even, "I am ok to wait to get this right, but I would like it to launch this year" to be fine statements that reinforce the please build this right rather than fast. As we get closer to actually delivering the software requested it is possible to provide a VERY high confidence number on 'when' we are going to be complete. The further away from done however the less confidence in the 'plan' being the right 'plan' and the date, so much more a lie.

In the end - none of this is in my control, but I sincerely hope that it will be at some point if I either end up in a position to make changes, or have my own company making software. Date chicken reinforces all sorts of really terrible habits and I would rather not participate.