|
I've got to go along with JSOP on this one.
I've seen far too often where software gets thrown onto production when it could not possibly have been executed, and then it's a huge shitstorm to try to get the bug fixed. Of course, that normally involves hacking something together.
There might be times when testing is missed (i.e., didn't think of case X), but to say "I'll test by putting something into production" is grounds for immediate termination.
Well, I wish it was. But I work with morons.
|
|
|
|
|
You assume that there are infact hard copy "rules" to follow in the first place.. Chances are if there is even a "lone ranger" situation at all, there are merely arbitrary best practices and no actual rules being enforced.
I can see both sides to this quandry. I am neck deep in being the "lone ranger" in a project (now 8 years). I have found the opposite problem. It was deemed accepted and almost preferred that it be only a resource suck for a single team member up until recently. So much time spent and with new leadership, I have been in the old "what is it you do here" chair. That has been disheartening. Now suddenly there a bunch of new "rules", expectations, documentation, support demands, and a whole "be a team player" narrative placed on me. Lots of productivity crushing "process", but still no Tonto.
The one person army for the project may or may not have been of their own doing and is more a failure of project/product management and process. They may have gotten into some bad habits and now have become accustomed to being in their own sandbox. I sense of ownership maybe. To suddenly have to let others in to that sandbox, especially in a critical manner, can be perceived as hostile. But again, thats on management.
|
|
|
|
|
I've been a "lone ranger" as well, and even then, I had rules. Since I was "just the programmer", I insisted that someone else look at the app in question before I submitted it for deployment.
When I joined the my current team, they had rules in place, and if I want to work here, I have to follow those rules. If a given programmer isn't mature enough to adapt to changes to his environment, he can damn well go find another job, because "lone rangers" don't do anything but hurt the software and the company's reputation when crap slips into production due to a lack of testing. Beyond that, EVERYBODY works late when something breaks. I don't like working late. Or on weekends. Especially when it's not my fault.
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013
|
|
|
|
|
- escalate the problem to management & audit as a risk issue, ie $$$ - they understand that
- have management appoint a team leader who's word is absolute, implement DevOps - it's a whole team mindset, not a 'I' mindset - if he's not willing, point to the door, ta ta, you dont need him
- implement pair programming with the person, but, 1 writes code, the other writes the tests for it - have him start on the tests
- Implement the simplest DevOps you can start with - Jenkins is free, use Gauge or Gherkin/Cucumber etc, but start with something
if he resists, point towards the door. If management dont want you to do it, get a Consultant as the fall guy to implement DevOps
|
|
|
|
|
Write a one-page document on what you feel are the most important deficiencies of that code. (Not more than a page, otherwise, it is unlikely to be read).
Use third person as in "This code is doing things like this, preferably it should be like that", and so on.
Send it to your manager, with Lone Ranger in cc. Let not your manager say "Why did you not point this out earlier".
|
|
|
|
|
and what exactly does he do and what is this/his domain
Caveat Emptor.
"Progress doesn't come from early risers – progress is made by lazy men looking for easier ways to do things." Lazarus Long
|
|
|
|
|
MarkTJohnson wrote: He has long complained that he doesn't have the ability to test code before pushing it to develop Do you mean production?
I ask because most of the answers seem to be interpreting what you are saying as pushing to production without testing.
“That which can be asserted without evidence, can be dismissed without evidence.”
― Christopher Hitchens
|
|
|
|
|
No, I mean the develop branch of git that I'm supposed to branch off of. Code compiled but when I ran it kaBoom.
|
|
|
|
|
That's could also be because he forgot to add some files to the branch - the usual indication of this is it runs fine on his local machine but when you switch to the branch you hit issues.
If he can run everything fine when switched to that branch, the chances are he has forgotten to commit some file(s) to the branch.
“That which can be asserted without evidence, can be dismissed without evidence.”
― Christopher Hitchens
|
|
|
|
|
True, but so far it has been screwed up SQL command strings.
|
|
|
|
|
Tactful for a month, hard later.
I've been The Lone Ranger Under Pressure (out of necessity) more than once and I didn't acquire the capabilities of working in team, also to provide clean releases - after all nobody will test it or maintain it therefore I could build now and fix twhen.
I was also cajoled in working with a Lone Ranger Because Probably Autistic who did not comment, design, document nor used any form of source control. Since he was the Depositary of All the Knowledge and was also the Holy Cow of the customer company, I lost, in three months straight I resigned. Granted, I did not resign because of him but his crappy way of working made what was a daunting proposition simply impossible.
GCS d--(d+) s-/++ a C++++ U+++ P- L+@ E-- W++ N+ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++* Weapons extension: ma- k++ F+2 X
|
|
|
|
|
Not using source control even when you are working on your own is asking for trouble.
I still find it hard to believe that some devs don't use some kind of source control - heck back in 1991 when I cut my teeth coding as a COBOL programmer, we used source control.
“That which can be asserted without evidence, can be dismissed without evidence.”
― Christopher Hitchens
|
|
|
|
|
Golden standard is git, which is a bit hard to understand without previous experience of source control and a bit too intricate to use, especially from command line. Also it's hard to see the benefit of git versus the still rampant zip file + changelog + diff when working alone or in pairs. Palce 3+ people on a complex project and the time investment in learning git pays, especially if aided by a good client (which is NOT the command line*).
* Command line git is powerful and it does make sense but it's a 10.000 levers and push buttons tools, awesome for a full time integrator but time consuming and error prone for a developer whose main competences are code, design, architecture of the product. If it was not for a particular git client, I would never have been sold on git itself. SourceTree is free and has a terrific log analyzer but the UI to manage the repository sucks, the tool I use (not mentioning because it's free only for personal use) has a less than optimal log analyzer but a perfect UI to manage the repository.
GCS d--(d+) s-/++ a C++++ U+++ P- L+@ E-- W++ N+ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t+ 5? X R+++ tv-- b+(+++) DI+++ D++ G e++ h--- r+++ y+++* Weapons extension: ma- k++ F+2 X
|
|
|
|
|
|
As a former "Lone Ranger" I found that source control was the issue when bringing in a wider team. We have been in the position where I would merge my changes back to the base line, he would get the latest version from the base and it would fail to even compile with hundreds of errors.
If we then deleted his version and then copied directly from my source it worked perfectly. Be very sure where the problem lies before putting on the hob nail boots.
Never underestimate the power of human stupidity -
RAH
I'm old. I know stuff - JSOP
|
|
|
|
|
Its nonsense to say he cant test. Your project needs to create a test database to test against, and the Lone Ranger needs to be testing his new functionality against that. You could create a script to create an empty version of your live db and load test data into it.
He needs to amend his connection string to test the app against that, or at the very least if its SQL paste his changes in SSMS (or whatever your RDBMS client tool is) and run it against the test db.
In the long term you could aim to create a suite of automated unit tests which are run before a deployment to reduce risk further.
If its government work, here in the UK we have to conform to certain standards part of which is having a test strategy and evidence testing has taken place (and not against live data). We are audited on compliance to this. If you have similar in your locale,you could be at risk of failing an audit and losing business.
|
|
|
|
|
Having read the Habits of high performing teams post last week, maybe High Psychological Safety comes in here.
Unclear of the organisation structure of this team, and maybe this will lean more toward a manager person to sort, but here goes:
From their perspective they might be in a defensive position (dont have time to test) and they maybe worried that you lot will criticise how bad his code is.
So, the first step is to have them understand that all of you are their to work. Yes your code is going to be different to what we might expect, but the reason we have been assigned to work with you is because what you have made so far is good for the company. You have done good, it needs to expand, yes somethings will change, but we are not here to murder you (i am a sarcastic person, remove the last part if this sarcasm doesn't work for you)
Address all concerns as a team, do a meeting - I worry X will be Y. Others either agree or disagree, gets rid of the mental thoughts. Figure out what needs to be setup and what does not need for a team. Source control is always needed.
|
|
|
|
|
If the management have basically ignored the project for "a couple of years now" then they have only themselves to blame, and should be thinking in terms of a recovery plan from their lack of support.
It's not possible for a single person to be truly their own QA (etc), while still inside a big system (the management!).
Someone needs to be the proper "support" person that helps the 'LR' victim identify and resolve the (administrative / management) technical debt, so as to back out those years of problems. Victim blaming, just because you / I / someone else would have had different problems, isn't a productive way out of this double blind.
If the LR walks, will the project be cancelled, or will it be a death march? Is it better to 'promote' the LR to being lead advisor to relieve them from some of the historical hidden pressure?
It's still a problem, in many ways, with your (company's) management. Did they know they'd let the project stall, why did the take on the new project without a review?
It's not what's under the rock that's the problem, it's the rock on top!
|
|
|
|
|
Do you not have a team/group meeting where you discuss:
1) Massive Backlog
2) Continuous Improvements (where this would fall)
3) Code Reviews
4) Branches and the main branch stability?
Without clarity of purpose and buy in, I assume it isn't happening.
And as professional developers we spend 10% of our time doing continuous improvement. An analogy to painting is cleaning up when you are done. If I hire a painter, I expect him to leave a finished product free of masking tape, and if he used my brushes, they are cleaned, but if he used his, I think I still paid him to clean them... I am 100% okay if he does that on the jobsite as long as he cleans up before he leaves...
So, we allocate it. Otherwise the code just starts cracking under it's own weight. With multiple developers we assign one person to be responsible to make breakthroughs (like parsing all the SQL and bind variables, getting that added to the build process, and either refactoring the code, or the "fixed when touched" approach and verified in code review).
|
|
|
|
|
I had a similar problem. My solution was to not come back to the office and find another job instead. A better solution would of course be to first talk to him about the subject, the same way you did in this forum post. If this doesn't help, ask your boss to mediate, that's his job. If this doesn't help either... leave the company.
|
|
|
|
|
Show him a benefit to being in a team.
My current role is more implement and support, with a little business analysis.
Moving into a team where others could answer the call was great. They were tech competent and even if I wrote the code using Hungarian notation, they could walk thru it. If a spec was there in full geek, they could translate.
Each of us has our alignment and strengths, and are available to the others.
As we don't dev, we do not do builds and tests. But communication tools of some kind.
Does he have domain knowledge that is useful to all? Does he know (and share) the dark corners that need work?
Lead, help, or go away.
|
|
|
|
|
bryanren wrote: Show him a benefit to being in a team.
That's generally called "getting a paycheck".
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013
|
|
|
|
|
I have worked with people like this over the years. They are dangerous and inefficient for teams of good developers.
If he does not comply with your requirements, assimilate him...
Steve Naidamast
Sr. Software Engineer
Black Falcon Software, Inc.
blackfalconsoftware@outlook.com
|
|
|
|
|
Ask yourself a question: why is he "unable to test code before pushing it"?
Is he so stupid or is he so overworked (all these years without a help) and now has even less time to do what he is ordered to do (by manager) because he has to cope with endless questions and complains by you and others on top of his already busy schedule?
And how about you - did you even try to see his situation or are you all under such stress that you do not even have the time to stop and think clearly? Did anybody actually asked him what he needs? ...or you just came in like a flood with "it is our code now and this is how it is gonna be .... you stupid little...."
Start by writing tests and think how to divide the task in such a way that you do not need each others perfect and up-to-date code. Do you really need him to first implement/fix something for you to do your job or you could actually create some independent test-layer or fix it yourself but are lazy and complaining, all blaming the one and only that managed to keep it all running that long with bus factor of 1? Are you really helping?
|
|
|
|
|
I don't know much about it but I see some people saying "There's no harm you fools!!" and other people saying "It will kill us all!"
Interesting article We Have No Reason to Believe 5G Is Safe - Scientific American Blog Network[^]. And since the word science is in the url, it can be trusted.
Social Media - A platform that makes it easier for the crazies to find each other.
Everyone is born right handed. Only the strongest overcome it.
Fight for left-handed rights and hand equality.
|
|
|
|
|