I was going through some old chat logs and was reminiscing about a former employee called Philip who was a Senior Software Developer in his 50’s and had an attitude problem. In addition to being flippant and unprofessional, he seemed to have the common attitude with some older developers where they seem annoyed that the programming language they specialised in has now essentially become obsolete and are very reluctant to learn new things.
We were coding in C# and SQL, but he has experience in some old specialised languages like MUMPS and had C++ experience in his Commodore 64 days.
My employer always seemed reluctant to sack anyone, so would just leave them to it and hope that they quit one day.
Philip never seemed to ask for help so would just write comments on the Work Items that he couldn’t do it, would spend hours procrastinating at his desk, and sometimes fell asleep.
When he did socialise, he would come up with random stories that seemed far fetched.
Chilling
Our software is large and complicated so we have a batch file called BuildCompleteSolution which used to take about 40 minutes to complete. You only needed to run it when there’s major updates/breaking changes, but Philip seemed to run it everyday just to procrastinate.
Dean 11:45: he's moved to another team but when i saw him the other day he was building complete solution Me 11:45: what's he doing? back working with his old software? Dean 11:45: apparently he's working for Digital we've never heard of it our theory is that they've set up a dummy company to distract Philip Me 11:46: probably just a sister company they have made, then gonna announce redundancies “this month, we have closed Digital and the Venezuela office”
Me 14:52: I like how Philip often runs Outlook rules. It's like his new buildcompletesolution seems to take an hour to process Jim 14:53: :D. He's very set in his ways. And very vocal about them. Me 14:54: looks like he is doing a noob c# course on pluralsight he didn't learn from his years of experience with my team Jim 14:54: Really? He's finally stopped programming in the 80s? How are you checking this? Me 14:56: I can see his monitor Jim 14:56: Ah. Me 14:57: seems to be going through data structures like dictionaries and arrays and his progress bar on outlook has been there for a good 15 minutes and has gone from 80% to 95% I often see him sitting there idle, watching the progress bar
Me 15:48: looks like Philip is taking his time deciding if he should purchase some Nik Naks Paul 15:48: LOL Me 15:48: what do you think his favourite flavour is? I reckon Scampi Paul 15:48: Nice and Spicy Has to be Me 15:49: or maybe he hasn't decided he will abandon the purchase and just buy Monster Munch Paul 15:49: Is he doing his online shop?? Me 15:49: ooh I think there's Twiglets now Paul 15:49: Choices choices Me 15:55: I think he has given up coding, and shopping instead
Mary 15:19: look at Philip HORIZONTAL! Me 15:20: just messaged Matt about it he has readjusted now Mary 15:20: did u see him fall asleep the other day!? 😐 Me 15:35: no Mary15:35: that was FUNNY his head kept on falling LOOOOOL
Updates With Attitude
Matt: "Philip, so what did you do" Philip: "CARRIED ON LOOKING AT IT NEXT!"
“Argument with UX. They want the text to be sentence casing, so I said NO”
Philip’s standup update
Philip added a comment. Technical Authors decided on some changes. I need to find out how to change the text on the buttons for the dialogue box, if this type of dialogue can handle such. Wouldn't it be nice if anything had any sort of documentation available. Guess we can all dream.
Philip added a comment. Looks like another hijacked job. The code has been moved around. Thu, 01/10/2015 11:19
“I was constipated all day yesterday and the day before”
Philip
Tall Tales
Me 09:06: because the Columbians don't want the world to know what their real coffee tastes like, each bag comes with 6 months jail sentence #PhilipsFacts Dean 09:08: lol what? Me 09:12: Jim says he remembers Philip telling that story about 5 years ago if you try smuggle their proper coffee out of Columbia, then you get thrown in jail I wonder how many of his stories are true might have to search Snopes for it saying you can't take their "real" coffee out of the country, and the only coffee you import is lower quality
Me 09:44: Philip is talking about curries again rats and cats found in the freezer Dean 09:45: haha what Me 09:49: A takeaway got shut down for selling cat curries #Philip'sFacts "most of the curries are Portuguese"
Philip's mate drank 2 bottles of vodka, took his clothes off and went to sleep in the hospital car park. His blood-alcohol level stopped him dying of hyperthermia Dean 12:44: haha i have heard of that kind of thing happening before Me 12:45: I like how he went to sleep in a hospital car park in the case that he does get in trouble, a doctor may save him Dean 12:45: clever
I wish I could remember more of his tales. There was one about a casino scam with the poker player stacking his chips comedically high. Then another about censorship in cartoons with characters headbutting each other.
Miscellaneous
There was a new communications platform we were trialling, and as a Job Role, Philip set his job title as “Low-paid grunt”
“hope you’ve gone to a much better place”
Philip written in Leigh’s leaving card
One time, IT updated our Desktop wallpapers and in my opinion was only marginally brighter than the previous one. However, many staff members complained, including Philip.
“So the attitude is to kick everyone in the head for the sake of a couple of people, not the least bit friendly.
I have a stigmatism in both eyes meaning that backdrop is physically painful to view and so has been removed.
Just this place has a Health Plan, not “Plan to ensure no health possible”.”
Me 13:46: Philip came back from lunch completely bald. Now he is googling hairdressers I wonder if he is regretting his decision Daniel 13:47: haha Me 13:47: “can you rollback my hair please?”
I always find it interesting when people work in a particular job then get promoted into management. It’s a completely different set of skills and if it’s a fair promotion, the idea of getting so good at your job, that you no longer do that job anymore; is another illogical aspect of it.
One thing that always amazes me is when people make decisions that they know are a bad idea from their experience doing the job.
When I worked as a software tester, my view is that we were essentially there to find any bugs that exist.Part of finding them is to document how to recreate the bug so that developers could fix it. Extending this process so it’s more complex, more stages, or involves more people – causes people to not want to find bugs.
There were times where I witnessed people do the bare minimum and they would ignore bugs that didn’t appear severe to them.
One of the worst people I’ve worked with was an average tester who wanted to become a Test Manager, and he ended up trying to make the process more complex and often announced changes in a condescending way.
When testers found a bug and wanted to investigate it, they would often try to recreate it, sometimes under different scenarios to work out the scope and impact of the bug, then will tell a developer their findings and only then get it logged.
Therefore there was a delay between finding the bug and actually logging it. So we got an email from the Test Manager like so:
All,It is important that as soon as you discover a defect, you raise a defect for this BEFORE you speak with the developer. Any defects raised can easily be closed if they have been raised in error or discovered by the developer to not be an issue. We run the risk of releasing with defects that could potentially cause serious issues for our customers.
I understand his point that – if managers are checking the system to see what bugs are outstanding and they don’t see them all, then potentially, the software could end up being released with bugs. However, the process started getting worse from then on:
Please can you include myself and Becky on any emails that are discussing a defect with a developer. This is so that we are both kept updated with any defects that could cause issues. Also for every defect you raise, I’d like an email to myself and Becky with the follow information : -- WorkItem ID - Title - Area - Any other information you feel relevant.
So now when we discover a bug, we had to log it straight away without the investigation, email two Test Managers, then copy in any further emails to them. Then as more information is known, update the bug report, and making sure we also had an appropriate workaround if the bug did get released (or is already released).
All,When you are filling out the SLA tab for a defect you need to ensure that if you’ve specified that there is a workaround available that the Workaround box is filled in with the Workaround.
If you’ve raised any defect that is a Severity 3 this MUST be fixed before the branch is signed off. This is our exit criteria, we do not sign a release off with any Sev 1, 2s or 3s. if the developer disagrees with this, escalate it to myself and Becky and we’ll deal with it.
Often when we logged a bug, he was either emailing you or comes to your desk to ask why you haven’t triaged it with a developer yet. Sometimes he did that within 10 minutes of you logging it. So he wanted you to log it before triaging, but would then demand that you triage it even if you haven’t had chance to contact an appropriate developer.
You’d also have other test cases to run which he was always on your back to give him constant status reports. It was hard to win because if you have tests to run and have found bugs, then he will want you to triage them but sometimes helping the developer could take hours which means you aren’t testing, so he will be asking why you haven’t run your tests.
That level of micromanaging and demanding updates wasn’t great for morale and also encouraged Software Testers to stop logging the bugs they found because it just added to their own workload and stress.
It seemed better just to steadily get through the tests, but I suppose if you didn’t want to log bugs, then what was the point in actually running the tests? I did suspect some people just marked them as passed and hoped there wasn’t an obvious bug they missed.
Recently, our CEO has become obsessed with the idea of “Growth Mindset” which she seems to crowbar into all her company updates, and we received a talk from an external speaker. The actual talk seemed like a lot of waffle to me, but the general idea sounds like the type of life lessons that Simon Sinek says (he calls his philosophy “The Infinite Game“). Although I normally think ideas/mentality like this are pretentious, I respect Simon and I think there’s probably something in this way of thinking, so shouldn’t be put off by the external speaker’s presentation. Many colleagues stated they were aware of the idea of Growth Mindset and cited the book “Mindset” by Dr Carol Dweck.
Join us on the latest and most exciting stage of our journey with Growth Mindset. We have been working with the NeuroLeadership Institute on embedding a growth mindset culture in order to increase employee engagement, equip our people with tools and techniques for personal and professional development and to help everyone in the organisation navigate change. We have been running Growth Mindset sessions with our leadership team since September last year and we will be making a set of incredible tools and resources available for everyone to benefit from.
Company announcement
Growth mindset is thinking that every day is a learning experience and you don’t know everything. When you change your perspective, it changes outcomes. You have to allow for failure which is a learning opportunity. Don’t strive for perfection. In Software Development, you may never release software if you always strive for perfection.
“Growth Mindset can be applied to all aspects of your life. It’s easier to think about what a growth mindset is by thinking about what it isn’t. So if you think about a fixed mindset, a fixed mindset says this is the way it’s always done and this is the way it will always be. I can only do this, I can’t do that. I don’t want to share. I don’t want to learn. I’m in my swim-lane. I’m not getting out of it, and I’m not interacting with anyone else. A Growth Mindset is the opposite of all of that. It’s like, we’ve done it this way, but there are other ways to do it. I can learn to do anything. I believe that I can learn to do anything that I put my mind to. It’s genuinely sharing in other people’s success, making it not just about you. The fact that other people have achieved something based on what you’ve kind of started or an idea that you might have had. Let yourself be happy about other people’s success.“
NeuroLeadership Institute
The application of a growth mindset is not confined to any single aspect of life. It can be equally impactful at work, in personal relationships, or in pursuing personal hobbies and interests. The concept of a growth mindset is a transformative and powerful approach to personal development. It’s the belief that one’s abilities and intelligence can be developed through dedication, hard work, and perseverance. While we may have inherent talents, our abilities are not fixed. Unlike a fixed mindset, which limits potential and discourages risk-taking, a growth mindset thrives on challenge and sees failure not as evidence of unintelligence but as a springboard for growth and for stretching existing abilities.
I believe the growth mindset is an antidote to cynicism. I hate cynicism – it doesn’t lead anywhere and worse than that it spreads. Nobody in life gets exactly what they thought they were going to get. But if you work hard, smart and you’re kind, amazing things can happen!
Joshua (colleague)
A new scheme, which I expect to be fairly short-lived is the idea of mentorship. Several people across the business put themselves forward to be a mentor and one person could ask them to be their mentor. To put yourself forward, you had to create a profile of your skills to show what you were offering mentoring support on. One colleague came up with the following:
Key skills, experience and behaviours:
Growth Mindset
People Management
Interpersonal skills development
Commercial awareness and negotiation
Presentation creation and delivery
What sort of person puts “Growth Mindset” at the top of their list of skills? Surely number 1 should be your top skill. Seems like he is just sucking up to the CEO.
A few years ago, my employer came up with this idea of “Employer of Choice” which sounds like they wanted to be classed as a “Best Employer to Work For”, but it’s more of a self-award. At its core, it’s about listening to employee feedback and implementing it, but I never think there’s that much scope really. Surely no matter what the pay is like, people are always gonna want more. Same with benefits, amount of annual leave etc.
”This is a business critical programme with a number of Senior Leadership-sponsored work-streams that are focused on making us an employer of choice; where we attract, recruit and retain the people we need, enabling everyone to be their best self and deliver high performance.”
During all the development updates, they were hyping up the changes they made no matter how trivial. There were some beneficial ones which some people really benefited from, such as improving maternity and paternity leave conditions.
“50 colleagues are working behind the scenes in the employer of choice programme”
Comments are useful
I did critique how the survey was a simple scale of 1-5 but comments were optional. Surely the comments are where the key data lies, so they should be mandatory. Despite the managers claiming that they learned this from the first survey, the next survey was completely unchanged. They also said it was difficult to collate the feedback, since they had hundreds of free text entries and had to try to categorise it. Or that was their excuse not to act on it. Yet they still claimed they did implement a lot, and just looking at the feedback was “insightful and empowering”.
“Cynicism around such surveys and their purpose is understandable when there is little to show for the amount of feedback submitted but, as I say below, you can see how powerful the data can be through the series of enhancements driven through the Employer of Choice programme. I also know that it has helped initiate change locally with managers finding the personalised dashboards particularly insightful and empowering.
The more responses and open comments we get, the richer the data set will be. This will ensure that the Employer of Choice programme can continue to focus on the right things and make informed decisions based on your experiences, suggestions and insight, and managers have the data to share with their teams and agree on local actions together.”
Starlight Session
There was a meeting with the pretentious title of “Starlight Session”. This sounded like it was specific to the Development department. Even though they hyped it up, they didn’t disclose what was actually discussed or implemented.
“Yesterday I had the privilege of hosting the second in our wider leadership team strategy session. This session brings together the Senior Leadership team in the Development department, and their direct reports to tackle challenges that we face in the department.
Whenever I work with this team I’m reminded of the depth of expertise and commitment we have in our business. I feel upbeat and positive about the things we’re doing and have achieved together.”
Wizard of Oz style
One of the managers leading the Employer of Choice changes was talking about making the Benefits Portal more helpful: “we trialled the use of chat bots….however that process was very manually intensive”
How can the process be manually intensive? was it the classic “Wizard of Oz style” where it was actually a person pretending to be a computer!?
Employee Reps update
We were supposed to give suggestions to our Employer representatives who then met with the managers to discuss the feasibility of our requests. We haven’t heard from them in months despite them promising to provide monthly updates.
So over the last 3 months, here are their achievements:
(On the subject of Optician Vouchers, they gave this incoherent rambling)
“We contacted the voucher provider who confirmed they will accept vouchers that are from opticians not listed on their portal if they accept them. We also changed the wording on the portal to advise staff should contact their opticians to see if they will accept the voucher.”
is the process that the voucher provider gives you a voucher. You give it to the optician. They then claim the money from the voucher provider. So we needed to know if the voucher provider would accept the vouchers from unspecified sources. But then surely the optician needs to contact the voucher provider if there isn’t a pre-existing agreement between them, otherwise the optician will just reject it. so I think what that post is saying, is that you should just ask the optician if you can use it, which is pretty standard really.
“Increased visibility of employee reps”– they attended a company event…which was mandatory. And they didn’t present anything, they just attended. We are being completely fobbed off here.
One employee rep won a raffle at the company event.
We are really clutching at straws here. Literally nothing has happened over this time.
Old Employee Forum
I found some notes on when we had a suggestion box, and occasionally got updates on these. Someone suggested we have newspapers in the canteen “preferably a range of broadsheets”. This got declined
due to the high turnover of staff (not staying in the canteen for extended periods of time)
additional weekly cost
WIFI available to use smart phones
Surely the amount of staff that go in means the newspaper is a good idea. Why would they reject it based on cost. You’d only really need about 5 newspapers which is a trivial amount of money considering how wasteful they are in other areas. It just shows you that there isn’t much intent to listen to staff.
Team of the Year
When it came to our annual awards ceremony, the Employer of Choice team won one of the awards. That seems a little biassed to me. The directors created this team, and it’s the directors that are dishing out the awards. There could have been a chance that they deemed it a failure, but it seemed predictable that they would win: who made the biggest impact? Well, maybe the team we designed to create the biggest impact.
Apart from the fact they didn’t really make an impact, like I discussed.
Each year we have a “Learning At Work Week” where there’s usually a few optional meetings where people either do presentations about their department, or some “soft skills” like management advice, or some philosophy like Growth Mindset. Then you are encouraged to use resources like LinkedIn Learning.
I never get involved and just carry on doing my work as usual. This year, I received an email:
Good morning, We are in the process of putting together a social media campaign around Learning at Work Week, and we’ve seen that you’re a regular user of LinkedIn Learning. We wondered if you’d be happy to share your experience and answer the following questions for us to use as a quote in marketing (e.g on the website and on our socials)?
What is your name and job title?
How often do you use LinkedIn Learning and what do you use it for?
Why is it important to you that you get the opportunity to continue learning and development at work?
Feel free to add any further details you want to include!
If you are happy to be involved, please can you send me your written answers to the above questions by the end of the week, along with a photograph.
I watched some of the playlists they put together that were on the topic of our company values. I watched the playlists that were compiled by the Development department about Cloud Technologies. Then I watched some about woke issues they also told us to watch, like on Unconscious Bias. Our company is massive and I know there are plenty of people that will want any excuse to chill and not do work, so I was extremely surprised that I was one of the top users. I would say I have rarely used it, and often forget we are even signed up to it. If I am one of the top users, then that means we must waste loads of money on it and should probably just get rid of it.
So my answers would be:
Senior Software Development Engineer
Never really use it. Just watched a few courses on wokeness for the bants. Then a few on Cloud Technologies and Entity Framework.
LinkedIn Learning is not important, and mainly for chillers.
I asked Bing Copilot to write me a humorous response. This is what it came up with:
Good morning,
Thank you for considering me for your Learning at Work Week campaign. I’m flattered to be mistaken for a LinkedIn Learning aficionado! While I may not be the power user you envisioned, I’m all for learning and development. To be candid, my engagement with LinkedIn Learning has been more of a casual flirtation than a committed relationship. I dip in occasionally, like a cat circling a fishbowl, pondering whether to take the plunge.
As for my job title, let’s go with ‘Aspiring Knowledge Sponge’ – it has a certain ring to it, don’t you think? The truth is, if I’m one of your top users, it might be time to audit those subscription numbers. It seems there’s more ‘linked out’ than ‘LinkedIn’ in our company’s learning stats!
Nevertheless, I believe in the power of continuous learning. It keeps the brain nimble and the skills sharp, like a Swiss Army knife in a world of plastic sporks. And who knows, maybe this email will spark a renewed zeal for e-learning in me. I’ll aim to send you a more detailed response, along with a headshot that hopefully doesn’t break your camera, by the deadline.
A few years ago, I was talking to my manager about how we have a lack of people that like to perform Code Reviews, and it needed to change. He said since I had gained a reputation of being a good code reviewer, maybe I should do a presentation. I said it probably wasn’t that easy to come up with something generic and it needs a lot of thought. Maybe I would attempt to write a guide one day. Over the years, I have bookmarked a few blogs, collated some notes and ideas; but never put them together. So here is my attempt.
What Does Code Review Mean?
When a software developer has code they think is ready for Testing, they need to commit these changes to the main branch. Before this happens, there is often an approval process by their peers. This is the Code Review. The Github terminology is Pull Request. I’ve always found that to be a strange name.
Andy: pull requests?! since when do we use that term? Me: when nerds go dating
I suppose you could say the aim is to attempt to perfect the code. But “Perfect” is not defined; does perfect code even exist? The goal is to always write better code.
There’s the 80/20 rule of Project Management which states that 80% of the feature can be written in 20% of the time; but then to perfect it, it then takes the remaining 80% of the time. Sometimes you have to be pragmatic between programmer effort and actually delivering features on time.
Code Reviews are a great opportunity to learn either as a reviewer or the reviewee. Receiving questions, suggestions, or instructions from your team members help you learn about the programming language, design patterns, common practices, alternate ways of approaching problems, or learn about the actual domain. As the reviewer, you are practising critical thinking and essentially debugging in your head which is a skill you will be doing every single day; since more time is spent reading code than writing code.
We all benefit from an extra pair of eyes. Sometimes you think you have written some great code, and keep reading over it and think it is fine. Then another team member glances at it and spots improvements which you agree on. I’ve seen plenty of smart developers write poor code which I know they would flag up if their colleagues wrote it.
Looking at Code Reviews helps team members gain context on other pieces of the code base. Having more awareness of what code is changing gives you a headstart in fixing future bugs when you know exactly where to investigate.
Code Reviews take time, and time is money. Formal reviews are costly; that cost has to be justified by the nature of the software project. Delaying new features and bug fixes can have an impact on users, but also other team members due to higher code churn causes merge issues when it is checked in. The longer code changes stay in a branch, the more likely you run into these merge issues.
Readable code
I have heard some developers say “reading code is way more difficult for me (than writing)”. Given that programming actually involves more reading than writing, then I think developers that struggle to read code need to be questioned!
Since code is read many more times than it is written, you need to write code that is easily read by humans. If we were writing code just for the computer, we’d be writing in binary. Programming languages are meant to communicate to humans first, then computers after that. Although you don’t want to be too verbose, if you are optimising for the fewest lines of code; you are probably optimising the wrong thing.
Tone of your comments
The art in reviewing is to flag all possible problems, but you need to be careful how you word comments because finding problems in someone’s code can be seen as a personal attack, and people can feel like you are questioning their coding abilities. Reviewers can easily come across as condescending and demoralising their team members. The aim of the review is to improve the code, and grow your team member’s skills. It’s not about the reviewer’s ego or a chance to show off.
However, developers should take pride in their work, so attempting to submit some code that took no thought probably deserves a wake-up call. The severity of bad code can differ between systems. Does the software involve the potential loss of life (e.g. a medical device, vehicle safety system) or the handling of millions pounds of assets? Or is it a simple command-line utility that your colleagues use? In these severe situations, I can understand how reviewers lose their patience and write brutal comments. See Brutal PR Comments section.
The reviewer often holds a senior position, but could also be on the same level as the author. Regardless of any power dynamics, you need to bear in mind the author may have way more context and be involved in other meetings about the work; leading them to write the code in the way they did. Given that possibility, it’s better to phrase comments as questions rather than stating something with authority. Instead of “You should do it Y way” you could say “Can you talk about your reasons for choosing X? In most cases I’d use Y, is there a reason not to here?“. This approach comes across as more collaborative and friendly. In the case your suggestion was correct, they should realise when they try to answer. In the case that you are wrong, they can explain the additional information they have; and so all participants can learn.
You don’t always have to be negative as well. You can even add comments to add praise, or to admit that you learned something by reading their code. A bit of positivity helps negate any negative tone you had in previous comments.
Reviewers are empathetic that the recent joiner might not be aware of all the coding guidelines especially ones that are informal ones (not written down anywhere). Reviewers are also well aware that a new joiner is still ramping up with the codebase, and won’t be up-to-date with conventions and functionality.
Where To Start:
Sometimes I just dive straight into the code and start reading. Sometimes this can give you the best judgement to whether the code is clear or not. If it isn’t immediately obvious, or the code looks/”feels” strange, then I will try to gain more context. I read the Title, I read the description provided. I look at the linked Bug/Requirement and read the information that the developer had, and understand the problem they were trying to solve.
To get an overview of the change, you can glance at which files were changed/added/deleted. Sometimes reading the folder names gives you more context. Are you looking at client or server code? Are there database changes? etc. Do the files match up with what you expect; maybe they added a file by mistake. Maybe they added some temporary “hack” they made to test their code and haven’t deleted it.
Read In More Detail
Two questions to keep in mind are
• How could I improve that?
• What could go wrong?
You can review it by two approaches: readability and functionality.
If you can’t understand that code now, in one year you won’t get it either. If code is hard to understand, then it is harder to change, and more error prone. An easy thing to look for are typos, unclear names (“Variables with intent”), ambiguous names, wrongly named code.
Small functions are easy to read, are less likely to need code comments, and also easy to test. You can look for large functions and consider if they can be broken down.
If there are code comments, are they needed? Do they add value? Comments are good to explain hard-to-read code, or weird design decisions the author made because you can’t think of a better solution. Maybe there is a way to make the code more readable without the comments.
Does the code conform to your “coding standards”. An example can be casing eg:
// camelCase
// PascalCase
// snake_case
// kebab-case
Your team may have other rules about styling such as:
“returning early from methods”,
using certain syntax,
Keep argument list small.
However, if a given piece of syntax should never show up in your codebase, you should really add an automatic “linter” rule that will either flag it, or automatically fix it. It’s a waste of time to make this a manual process and it doesn’t provide a ton of value. You could say “if it’s not worth it to add the rule; then it’s probably not worth it to highlight it in the code review either”. Not all things can be linted though such as coming up with good names for variables/methods/classes.
Sometimes, you may have a recommendation that should not prevent the code from moving forward, but you want to note anyway. Marking these things with a prefix such as “NB” or non-blocking can be a great way to flag a small annoyance that the author can ignore if they don’t want to fix now. You might do this if you don’t feel too strongly about the issue, or think it’s not worth holding up the change. You always need to remember to be pragmatic.
A little code review habit I appreciate:
When my teammates make a minor suggestion, they often prefix it with "Nit:"
It's a short, polite way to say "I know this is minor, but I suggest changing this."
Useful for misspellings, typos, naming suggestions, etc
The functionality approach would be considering code for how it meets the requirements, as well as “non-functional” requirements like scalability and security. Is there any code that is redundant or duplicated? Are there any obvious bugs like the classic Null Reference or Index out of bounds? You could also ask yourself “How would I have done it? Is it my way better? Could that logic improve the current one?”
Has the person added any Unit Tests, and if not, can they? If tests have been deleted, is this the correct thing to do?
Does this change impact another system?
Are errors handled correctly?
Is the functionality over-engineered? Are there new third-party dependencies that are unnecessary?
Are they using a design pattern incorrectly?
Does the feature cause problems as the number of users scales? It might work on their machine, but will it work in live?
What should I do when I don’t know the language of the code?
There can be scenarios where you don’t know about a certain coding language or technology, but you have to review it. You can make it clear that you have limited knowledge before making comments. If there is no automatic linting on the code, a good starting point is the superficial review: look for typos and well-name of variables. Try to ask questions so you can learn, and also check their understanding. Sometimes asking questions gets them thinking and they find flaws in their own code.
A related point to make here, is that if someone is writing in a language they aren’t fluent in, they can write against the convention. We had a developer writing C# but was fluent in C++, so we often see him write If statements backwards like: “if (false == value)” which is a c++ naming convention.
“If you’ve ever seen Java code written in a C++ style or vice versa, you’ll know what I mean. I’ve previously referred to this in terms of speaking a language with an accent – you can speak C# with a Java accent just as you can speak French with an English accent. Neither is pleasant.” – Jon Skeet
Approve/With Suggestions/Reject
Once you have written your comments, you can set an overall status of the review. The terms differ depending on the system (ADO/GitHub etc) but it generally follows Approve/With Suggestions/Reject.
It’s possible to select an overall status that doesn’t match your comments.
Andy rejected the pull request The change is implemented perfectly, I’m just thinking we could alter the design slightly to provide better flexibility.
One developer explained his process of what he selects. So he can Approve, but also leave comments. But that is a different message from when he uses the “With Suggestions” and leaves comments.
The way I do code reviews is as follows · Just comments – I’m starting a conversation on the change, and will Finish it later, usually I am expecting you to reply, so feel free to reply to my comments. I usually choose a “finish reason” after discussion. · “Looks Good” – just check it in. · “Looks Good” + Comments – just check it in but I had something to say. · “With Comments” + Comments – there are minor things, style/formatting that I'd like changing, please make where appropriate (I can be wrong) and check in. I don't need another review. · “With comments” + No comments – I am agreeing with someone else’s comments, or if I was first, I probably clicked the wrong button - check with me for clarification. · “Needs work” + Comments – Please make the suggested changes and submit a new Code Review. · “Needs work” + No comments - Agreeing with someone else’s comments, or if I was first, I probably clicked the wrong button - check with me for clarification.
Brutal PR Comments
John If you want something done, do it yourself. Yesterday at 10:06
John Well, this shows that you did not even attempt to OPEN the DB Utility Tool, let alone test via the DB Utility Tool. It would crash opening this. Line 351 | 5 hours ago
John I have not reviewed any of the C# code, I expect it to be as depressing as the DB code though. 5 hours ago
John What the hell is this doing in here? Also why have you stopped inserting the ONE important thing from this trigger - the change to the organisation! Line 101 | 5 hours ago
When To Do A Project Review
When it comes to merging an entire project, this can consist of hundreds of files. Despite being reviewed by team members, the final merge will be reviewed by an Expert. We have tried to get Experts involved early in the projects but since it can take a long time and the deadline can be far away, they aren’t inclined to do it. Then when you want to release it in the next few weeks, they will review it and dump loads of comments on it, blocking the merge.
“This is taking a long time and there are quite a few problems with it, nothing that can’t be fixed in a week or so, but some things that should have been flagged up by someone / thing before it gets to me. This process has to change.” – Expert
You probably need to ensure that each team has an Expert Reviewer in the team, so that quality reviews are done throughout the project. We often didn’t have teams structured in this way.
“they need to stop having teams that don’t have at least one person who knows what they’re doing” – Dan
One of my colleagues wrote the following about this issue. He often gets blamed for holding up projects when he is being asked to review with limited time. Any feedback he gives then blocks the project, and if he doesn’t review in time, then he also blocks the project:
Mike’s Pull Request (PR) ideas
For the most part we are doing a good job with pull requests, but occasionally I feel we can do better. I’ve thought of some useful guidelines, that will ensure quality, again most people are following these, so great job, but please keep them in mind PR Guidelines
Your team should be self-sustaining:
As a developer you should always be able to send your PR to someone in your team for a thorough review.
If you’re regularly having to pull in external resource to review your code, you should make your team leader/scrum-master aware, so they can discuss this with resource managers.
Code should always be reviewed internally before someone external to the team is added to the review, this ensures that the external reviewer only sees code which has survived the initial review pass.
If external expertise is required:
Let your team leader/scrum-master know that expertise is required, identify the person with expertise and contact them to let them know you will require their time, preferably a sprint in advance, so they can discuss with their team and prioritise time in the next sprint.
Your PR is not “urgent” unless its SLA is at risk of expiring.
You are not to refer to external reviewers as “a blocker”. If external expertise is required, then it is an essential part of the development process, and they are only seen as blockers due to poor planning.
Draft PRs are not very useful to external reviewers, since you can only comment on them: not approve, but they’re great for sharing day-to-day progress updates between remote developers.
They should be used to update your team’s senior developers and technical architects on your progress, and receive feedback.
I would say in a well-oiled team, that developers should share code each day, by some mechanism that makes it visible to their seniors for feedback, this ensures valuable short feedback-cycles and is the most cost-effective way of ensuring quality during development
Respect the reviewer
I think a key takeaway from this idea is that you need to respect the reviewer. They are kindly dedicating their time. You also need to understand that the review process is there to improve code quality and not just a box-ticking exercise.
I find that sometimes people create a review, then instantly message you about it – even though you are often notified through alerts you have set up, or will check your review list when you have free time. Being nagged is not nice.
There have been times where I have submitted comments then am messaged a few minutes later asking to re-review. If you ask that quickly, then I know that you didn’t even build your changes never-mind test them to see if they work. Should I really approve something you took no care with? (Maybe a 100% unit tested solution would mean that this is possible though).
We also usually have a rule that 2 people need to review, so even if I approve it; then it still cannot go in, so I hate being nagged to approve when there is time. Sometimes code needs more thought to consider if there’s more aspects to it than initially thought. A rushed review isn’t a quality review.
Making statements like “please approve this, it needs to be released tomorrow” isn’t good for the reviewer. I want to be able to review it properly, leave comments as I wish, and even Reject it if I really don’t think it will work.
Conclusion
If you see reviews as just a box-ticking exercise, then it defies the whole point of the review. It really needs buy-in throughout the team. If you want quality and continuous improvement, then support the review process. If you want speed, then it can be sacrificed at the expense of quality, and other benefits.
The code review process has a wide range of benefits and outcomes: teams see improved code quality, increased knowledge transfer within and across teams, more significant opportunities for collaboration and mentorship, and improved solutions to problems.
In my blog How To Make Your Team Hate You #3, I wrote about Barbara, a Tester who I used to work with that caused a lot of conflict and was constantly trying to get out of doing work, whilst taking credit for other people’s work.
Recently, when going through old chat logs, I found some brilliant “dirt”, which, in hindsight; I could have probably used to get her sacked because it was fairly strong evidence that – not only was she not doing work; she was falsely passing Test Cases. When you are paid to check if the software is behaving correctly, claiming you have tested it is very negligent.
When running test cases, if you pass each step separately, and haven’t disabled the recording feature, Microsoft Test Manager would record your clicks and add it as evidence to the test run.
I think the feature worked really well for web apps because it can easily grab the name of all the components you clicked, whereas on our desktop app, it mainly just logged when the app had focus and read your keystrokes.
The bad news for Barbara, is that she liked going on the internet for personal use, and liked chatting using instant messenger as we will see.
The Remedy
Type 'Hi Gavin. ' in 'Chat Input. Conversation with Gavin Ford' text box Type 'Hi Gavin. I've been telling everyone about this concoction and it really worked wonders for everyone that's tried it, myself included. This is for cold, cough and general immunity. 1 cup of milk + 1 tablespoon honey + 1/4 teaspoon of turmeric - bring to a rolling boil. Add grated root ginger (2 teaspoons or 1 tablespoon) and let it boil for another 5 mins. Put thru sieve and discard root ginger bits (or drink it all up if you fancy), but drink it hot before you sleep every night and twice a day if symptoms are really bad. Hope you feel better soon. 🙂 ' in 'Chat Input.
Pumpkins & Tetris
Type 'Indian pumpkin growing{Enter}' in 'Address and search bar' text box Type '{Left}{Left} {Right} {Left}{Left} {Up}{Up}{Up}{Up}{Up}{Up}{Left}{Left} {Up}{Up}{Up}{Right} {Up}{Up}{Left} {Right}{Right} {Up}{Right}{Left}{Left}{Left}{Left} {Right}{Up}{Left}{Left}' in '(1) Tetris Battle on Facebook - Google Chrome' document
Me 11:26: Barbara has been doing the Assessment regression pack for 3 days she says there is only a few left in this morning's standup. There's 15 left out of 27 Dan Woolley 11:28: lol Me 11:29: I don't even think she is testing them either. It looks like she is dicking about then clicking pass Click 'Inbox (2,249) - [Barbara@gmail.com]Barbara@gmail.com - Gmail' label Click 'Taurus Horoscope for April 2017 - Page 4 of 4 - Su...' tab Click 'Chrome Legacy Window' document Click 'Chrome Legacy Window' document Click 'Close' button Click 'Paul' label in the window 'Paul' Click image Type 'Morning. ' in 'Chat Input. Conversation with Paul' text box Type '{Enter}' in 'Chat Input. Conversation with Paul' text box Step Completed : Repeat steps 6 to 19 using the Context Menu in the List Panel End testing
Next Day
Me 12:42: Barbara said this morning that all the Assessments test cases need running. She has just removed them instead
Greek Salad
Type 'greek salad{Enter}' in 'Chrome Legacy Window' document Type 'cous cous salad' in 'Chrome Legacy Window' document Type 'carrots ' in 'couscous with lemon and coriander - Google Search ...' document
Click 'Vegetable Couscous Recipe | Taste of Home' tab Click 'Woman Traumatized By Chimpanzee Attack Speaks Out ...' tab
Marshall 11:50: oh damn haha these are things that were inadvertently recorded? Me 11:51: yeah Marshall 11:51: ha you've stumbled upon a gold mine Me 11:53: I don't think she is actually testing anything. I think she just completes a step now and then the other day Rob went to PO approve an item and he couldn't see the changes because they hadn't even patched
Haven’t Been Testing From The Start
we are in Sprint 8 and Barbara suggested Matt does a demo on the project so we know how it works; it’s a right riot
Me. 4 months into a project
Bad Audits
I wonder if Barbara was inconsistent with how she ran the test cases, or realised by the end that it tracked you. So near the end of her time, she was just hitting the main Pass button rather than passing each individual step. Managers liked the step-by-step way because if you mark a step as failed, it is clearer what the problem is.
Me 16:15: Barbara called me. Matt is monitoring our testing! Dan Woolley 16:15: how? Me 16:17: looking at the run history she said he was complaining it wasn't clear which step failed because we were just using the main pass button, and also bugs weren't linked when they had been failed I told Barbara I linked mine, then she checked and said it was Sam that didn't. I checked and saw it was Sam and Barbara so only the developer did testing properly 😀 you just can't get the staff
Obviously The Wrong Message
Me 09:12: Bug 35824:Legal Basis text needs to be clear what's all that about? Barbara Smith 09:12: Charlotte asked me to raise it for visibility We need to fix the text that appears on that tab Me 09:13: what's wrong with it? Barbara Smith 09:21: It says that on the Bug LOL And with a screenshot (mm) Me 09:22: it says "needs to be clear" and has a screenshot with a part of it underlined. But it doesn't say what the text should be instead.
She rarely logged bugs because she did minimal testing. Then when she did log something it didn’t have enough info to be useful.
Karma
Barbara got well conned in the end. She was gonna take the entire December off but delayed it for the end of the project and then she has been told she has lost her job, so they are telling her to take the holiday now. She had just bought a house so would be relying on the money for the mortgage payments. Luckily for her she got accepted for a new job, but she was looking for a brand new way of getting out of it, as we will see below.
Tax Fraud
Type 'what if I don't contact hrmc about my tax{Enter}' in 'Address and search bar' text box Sam 11:23: Ha ha You are savage Me 11:24: she is gonna get jailed for tax evasion
Recently, my employer has been looking to analyse their impact on the environment and the aim is to become carbon-neutral. A group of people have taken ownership of this idea and call themselves “Green Champions”.
During the launch of our Sustainability Strategy, we announced our environmental goal: “Environmental sustainability is an integral part of our operations and value chain delivered through steady, measurable improvement”.
I find a few of their announcements a bit misleading, or fairly random with what they take issue with.
For example, someone requested a “sharable greeting card” idea. These would either be physical cards people can send, or something similar to email templates we can send to each other for events such as Christmas. This idea was declined.
“Due to the environmental impacts from sending mass communications through mail or email, this will not go ahead“
We keep hearing about how we need to cut down the number of emails we send because of how bad they are for the environment – but I don’t understand the logic.
Me: Why are emails always said to be bad anyway? does sending a Slack message cause the ozone layer to deplete as well? Can you architect me a Green Email system? think this is gonna be the next big idea GreE-nm@il The latest big tech company
Architect: what a load of absolute bollocks! just justifying not spending money if emails are so expensive how much electricity is wasted by the "cameras-on policy"
So emails are bad. Instant messaging is fine. Video calls are encouraged.
Travel
Is that really what we should be focussing on anyway? Recently, the entire UK business travelled to one location for some presentations which we could have easily done remotely. Then a few months later, most of the directors and some senior leaders flew to India to do the same presentations. The amount of emissions caused by all the cars/coaches/planes etc, and all the money wasted on hotels and food expenses is surely a bigger problem than sending a few emails for special occasions.
Cars
We have also replaced all our company cars with electric ones. Discounts were available for people to personally purchase an electric car. We now have charging stations at the office, and it seemed a few people were quite eager to travel to work at the office just so they could charge their car for free. Isn’t that encouraging more unnecessary travel, and increasing the company electric bill?
Whose problem?
“our estate is now fully in the AWS cloud, a huge milestone on our road to net zero”
Green Champion
Isn’t that like dumping your rubbish in your neighbours garden?
This brings us to another point. If you have transferred a carbon footprint from one company/person to another, then the problem still exists. We claimed that moving our servers from on-premise to the cloud has reduced our carbon footprint. The servers are still there though, they just belong to a different company. There could be savings elsewhere though because our servers were on 24/7 but a big selling point of the cloud is that you can use auto-scaling (high demand uses more servers, low demand then uses fewer). Surely you can use this feature on your own servers though; it was just that we didn’t.
Are Electric Cars even environmentally friendly?
Let’s call upon AI to write part of the blog…
Electric vehicles (EVs) have been hailed as a cornerstone of the transition to a more sustainable future, promising a reduction in the carbon footprint associated with personal transportation. However, the environmental impact of EVs is a complex subject, with various factors that could potentially diminish their green credentials.
One of the primary concerns is the carbon emissions associated with the production of EVs, particularly the batteries. The manufacturing process for EV batteries is energy-intensive, often relying on electricity generated from fossil fuels. Studies suggest that the emissions from producing an electric car can be up to 70% higher than those from manufacturing a traditional petrol vehicle.
Another point of contention is the source of electricity used to charge EVs. In regions where renewable energy sources like wind or solar power are less prevalent, the advantages of EVs in reducing greenhouse gas emissions may not be as pronounced.
Furthermore, there is the issue of battery disposal and recycling. EV batteries contain hazardous materials, and improper disposal can lead to environmental contamination. While recycling programs are developing, the infrastructure is not yet widespread, and the process itself can be resource-intensive.
Earth Day Blog #1
A colleague posted an internal blog on what they did for Earth Day.
Here in my local town, they had an event at the Town Hall where lots of local groups gathered to raise awareness and share what they do in particular.
The Thirsk Wombles work tirelessly to clear rubbish from our town. I had no idea what a problem the disposable vape containers are. The Thirsk Wombles have collected a really big boxful in the first 20 days of April and the lady I talked to reckons they will be able to do that and more every month.
I then had a lovely long talk about "North Yorkshire Contented Bee Project" and bought some amazing local honey - very few food miles, masses of taste and it'll help with my hayfever.
Earth Day Blog #2
My personal passions are aligned with the department I work within. I wanted to share today an aligned post for Stress Awareness Month and Earth Day next week about eco-anxiety.
Eco-anxiety (or climate anxiety) is a feeling of distress that comes from thinking about environmental breakdown, based on what we see happening around us.
It is impossible to ignore the information we receive via news, social media etc. that our planet earth is in trouble. We hear information that the planet is warming up, freak weather conditions, wildlife species declining and becoming extinct, overpopulation, deforestation and the list heartbreakingly continues. The effect our modern lives are having on the planet is now catching up with us and it is hard to ignore the information we are seeing. So much is now being documented via TV programmes such as Planet Earth and the The Earthshot Prize initiative.
I, myself, hold my hand up and admit I have feelings of sadness and guilt about the impact modern life is having on the planet. Every day I make a conscious effort to review my recycling, plant more native biodiverse plants, use less aerosol products, review the products used in my home to reduce the amount of microplastics and chemicals down the drain, say no to fast fashion, reduce my heating by 1 degree and have No Meat Mondays.
Despite all this I know I can do more. But where do I start and do my small actions help?
To all of you reading today...every small action helps. As the famous saying goes ….Knowledge is power. I have learnt so much through the Green Champions about what else can be done, alternative products and, more importantly, there is a group of people who have the same passions and feel the same. The Wellbeing Programme and Mental Health First Aiders invaluable content during Stress Awareness Month assists me in navigating through eco-anxiety.
If I may pass on any nuggets of inspiration to you today, it is that you are not alone in any types of stress or anxiety felt. I assure you many people feel the same and change is possible and 100% can be achieved.
Fear of Climate Change - Climate change and the state of nature is having an impact on mental health - Watching the world change sometimes combines with feelings of personal guilt. - Witnessing climate indifference may evoke feelings of anger, powerlessness and hopelessness. Leading to being uncomfortable and overwhelmed - Aligns with Stress Awareness Month and Earth Day - Speak up and seek support. Take action — even the smallest contributions make a difference. - Your feelings are a healthy response to this topic. Our MHFAs are 100% available to talk to. - You are not alone
Closing Thoughts
Eco-anxiety sounds very problematic. How can you live life with that much worry? It’s really not a healthy mindset to have. There’s loads of other issues in the world too. Does she spend all her time crying when she sees food due to child poverty which she has no control over? How many things does she do that are actually bad for the environment but is unaware of? Does she drive an electric car, thinking it is 100% eco friendly?
I’ve written blogs about an employee which I referred to as Beavis, due to his grunt laugh. He is a complete liability and I don’t know why we didn’t sack him ages ago. His constant excuses why he cannot work are obvious lies. He came up with loads when we worked in the office but then when we started worked from home during lockdown, he had a whole new set to go through.
I understand some people can have some bad luck or them or their family members can have health issues, but is it possible for him to be hit with such frequent illnesses and issues?
Mobile phone has problems so can’t use authenticator to connect to VPN
Broadband is too slow
Needs to take his wife’s car for an MOT
Laptop broke
Antibiotics for his dog
Drove down to the village to see the extent of the floods
Optician appointment
Broadband not working
Cracked Laptop Screen
Oven repair
Daughter’s sports day
BT Broadband outage
BT Broadband outage again, and phone tethering won’t work either.
Builder is looking at some “snagging issues”
Throat glands have all swollen up and I’ve lost my voice
Emergency dentist work
Check up following dentist work. Will take an hour total travel, waiting, then dentist time. So at least 2 hours.
A colleague was saying that his line manager isn’t very active so therefore he can send him a message saying that he isn’t coming in, then Nigel won’t have replied to accept his request.
“he uses Nigel’s inability to reply to his advantage”
Isobel: "I have been in contact with Beavis who did the work but he has had to take the day off unexpectedly" Andy: "is it actually unexpected at this point?"
Other People’s Excuses:
“randomly I’ve just got to move some bales of straw. back soon”
Zoe
(one of the top manager’s wife, so gets a bit of leeway to do what she wants):
cleaning dining table
having a shower
in garden having beers
Derek
(also notorious for slacking. I suspected the occasional lie from him too):
I’ll be working from home today, a leaky shower box is causing an unintended indoor water feature, so I’m hanging around for a plumber. Don’t forget to skype me for the stand-up 😉
I’m working from home today. Sorry I haven’t emailed sooner, I had some problems initially remoting in as my computer at work had a dicky fit.
In recent years, we have been progressively highlighting social justice topics at work. With our recent takeover with American owners, they have said it is one of our company objectives to be more Diverse, so expect more over the coming years.
I’ve stated in other blogs that if there is actually a problem to solve, then I am all for it. As far as I am aware, there is no problem with Diversity/Sexism etc where I work.
In Software Development, the demographics is male-dominated in the UK. However, I have found when we have hired women, they might only stay for a few years before leaving, or want to switch to management. I’m tempted to say women seem to be favoured for promotions and requests to change contract (reduced days or working hours). When it comes to Software Testing, it seemed fairly balanced between men and women. Management level seemed predominantly women.
In our India office, women are much better represented in all areas. Not sure of the exact breakdowns but it could be like 5% female developers in the UK, but 35% women in India.
Our head office in the UK is next to a predominantly Asian city so we have a high amount of Asian staff.
So with the new American owners, their constant claims that we need to improve diversity makes them seem foolish and makes me worry they might start making negative changes and introduce new problems. Constantly telling people we need to make things “equitable” and “inclusive”, and questioning how we are supporting certain groups of people – just creates a victim mindset. Spotlighting a certain group is also divisive if you think about it…
Today, on International Women’s Day, we take time out to celebrate the incredible women we work alongside and their achievements. Our commitment to the UN Sustainable Development Goal of Gender Equality is shown through the value we place on the incredible women employed here and their impact, as well as the hugely positive influence we all have on women’s experiences.
This is a place where women have long, successful careers, and with that in mind, I want to inspire women and advocates by spotlighting women’s careers. I am delighted to share their views and experiences in this video and the images below, with even more great content and stories featured here on Sharepoint. Whilst you watch, I’d like everyone to think about what part you play in shaping our industry to be an equitable, inclusive space for all. How do you support women in the industry? In your department? In your team? It's up to us all to challenge gender stereotypes, call out discrimination, draw attention to bias, and seek out inclusion.
International Women’s Day is about raising awareness for gender parity, however you identify, and it’s an opportunity to put a spotlight on the successful contributions women make in our business.
Isn’t the entire post hypocritical? It opens saying how we have incredible women here, they have long, successful careers, then switches tone and implies that we aren’t supporting women and there’s discrimination!
Question: where have you seen the positive impact?
“it’s happening right now. The CEO is inspiring”
Director of Business Operations
In the video, we saw our female CTO who was talking about the company we merged with, also led by a female CTO. We then heard from the “Director of Business Operations” (who I think has been promoted every 2-3 years since she joined), then finally someone slightly lower down the hierarchy, a “Principal Software Engineer”.
So we have examples of women that have had no trouble being promoted. We are led by women, the Human Resources department is 80% women. If we do have a gender pay-gap, or if women struggle to get promoted, then whose fault is it?
One manager replied to the post and used similar statements implying that there is a problem with sexism here.
Woo! Some amazing women right here and across the business, feel so lucky to work alongside some incredible women and for a company that is striving to tackle inequality and find new ways to support women in the workplace!
Manager
So much inequality here. If there is so much, then why aren’t they suing. It’s against the law isn’t it?