> make it known
This was the hardest "part" of working in a company for me to understand and execute on, especially when reporting to a non-technical supervisor. The thing is they simply don't know where to look or what to lookout for to give us accolades. It isn't as hard as we make it out to be, either. It can be as simple as "I made the common components for the WidgetMaker uniform through out the system, increasing reliability and improving maintainability. This will help us avoid an outage during peak WidgetMaking season so we can continue to make Widgets and operate smoothly", which isn't at all horn-tooty, but gives credit where due.
I can build this skills as you said, true, but in my position now it would be impossible to get a promotion as the available spot has been taken already.
Nope. Silence is always less noticeable than noise.
Evil prevails when good men do nothing. Also, nonsense fluff prevails when good work isn't spoken of.
You have a professional duty to make sure nonsense is crowded out by important information. No one is going to do that for you.
Follow the rule of three...tell people what you are going to do and why it is important. Tell people what you are doing. Tell people what you've done. And not just anybody; decision makers.
It is no one else's job to tell people who influence your life of your good works.
No one has time to dig through everything you might have done to hold up the shining examples of your work. And now you have someone above you that might actually be interested in seeing it kept buried so it is even more critical that you do that interpersonal information transfer yourself.
You are a business, and like a business there is no worth in a product that the people who are in a position to buy don't know about. You're going to have to market and sell your value to the people that are buying. All of the time. Make it a habit. Your co-workers are competitors...don't expect them to sell your product for you. (though, keep in mind, part of your value-add is cooperating in your value-add chain so don't take this analogy too far).
Honestly, this is stuff that took me way too long to learn. They should teach it in engineering school. Hell, they should teach it in secondary school, for that matter, since there is really no one who is not running a business even if it is a business of one.
An interesting corollary: Find out what's bothering decision makers. What're their annual or quarterly (or whatever) goals? If you know what those are - not only can you say "Hey, by the way, I did what I'm being paid to do, but, by the way, it helps to address that thing that's been bugging you."
over promising and under delivering isn't a sustainable model
under promising too much and you won't get the chance to deliver
there's a sweet spot somewhere in there, which can be sometimes tricky to find
Often, when you do good work and are good at what you do, it actually looks like your job is easy, even when you are busting your ass to get results!
Some of the best engineers I remember working with did the over-communicating stuff you advise and I remember it was always very clear what they were working on versus other people. They also had a knack for communicating the work in the simplest terms for everyone to understand.
In short: “I did it all myself” is always a lie. It could only ever be true if babes were left in woods since the time of birth to fend for themselves, and even then, debatable.
Since you’re already in the position where you seem to lead the technical efforts of the team, where would you like to go from there?
Unfortunately that's not true. If "shitty code that works" requires three days to be understood in order to make a small change that became a delivery issue and three days in a problem that can be solved in one hour are $$ that somebody is paying. In addition "shitty code that works" most of the time has scalability and performance issues sooner or later you need to address if you don't want it to implode.
> where would you like to go from there?
I can also keep staying in this position, I just don't like to have a manager that I'm not even proud of. And, by the way, I'd like to be in a position where decision making is more stronger also in a business perspective. There are a lot of ridiculous choices that some people makes that are not very effective in some ways let alone make data driven choices. As the organisations today claims to be "agile", most of the time they're not at all. They just use a new word but act as old school (long feedback-loop just to give you an example)
People outside your team won't understand your reasoning. They'll see code working one day and a random failure a long time after that, which might or might not be related to the previously working code. They're just like my cat.
If you want to act for "shitty code", act before it's in production. Afterwards it's very hard to dislodge. And even harder to pinpoint the blame, as the author will definitely protect his back, ethically or not.
I'd take the experience as a lesson in human interactions :)
I think you might be missing their point. From the perspective of a programmer, yes, these things are true. Code SHOULD be Good and Right™, and that is very easy to see and grok from a programmer's standpoint. But to a manager? These things usually have to be stated explicitly, and that isn't entirely the manager's fault. It is easy and pervasive in the industry to write crappy code that works for a variety of reasons (time constraints, incompetence, poor decisions from on high, etc...). Even the best managers have some degree of "out of sight, out of mind" because they rightly delegate the responsibility of making sure the code works AND minimizes tech debt to the developer. It doesn't become apparent to them (and by proxy, the business) that the code was poorly written until the shit hits the fan.
Also, it is unfortunate that you have to leave that job. In my experience in the industry, being able to go back and fix tech debt like you are describing is very uncommon.
I side with you on this because of something I see often: At the end of the day what the CIO (a purchasing manager or the budget signer) asks about is who killed the fire for the day. When you are the good fireman, no one wonders about the quality of hose you used ..
Now, when's the last time you went out of your way to discover if and how someone screwed up?
The difference is just how people are wired. We are all kind of dumb.
As a fun exercise, track down someone responsible for having made your life better today, find out exactly how they did it and give them a piece of your mind about it.
Putting it into practice has been tough, but early results have been good. I'm less likely to get angry, and while I still am not necessarily getting what I want all the time, I feel like I'm getting more clarity and direct communication around why not.
The value you create doesn't talk about you except to people who know you're the one who created it.
I was rushing trying to explain two years in a few words. You might not know what happened is such long span. To give you some ideas of why I said incompetence:
- my colleague doesn't know yet how our infra works
- he has no clue of the application architecture has he still make unforgettable mistakes after two years
- in any architectural meeting where we have to discuss about something he got missed, and, when he's there, he will suggest an open source tool to do so even when it doesn't fit our needs
- in any meeting when somebody ask something to him, the first answer would be "just go in google and search for a library to do x, z, y" even when the question is very architectural specific and domain specific
- even after we implement something he still want to find an open source or SaaS to use for no reason, not understanding that we have a lot of integration cost that he doesn't even understand
- he only had front-end (only in small-sized companies) experience and less than 6 years of total experience when he was hired (he joined right after me, I was not the interviewer) and he never lead a team before.
I worker in multiple context during my career; mainly enterprise and consultancy and I had team leading experience before the role.
To understand why, ask yourself 'When's the last time I went out of my way to discover if someone else did well?'
And if you understood what total collapse will mean - the incredible human cost of it - you would not propose it even as a constructive step.
Technical debt can build up for myriad reasons not related much to competence.
What I would suggest is not to approach this situation as how you can wall off or otherwise attack this person but, instead as a life lesson on the importance of interpersonal relationships and politics.
Politics are a fact of life. Humans are social creatures. All things being equal, and some ways even when not equal, those that are proficient in interpersonal relations will come out ahead. Grok that fact. There is no escape from it.
Good. Now that unpleasantness is out of the way. On to how to cope. Scratch that, /thrive/, in an environment of people doing people things when you are a technical person.
First, information. That is the lifeblood of many systems and politics is no different. Simply make sure important information is conveyed to the right people at the right time.
You use the example that this fellow was able to take credit for your work. Had you passed the information of what you were doing and why it was important to the right people, he would have simply looked foolish to try to take credit.
It can be uncomfortable, to toot your own horn, but it is necessary. Additionally, it can be important to the organization. Assuming you are creating value, it is important that decision-makers know that so they can make the correct decisions. Don't feel bad. Toot away.
Building relationships is critically important in almost every human endeavor. Get good at it. It is a skill like any other.
The target of your annoyance became a manager because he built up those skills and made it known.
Build your skills and make it known. It is just that simple.