Rules to Better Software Consultants - Working in a Team - 78 Rules
Enhance software consulting practices by exploring essential principles that focus on teamwork, communication, and professionalism. Discover key rules designed to foster collaboration and integrity among consultants.
Whenever you're doing something more than once there should be a clear procedure. We call them “standards” or “rules”. That means that there should be lots of standards.
Standards should not be followed blindly. They should always help the critical thinking process, but never replace it. Aim for continual improvement.
There are pros and cons to having standards:
✅ The pros:
- They help speed up the decision making process – getting you to the best decision faster
- They help maintain consistency
❌ The cons:
- They take time to write in a generic fashion
- Technological rules rust easily. Technologies and techniques change often, so you must be on the lookout for the new and better approaches and continually update these
- They have errors as they are written by imperfect people
- People will sometimes follow an inappropriate rule. A set of rules can never predict every path, so cases can and will appear that the standards fail to cater for
Enhancing standards through continuous and collaborative improvement
Never ignore a potential improvement or expect someone else to work on it.
If you believe something can be improved or a standard is outdated, it's important to take action. The best approach is through a team effort, where everyone contributes small improvements regularly.
Whenever you come across a standard which needs updating or improving you have 3 options:
- Fix it yourself straight away and edit the rule (preferred)
- Fix it yourself later if it's too big. In this case, send yourself an email
- Ask someone else to fix it following the change "x" to "y"
When most people say they'll do something, they really mean they'll try to do it, and they don't really worry too much whether they are successful or not, so long as they gave their best effort.
Video: Tips and tricks to maintain your professional integrity in the workplace (14 min)This has a hidden cost, since if you commit to someone and fail repeatedly, even though they may know you're doing your best, they will nevertheless lose trust in your integrity. The next time you commit, they will not really believe that you will follow through.
Bob joins a Teams call 10 minutes late. It goes well but he's not aware of the end time and it goes 30 minutes over, which impacts 2 other people's schedules. He then agrees to send an email with the agreed action points by COB but doesn't get to it until the following day, causing people to wonder if they should be following him up. One person SMSes him about it "Don't forget that email", but he doesn't reply to it for over 2 hours, leaving the other person hanging.
Figure: Bad example - None of these things are that big a deal, but they add up to no one wanting to work with Bob
Jim has reminders set up on his calendar to make sure he makes it on time to his Teams call. With 10 minutes left in the call, he checks if people have a hard stop afterward, and when he finds out 2 people do, he makes sure the remaining discussions that require those 2 people are prioritized so they can leave. He then agrees to send an email with the agreed action points by COB, but knows he hasn't got time to do it immediately, so sets himself a quick reminder on his phone to do it in 1 hour.
Figure: Good example - Jim has great professional integrity.
How to have (and keep) professional integrity
The word "integrity" can be loaded with ethical connotations, but in this context, professional integrity means:
1. Be true to your word
This means doing what you say you’ll do, by the time you say you’ll do it
"I'll send that email to you by 5pm"
2. If you can’t deliver on your promise, communicate a plan for a path forward
If it looks like you won't be able to get the agreed task done by the deadline, tell the person why and set a new deadline, or agree on a different deliverable. Never leave others guessing
(at 5:30pm) "Here's the email, sorry it's late"
Figure: Bad example - Although it's only a little late, you still haven't delivered on what you promised
(at 4:30pm) "I'm not going to be able to get that done by 5pm. Is it ok if I get it to you by midday tomorrow?"
Figure: Good example - Getting ahead of the deadline and making a new commitment
3. If you break your word, acknowledge it, and work out a way to repair your integrity
If the deadline passes and you didn't do the above, recognize the fault and propose a plan for how to do better next time
"I'm sorry I didn't get that sent over yesterday. A client had an emergency and I had to jump on it. Next time I'll let you know if something like that happens. I'm confident I can get it done by 5pm today.
Figure: Good example - Acknowledging an improvement for next time
Examples of good professional integrity
-
Turn up for a meeting on time and, if that meeting looks like it will go over time, make sure everyone can continue
- A good measure of your Professional Integrity is how well your day resembles your calendar
- Inform people of any potential delays
- Deliver all of what was asked, not just a subset
- TOFU - Take ownership and follow up. Even if you delegate some or all of the task, you stay responsible for the outcome
- When they make a mistake, they proactively address it, and don't wait to be called out
Attributes of people who have professional integrity
- Always take full ownership of any task given to them
- Inspire trust in co-workers and managers
- Hold themselves to a high professional standard
Managers' feelings about employees who have professional integrity
- Trust their employees
- Are comfortable delegating more important work
-
Once you’ve internalized the importance of having professional integrity, you may feel like you are suddenly under a lot of pressure to keep your word, and this can be stressful.
There are many tools and techniques you can use to help you succeed at this, and also to take some of the pressure off.
Remembering to do what you promised
Trying to keep all your commitments in your head is difficult and stressful, but if you use systems that offload them, you can free up mental power to get things done in the meantime.
Use Siri (or Google) reminders
Generally used for small tasks that you can't complete right now. These are very quick to set, and so won’t interrupt your flow.
Make sure you never dismiss these when they come up unless you can complete the task on the spot. If you can’t complete the task immediately when it appears on your lock screen, press and hold to kick the can down the road to when you will have time to do the task.
Use calendar appointments (with reminders)
If you want to set aside time for something, especially with 1 or more other people, use a calendar appointment. Remember, that action in itself is a promise that you will be on time (and not excessively multitasking), so keep on track of your upcoming appointments in Outlook, or use reminders to make sure you don't forget.
See more on our Rules to Better Calendars
Use FollowUpThen
Seeing as professional integrity doesn't just mean getting work done, but getting it done within an agreed timeframe, you can use a free service called FollowUpThen to help in a number of ways.
- Getting emails out of your inbox until you're ready to act on them
- Reminding you when it's time to follow up someone else (remember TOFU - Take Ownership and Follow Up)
- Sending a To Myself email that will only arrive when you think you'll be ready to action the work
Doing the full task
Misunderstandings around what was asked vs what was delivered are very common, but there are tools to make sure you minimize these:
Send "To myself" emails (or create Product Backlog Items)
As soon as you commit to do something, to make sure you immediately document the task in a way that the person who gave it to you can see the details. This could be on a shared Trello Board, a work tracking system like Azure DevOps or Jira as a PBI, or as simple as an email to yourself, with the person CC'd.
See more on the to myself rule.
Use Scrum tools - Definition of Done and Acceptance Criteria
Scrum is an Agile Project Management methodology that is all about delivering software features, so of course making sure that the Product Owner and the Team have the same expectation of what will be delivered is key. There are 2 ways of doing this:
- Definition of Done - This is for things that apply to all (or most) features, such as "It has been deployed to Staging", "It has been tested", etc.
- Acceptance Criteria - This is for details that are specific to this particular feature, such as "The user can login using Facebook auth", etc.
See more on Rules to Better Scrum
Add buffers (aka healthy pessimism)
Once you start thinking in terms of professional integrity, you will always be trying to under promise and over deliver, and the easiest way to do this consistently is to start adding some contingency buffers to your estimates.
- Change from "I'll be there in 5 minutes" to "I'll be there in 15 minutes"
- Change from setting 30 minute appointments to 1 or 2 hour appointments when needed
- Change from estimating best case scenarios to closer to worst case scenarios
Don't over-commit
When your intention is no longer to try your best to get everything done, but to promise to get things done, you need to make sure you don't take on so much that you set yourself up for failure. Don't always say yes.
Your default mode should be that if you say you'll do something, you check to see that you actually have capacity to do so. If you're not sure you'll be successful, either say no, and renegotiate a more realistic deliverable or date, or else specify that you're not sure you'll be able to commit to that, but you will try.
“When you have a hammer, everything looks like a nail.”
This saying is often used by developers who want to use their favourite technology to solve every coding issue, even when it’s not the best fit. But this saying is actually relevant to us all.
Video: The dangers of your strong suits with SSW General Manager, Ulysses Maclaren (4 min)Strong suits are a concept from Landmark Forum that encapsulate this idea. Strong suits are something everyone has... favourite parts of their personalities that they are good at, and that they like about themselves. This could be that they are smart, loving, loyal, attractive, friendly, analytical, resilient, resourceful, tough, romantic, logical, etc.
Generally speaking, people use their strong suits to get through life, and the more they do it, the more practice they get at it, and so the more it becomes their comfort zone.
The dark side
Usually, using your strong suits is fine, and there’s a reason they’ve gotten you this far in life. But the problem is that people have a strong psychological urge to be consistent and “true to themselves”, and this manifests in an inability to stray away from their strong suits.
Here are some examples:
- If you are loyal, you may have trouble letting go of toxic relationships
- If you are logical or analytical, you may have trouble being romantic
- If you are smart and focused on details, you may tend to be righteous in arguments, and not look at the big picture
- If you are friendly, you may avoid conflict, even when it’s necessary
- If you are independent, you may not accept help when you need it
- If you are resilient, you may have trouble letting yourself be vulnerable
Origins
Your strong suits tend to develop when you are a child or teenager, during times when you felt you weren’t good enough, didn't belong, or were powerless.
These traumatic events would have made you decide something about yourself and/or the world, and over time, these develop into strong suits. The reason it’s useful to know the origin of your strong suit is that usually, with the benefit of hindsight, you can see that the decision you made about the world at the age of 5, may not actually be 100% nuanced and correct. This knowledge can allow you to let go of the certainty that you MUST always be a certain way.
- It can let the people pleaser stand up for themselves
- It can allow the tough person to seek help
- It can let the likable, friendly person put their foot down when needed
What you can do
The good news is... identifying strong suits is usually quite easy... just think about what you like about yourself, and what qualities have most helped you in life.
Next, think about how, if taken too far, these strong suits could have adverse effects on your life.
Lastly, and this is the hardest part, you need to identify this AS IT IS HAPPENING, and change course. The good news is that even if you identify it after it happened, knowing it was your strong suit acting up usually makes it easier to apologise or change tack after the fact, which can still be almost as effective.
Congratulations, you have just identified a self-limiting belief... now anything is possible for you.
Managing up is providing your manager with an active request or an option to approve, rather than asking a general question.
What do you want to charge for David's rate?
Figure: Bad example - Nothing to approve
What do you want to charge for David's rate?
I would advise the standard $165 + GST until he has more experience.
- Please approve
Figure: Good example - Approval request in form of a task
Note: If it involves technical solution, please provide the steps you are going to follow.
Multiple options
When you are giving someone multiple options you should:
- Limit the number of options to 3 to avoid "option overload" (more on Choice Overload and The Burden of Choice)
- Recommend one and state why
- Enumerate the options (E.g. Option A or Option 1)
We want to integrate our database with our website so that customers can purchase online.
- Please let me know which option you would like to proceed with, otherwise let me know if you have any questions
Option A (Recommended) - Customize a ready-made solution - We are able to get rid of redundant features and change it to meet our requirements. It is cheaper than building a new solution from scratch.
Option B - Buy a ready-made solution - The ready-made solution is cheap but it does not have everything that we need and has unnecessary features.
Option C - Build a new solution using a third party company - It will be expensive and it will take a long time.
Figure: Good example - Multiple options with reasons and a recommendation
Note: When presenting choices, it is important to avoid using the term "version" as it pertains to specific iterations or editions. Always use "options" which refer to selectable variations or customizable features.
There are five interrelated issues that undermine the performance of a team:
- Absence of trust - If the members of the team do not trust each other then they cannot be totally honest with each other.
- Fear of conflict - Without trust people will not have the healthy debates that are necessary to arrive at better thought through decisions.
- Lack of commitment - If the team have not aligned behind a decision then the individual members who did not agree with the final decision will ultimately be less committed to that decision.
- Avoidance of accountability - If they are not committed to the course of action, then they are less likely to feel accountable (or hold other people accountable).
- Inattention to results - Consequently, they are less likely to care about the group results (and instead focus on achieving their own goals).
These are from the excellent book, The Five Dysfunctions of a Team by Patrick Lencioni.
The well-known book "The 5 Dysfunctions of a Team" focuses on team failings, but what should an ideal team look like? What pillars underlie exceptional teamwork?
- Trust and Vulnerability - When teammates trust each other, they are not afraid to be vulnerable in front of each other and will admit mistakes or shortcomings, allowing their teammates to help fill any gaps
- Healthy Conflict - Team members who trust each other can engage in healthy debates, where each teammate feels empowered to contribute so ideas can be shared and plans formulated
- Commitment to Decisions - The outcome of the spirited debates should be a decision on a plan forward and, since each teammate felt empowered to contribute to the plan, they should then also fully commit to the agreed decision
- Accountability - With everyone fully committed to the plan, they should then be comfortable to be held accountable (and hold each other accountable) to the KPIs
- Attention to Results - The group has a shared feeling of success and will all strive for the same results and will pay attention to whether those results are met
Product Owners (or clients), like all of us, are snowed under with work and won't always be able to respond to your emails in a timely manner. But keeping a good line of communication open is essential and it's up to you to make it happen. No matter whether your weekly meeting gets cancelled or your client appears to avoid you for the week, stop and talk to them in the corridor, or pick up the phone and give them an update.
If you know you've got issues to discuss (such as looming deadlines), don't wait for the client or your Product Owner to bring it up, take a pro-active approach and schedule a meeting.
As a guideline, you should not go more than 2 weeks without talking to your Product Owner (or boss/manager). And don't forget all the things you've got to say - have a sub-folder in your Inbox such as "Ask the Boss". Next time when they ask, "Does anyone want to speak to me?", look in that folder.
No email or call.
Figure: The worst example - not reaching out to your Product Owner or manager at all. You should be in regular contact with them
Figure: Bad example - you shouldn't have to ask that!
From: Jason To: Uly Subject: Northwind presentation v1 - review Figure: Good example - Actively reaching out to your Product Owner
With a mountain of emails, it is difficult to make sure the most important tasks get done first. You want to keep your clients happy while still removing roadblocks for others.
The word "Urgent" is more important than the word "Important"
This is the order which you should work
-
Urgent/Important emails & PBIs/tasks – Make them visible in the Backlog, communicate, and action
If you see the keyword "URGENT" (or ⚠️ emoji) in the subject/title/body, it automatically becomes the top priority and is to be resolved immediately. E.g. "⚠️ URGENT - The website is down"If you see the keyword "IMPORTANT" (or ❗ emoji), that PBI should to be treated as high priority and is to be resolved ASAP. E.g. "❗️ IMPORTANT - Broken link"
Call your Product Owner and Scrum Master when "URGENT/IMPORTANT" issues arisen, and inform them you will be working on it (immediately if "URGENT") instead of other items in the Sprint.
Note: The fire 🔥 emoji is no longer used to indicate something bad, as it can be misinterpreted. Often these days the 🔥 emoji is used for "hot topics".
Instead, the ⚠️ warning emoji should be used to indicate an issue of concern. - Emails about timesheets or invoicing issues
- Your calendar - keep your calendar up-to-date, so people know where you are
- Your existing clients - Planned client work and client administration (preferably working on a Sprint Backlog and doing Daily Scrums)
- Other client work - Ask others if you can help with their client work
- Prospective clients - Project management, answering questions and setting up meetings
-
Internal work - All of the following might have their priorities ordered by the Daily Scrum
- Quick Important emails to 0 (emails with an important flag < 1 hour and not something that can go into a release plan)
- Incomplete Sprints. E.g. Normal planned internal work
- Important emails to 0
- Help others get their important emails to 0
- Get your inbox to 0
- Ping others to see if they need help completing their Sprint
- Phew... Done...
Tips:
- Efficient people keep a priority list (often written)
- Don't move an important task out of your inbox unless someone else is going to do it right away
- The most recent task assigned is not necessarily the most important. Mentally do this (e.g. an air traffic controller does not deal with the newest plane that has popped up on his radar when he has 4 lined up to land
-
You can use inbox subfolders to group and prioritize tasks
-
Double check - it's common that priority orders change, but clients don't always mean to, so confirm before proceeding. E.g. When someone is asking you to do a new task while you are still working on another task, then ask:
"Are you changing the priority order? Do you want this new task done before the current task? I'm currently working on..."
Figure: Good example - Confirming the priority order with the client
-
Most people do the urgent stuff and then have less time for the important stuff. Let's say you receive 2 emails... one email to fix your timesheets and another to change the logo on the home page. How do you work out what is more important?
There is a well-known quadrant where people look at where they spend their time. The key is to reduce burning time on 'urgent and not important' stuff (e.g. most notifications on your phone and most Teams calls) and spend time on the important stuff that is not urgent (e.g. stuff at the top of our backlog).
Image: Davidjcmorris, CC BY-SA 4.0, via Wikimedia Commons.
Understanding the difference between urgent and important tasks in software development is crucial:
- Urgent tasks are driven by external deadlines and often require immediate attention to meet project milestones or resolve critical issues
- Important tasks may not have immediate deadlines but have a significant impact on the project's success, such as planning architecture, conducting thorough testing, or implementing essential features
Timesheets are the lifeblood of the company and are the ultimate source of everyone's income.
Timesheets should be right near the top of your priorities. It's #2 on Do you get your work done in order of importance (aka priorities)?
The following steps will help you to setup your calendar to allow us track your current availabilities and improve our team collaboration.
Step 1: Set your work hours in Outlook Read rule: Do you set your work hours in your Calendars?
Step 2: Share your outlook calendar with everyone Read rule: Do you know the ways to see others' calendars?
Step 3: Allow calendar admins to have full access to your calendar Read rule: Do you share your Calendar?
Step 4: Send your leave appointments to a centralized leave calendar Read rule: Do you use a centralized leave calendar?
It is extremely important to maintain honesty and candor in a team environment. Sometimes this means admitting when you're uncertain and not just communicating wishful thinking.
Nothing breaks down a team like a lack of trust. Remember, honesty starts with the small things.
You also need to make sure you qualify your level of certainty in an answer, so that your guess (which could be wrong) does not end up misleading someone.
- Is the database corrupt?
- No.
Figure: Bad example
- Is the database corrupt?
- I don't think so but I'd need investigate further to be sure.
Figure: Good example
Being candid is being vulnerable, which is one of the 5 Pillars of Teamwork.
When it comes to making significant alterations or deletions to someone else's content, it's a good practice to inform them and document it, by sending an "as per our conversation email" as a safety step.
Clear communication helps maintain transparency and respect for the original author's work.
This is especially important in collaborative environments, where changes can impact the overall project or its documentation. Keeping others informed allows for discussions or adjustments if needed.
Understanding the history of content is essential for context, accuracy, and informed decision-making.
Being diligent about content deletion not only respects contributions but also mitigates risks and fosters a culture of understanding and problem-solving.
To: Dave Cc: John, Danny Subject: FAQ - Removed irrelevant section Hi Dave,
As per our conversation, I have removed the section below from the FAQs since it is redundant, as you no longer join Daily Scrums.
I have CC'd others who have edited this page.
From
FAQ
Q: What if your team already does Daily Scrums?
A: Prior to the Daily Scrum, ping Dave and say "Starting our Daily Scrum in a minute". Do your Daily Scrum as normal and add in Dave/Product Owner. After the call, one person (called the Scribe) should send an email to the whole team. :
Q: What if I only have one day until I go on client work?
...To
FAQ
Q: What if I only have one day until I go on client work?
...Figure: Good example - Being considerate and documenting content deletion
Misunderstanding due to miscommunication can cause major disasters at work or in life (see: Tenerife airport disaster).
A good communication strategy when receiving instructions is to repeat back what's being said to avoid misunderstanding.
Question:
::: greybox
- Please add a checkbox on the right, and make it red. :::
Possible answers:
"OK" or "Roger That"
Figure: Bad Example
OK, I will add a red checkbox on the right
Figure: Good Example - repeat back the task
A picture is worth a thousand words; and a video is worth a thousand pictures. The big communication points with clients are:
- Daily Scrums (Product Owners often don’t join)
- Sprint Review, Retro and Planning
- Done Videos
Most Scrum teams do the first 2 well but Done Videos are less common.
Clients love Done Videos. Done Videos offer transparency, visibility, testing, and early releasing of a feature they might otherwise have to wait weeks or months to see released. The video lets them see the new feature and enables early feedback, which is beneficial to both the developer and the client.
The best way to demonstrate that a new piece of functionality is working is to record yourself using it successfully. this works as both a demo, as well as a training aid if they need to reference it again later.
The benefits of Done Videos are:
- Product Owner - The PO (often the client) can watch as many times as they like
- New Developer - Shows what the feature does
- Developer - They can be referenced in code for others in the future
- UX Designer (and tester) - Easy to can give feedback
- User - can be included as documentation
How to do a Done Video
In any job, you will most likely at some point face some criticism. Someone may be telling you that you’ve done something wrong or just expressing displeasure because you didn’t do something they wanted.
The best way to take this is to reply to the person and tell them the following 3 A's for receiving feedback.
The 3 A’s: Acknowledge, Apologize, Act
Acknowledge - The first part of good customer service is acknowledging that something happened. If you don't acknowledge the pain, then another person won't know if you agree or not.
Apologize - Apologize if you messed up… or even if you didn’t. Just be clear you are sorry for their situation. E.g. "I am sorry for the downtime you have been experiencing today"
Action - Lastly, explain how you will take action now, and in the future.
Even if you've been wrongly accused of something, you should still show you understand the other person's frustration and demonstrate initiative. Always have a view of the future and the big picture.
Warning: When wrongly accused of something, most people get stuck on defending themselves, where customers would prefer to hear you care, will take any ownership of the problem, and tell them your plan asap.
Next is to see if you can avoid it happening in the first place – you could explain the new steps in the process you’ll add or simply say: "I'll be more diligent testing in the future".
Video
Empathy is the ability to put yourself in someone else’s shoes and understand what they’re feeling. In a deeply technical profession like software engineering, it might not sound like a useful tool but nothing is further from the truth.
Empathy for your clients or managers
By understanding your Product Owner’s goals, pressures, and feelings, you’ll be in a much better place to be able to anticipate their needs, understand their requirements, and communicate more effectively with them.
Empathy for your co-workers
The key understanding required to make people prioritise helping their co-workers, rather than focussing solely on their own work, is that the total output of the team is more important than the output of one person. You will also find that, if people enjoy working with you, and not just the outcomes you produce, you are more likely to be given opportunities in the future. The “brilliant asshole” can only get so far in their career before the pain of dealing with them outweighs the quality of their work.
Empathy for your subordinates
Taking some time to understand the challenges that your team members may be facing is key to becoming an effective servant-leader. Subordinates that work purely to avoid your disappointment will only do enough to avoid being in trouble. People who feel respected and heard are much more likely to go above and beyond.The other great benefit of understanding your team members is that you can identify how each person is motivated. One may thrive with words of encouragement, one may need help to get past a sticking point, and one may need space to get into the zone.
Passive aggressive comments can hinder effective communication and breed resentment in a team. Addressing such comments thoughtfully can transform a frustrating interaction into a productive discussion.
Video: How to handle passive aggressive comments (1 min)Steps to Handle Passive Aggressive Comments
1. Acknowledge the Subtext
Begin by reflecting what you sense in their comment. Use phrases like:
- "It sounds like there’s more to that."
- "It seems like you’re holding something back."
- "It sounds like there’s more for me to understand about what you just said."
These responses show that you recognize a deeper concern without escalating the situation.
2. Seek Clarification
Ask, “Should I read into that?”
- This invites the person to clarify their statement
- Even if they respond “no,” they’ll be more mindful in future conversations knowing that their comments won’t be ignored
3. Address Feelings Directly
Kindly and genuinely ask, “How are you feeling?”
- This can create a safe space for the other person to express what’s really bothering them
- Often, addressing emotions leads to a more productive discussion and resolution
What Not to Do
Avoid explicitly calling out the behavior as passive aggressive, such as saying, “That was a bit passive aggressive.” This approach is likely to put the other person on the defensive and escalate tension.
A teammate says, "I didn’t realize you suddenly cared about deadlines."
Figure: Bad Example - Responding defensively with, “That was a bit passive aggressive. What’s your problem?” escalates tension and makes the situation worse
Figure: Good Example - Responding kindly with, “It sounds like there’s more to that. How are you feeling about the deadlines?” opens the door to a constructive conversation
Why This Works
- De-escalation: Thoughtful responses defuse tension and avoid accusations
- Clarity: Direct questions about feelings or intent help uncover the real issue
- Resolution: Focusing on emotions often resolves misunderstandings and fosters better communication
By responding with empathy and professionalism, you can handle passive aggressive comments effectively, maintain a positive atmosphere, and build stronger relationships within your team.
This idea is different from the other rules in this category in that it strikes at the heart of our everyday behaviour, not just when a crisis is looming. Jesus of Nazareth said:
"And whoever compels you to go one mile, go with him two."
While not everyone chooses to agree with everything said, it's a valid point when it comes to creating a positive team environment. If you're willing to be proactive and help others above and beyond the call of duty, a whole ream of benefits flow:
- People begin to share responsibility for work that traditionally is claimed as "not my problem"
- Others will return the favour when you really need it
- The sense of workplace isolation disappears
- Productivity lifts as tasks can be achieved more quickly
This rule particularly applies when a person is blocked – as identified in their Daily Scrum.
When browsing you often need to open a new tab. By default most browsers will show will a bunch of things to click. That can lead to diversion.
Changing your browser's new tabs settings can enhance your experience and add avoid distractions. By removing all the clutter, you can have a clean and visually appealing environment that aligns with productivity.
Go the extra mile and add branding to your browser.
How to remove clutter from your new tab experience
When you open a new tab in your browser and it shows you a bunch of news articles, videos and other clutter, it can be distracting and take you away from your current task. You can remove this noise by turning off all the information in the new tab settings.
- Open your Edge or Chrome browser
- If you are not in the new tab experience, click the + button to open a new tab
- Click on settings
- Change Quick links to Off
- Toggle off Show greeting
- Set Content to Content off
Now when you open a new tab, you will see a clean experience with no clutter 🤩.
"An ounce of prevention is worth a pound of cure" goes the saying. Having a strict coding standard is prevention. To create good code you must have good standards, such as commenting standards, naming standards, versioning standards and knowing the value of consistency.
But this can really only happen if you’re going to go the extra mile and stick your neck out and correct someone.
Every member of a team plays an important role in maintaining standards. Whether it's your work or someone else's, always keep an eye out for things that can be improved.
This rule applies to all company standards. Standards are important because they ensure your experience at work is consistent and enjoyable. For example, if there was no standard to stack the dishes in the dishwasher when you were finished using them, dishes would build up and create a big mess in the kitchen!
Be nice, not harsh
Read Do you know the nice way to correct someone?
Small things = Tiny Tip
When the 'mistake' the person made is not an actual mistake, but something that the company has decided to do in one way for consistency, without a strong argument.
Tiny Tip: I’d use international format on your phone number so people outside Australia can just click to dial as per https://ssw.com.au/rules/right-format-to-show-phone-numbers
Figure: Good example - Nicely informing of a small standard oversight
Important things = Tip
When there is a proven better way to do something different from what the person has done. You should try to include the reasons.
Tip: I noticed your email has a very generic subject: "website". Please resend with a descriptive email subject as per Rules to Better Email. This way it is easier to identify, categorize and find this email later, without having to open it :)
Figure: Good example - Nicely informing of a better way to do something
Crucial things = Critical
When the error the person committed can lead to a misunderstanding or a security breach. You should include a task with action when necessary.
Critical: When sending a proposal never use the word "quote", but use "estimates" instead. As per Rules to Better Project Management we don't work with a fixed price, which is opposite to what the word "quote" implies. This might create different expectation and consequently frustration and legal problems with the client.
- Please fix asap
Figure: Good example - Nicely informing of a critical mistake
Coding - For Developers
When you come across a code error, it's always better if you just fix it straight away. Then write an email to the person explaining what has been done wrong and how you fixed it.
In cases where you aren't able to fix yourself, send an email to report the error/bug, which should be become a PBI and then fixed.
What about checking PBIs?
You will be surprised at how many developers write bad PBIs. You need to be a standards watchdog and correct them until they understand the importance. Be patient, it takes many times, they do eventually write good quality PBIs.
Tips
- If you don't know who made the mistake, use the annotate tool to find out
- Cc relevant parties to help others to improve, to collect brownie points, or to set a good example
What if it's recurring?
When you notice someone doing the wrong thing:
- First time just send an email with a pointer to the rule
- The second time, have a very quick chat with them
- Third time call them in and give them a formal talk about it
Focus on the meat first
When you receive a great 'done' email or document, make sure you mention how great it is before correcting any potential error.
Timing is everything - Don't bottle it up
It can be tempting to offer your feedback as soon as you think of it, but it's better to hold off until the recipient is in a place where they can hear it. If a person is busy, distracted, or in a poor emotional state, chances are your feedback won’t hit the mark. Wait until the person is calm and relaxed before asking them if now is a good time to offer your feedback.
For more, check out Do you know to create a safe space instead of jumping into feedback?
Going Anonymous
If a critique is personal, it can be hard to correct someone – especially if you don’t have a close relationship with that person. In a case like this, you should discretely ask your manager how to proceed.
Taking Feedback
Summary
It's important to ensure others are doing their best to maintain and follow the standards. Remember, it can be just as important for someone's professional development to give feedback as it is to receive it. Being able to communicate feedback in an effective and professional manner can benefit you in any career.
To: Peter Cc: Adam Subject: ApplicationForm error Dear Peter
While you were away, I came across this page you edited, called ApplicationForm.aspx which was giving an error:
The conversion of a char data type to a DateTime data type resulted in an out-of-range DateTime value.
Please note that whilst inserting data from your Front End application, you should not use the format dd/mm/yyyy. Instead, you should use yyyy/mm/dd as per Rules to Better Databases.
Let's fix it together when we get to work tomorrow.
Cheers, John
Figure: Good example - Nicely informing of a standards violation
Using ChatGPT to correct someone nicely
Using ChatGPT can be an effective way to correct someone nicely. It allows you to provide feedback in a friendly and creative manner, reducing the risk of making the recipient feel defensive or upset. Use ChatGPT to create a personalized and entertaining message that communicates your feedback.
Example prompt:
"Act as a rules watchdog and ask Bob to:
- Send a v2 email using the "To Myself" format per SSW Rules
- Instruct Sophie to send an invoice after the trip, and
- Mention other attendees
Number each point. Make it friendly and funny by acting as a dog character. Be concise.”
Providing feedback in a light-hearted and friendly manner can encourage colleagues to be more receptive to suggestions. Click “Regenerate response” if you don't like the output!
When resources are limited, companies often blur the lines between design and development roles in an attempt to maximize efficiency. However, maintaining a clear distinction between disciplines is crucial for creating cohesive and effective user experiences.
For many developers, especially those early in their careers, the risk of making design decisions that negatively affect the overall user experience is high. When Product Owners delegate design work to developers, they may unintentionally accumulate significant UX debt. UX debt, like tech debt, accumulates when design shortcuts are taken, leading to user experience issues that need to be fixed later—often at a greater cost.
While flexibility is important, particularly when dealing with a low designer-to-developer ratio, it's still wise to keep design work primarily in the hands of designers to maintain consistency and quality.
Streamlining design decisions
Design is an inherently subjective field, and even experienced designers don't always agree on every decision.
In addition, effective design demands a holistic approach, where layout, typography, color, UX, and other essential elements work together to create cohesion. When non-designers, especially those without a strong grasp of these principles, get involved, the result is often disjointed and inconsistent, leading to a fragmented user experience.
This situation is analogous to designers writing code. Many designers may know basic HTML or CSS, or use tools like ChatGPT to generate code. However, without a developer to review and refine it, there’s a higher risk of introducing poor-quality code, which can lead to tech debt. This often results in long-term maintenance challenges and system inefficiencies. Even if a developer steps in to review, it adds unnecessary workload and distracts them from their primary responsibilities.
Note: While developers and designers should focus on their expertise, multidisciplinary Scrum teams offer valuable opportunities for collaboration. By working closely together, they can learn from each other, enhancing teamwork and problem-solving. Ideally, developers should only take on design tasks when training to transition into design roles, or vice versa, as part of structured learning. Otherwise, it's best for designers to handle design and developers to focus on development to ensure quality through specialized expertise.
Trying to do great things is hard. Trying to do them alone is, more often than not, impossible. That’s why all great leaders have mentors, and they also mentor others. No matter how competitive you may feel - especially early in your career - success is, in reality, a team sport.
Steve Jobs had Bill Campbell as a mentor; Mark Zuckerberg had Steve Jobs; Bill Gates had Warren Buffett... the great Robert De Niro had Stella Adler; even Nelson Mandela had Gandhi to guide him! These are all very successful people, who benefited from having someone more experienced to lean on.
Having a mentor will give you an advantage over those who have to navigate and maneuver the IT industry alone.
Everyone had something to learn and everyone has something to share!
Mentors don't have to be teaching you something technical. A mentor doesn't even need to be someone more senior than you - they just need to be good at something you are not. If they are an expert in something you don't know how to do - they can be your mentor, and visa-versa.
Mentors don't need to necessarily help you learn something specific, they can also:
- Boost your confidence
- Help direct your career moves
- Unstick you when you aren't sure which way to go
- Save you time by showing you where to look, or how to approach something
- Offer support when times get tough or you have to make difficult decisions
⭐ Great mentors should:
- Push you out of your comfort zone
- Help you past sticking points
- Give you great feedback and encouragement
- Be a supporter when times are tough
- Care about your success
- Be a positive role model
- Dedicate some time just for you
- Be a lifelong learner
- Be open and honest
Implementing a mentoring program is a powerful strategy for fostering professional growth and knowledge transfer within an organization. By pairing individuals at different experience levels, the program accelerates learning, promotes skill development, and cultivates a collaborative environment. Ultimately, it contributes to the overall success of the team.
Video: Do you have a formal or informal mentoring program? (9 min)
There's a few types of mentoring. When you don't have the skills within your company, you hire expert consultants:
- Consulting mentoring - This is most commonly all day engagements. E.g.SSW's Mentoring Services
If you do have the skills within your company, then you can up-skill people using the brains of your own company and this usually falls into 2 groups:
- Ad-hoc mentoring (informal) - You get advice when you need it
- Scheduled mentoring (formal) - You book in meetings and make a plan
Who mentors who?
Most consider mentoring to be a senior guiding and building the skills of a junior. However, you can really supercharge your company if you understand that everyone has something that they can teach someone. Being a mentor also makes people better, so employees should be encouraged to think about what they can teach others.
What should I get mentored on?
The first decision should be whether you want soft skills or technical skills (choose one topic at a time). You may already know what you would like to be mentored in, however you really should ask your peers what they think you should be mentored on. You could have a blind spot. Here's how to approach it:
- Make a list on what you would like to be mentored on. E.g. PowerShell, Power BI, Power Apps, Power Speaking...
- Approach a few people you trust, and ask them what you should be mentored on (without showing them your list)
- Then show the list, and brainstorm ideas
- Make a decision, and approach a mentor
Here are some of the things you can learn:
- Public Speaking
- Account Management
- Low Code solutions e.g. Power Apps & Dynamics
- Frontend Frameworks e.g. Angular, React & Blazor
- Backend - e.g. database design, Clean Architecture
- Debugging
- Designing big solutions - Cloud Architecture
- UI/UX Design
- Great blogging
- Increasing your social media presence
Scheduled mentoring - How does it work?
The first step is for mentees to find mentors or vice-versa.
Once a pairing has been established, the mentor is responsible for scheduling a few meetings with the mentee.
- Initial Meeting (30 mins): Introduction to the program and determination of the mentee's specific learning targets
- Weekly Check-ins (5 mins): A quick chat at the week's end to gauge the mentee's progress
- Monthly Sessions (for 3 months, 30 mins each): Intense mentoring sessions to tackle mentee's chosen target areas
- Final Meeting (30 mins): Wrap up, retrospection, and gathering of feedback to refine the program further
As a mentee, add what you are learning to your Teams status. Mentors can do the same, and let people know what you're mentoring.
Initial Meeting
- Tell the mentor what you would like to achieve by the end of the 3 months
- Work out your goals & set targets
- Then the mentee works independently for a month, checking-in when needed
- At the end of each week, check-in for 5 mins to let them know how you're going
3 Monthly Meetings
- The Mentor will review their progress and give tips or suggestions on how to move forward
- Set new goals
- Then the mentee works independently for a month
- At the end of each week, check-in for 5 mins to let them know how you're going
Final Meeting
- The Mentor will review their progress and give tips or suggestions on how to move forward
- Set some longer-term goals
- Then the mentee works independently, checking in when needed informally
It is motivating to know that you will be checking-in with your mentor regularly. At the end of your 3 months, sit down and recap how well it went for you. It's helpful to give a mark out of 10.
Reward both parties
It's nice to be thankful, so add this new skill to your GitHub profile, make a social media post or even add it to your LinkedIn. Remember to give your mentor an @mention.
Many developers sit with their faces to the screen, isolating themselves from the team, trying to solve a problem on their own. If you're stuck on one bug for more than an hour, ask someone to help.
No-one gets a medal for solving a problem on their own in 2 days, when it could've been solved by 2 people in a couple of hours.
The Daily Scrum is a good time to bring up any ongoing issues or sticking points if you haven't already.
Sometimes you'll need the time of a busy person (like your boss or a person on billable work) for an approval, and you may find their availability limited.
You need techniques so you're not blocked, so here is a process you can follow:
- Attempt to warn then call, explaining that you're blocked
- If no luck, message with "Tried to call - will try again in 1 hour", then set yourself a reminder or an appointment
- If no luck again, message with "I haven't been able to get you, so I'll go to {{ SOMEONE ELSE }} instead for the approval"
- Once approved, message with something like "{{ SOMEONE ELSE }} approved it... See the email that you're CCed on for details 🙂"
For the above, your escalation path for something that usually needs a particular person should go something like this:
- The person
- Your State Manager
- Any State Manager
- Any Manager
Tip #1: Use common sense. Some things may make more sense to try a few times with your boss before escalating.
Tip #2: Of course, some things really are big decisions that should not be escalated. But these should be the exception, not the rule.
Tip #3: Your boss will have some things they care about a lot, and they won't want escalated. Could be money related, hiring decisions, or their YouTube channel. Be aware of those.
Once a project gets underway, it is not uncommon for the development team to take over a lot of the project management workload. Since they are the people most in contact with the client, sometimes new work will be organized through them instead of the Account Manager.
When this is the case, the "As per our conversation" email should CC the Account Manager so he is always aware of all work being done, and can create a new CRM opportunity if required.
To: Bob Northwind Cc: {{ ACCOUNT MANAGER }} Subject: Northwind App - Additional work booking Hi Bob,
As per our conversation, you agreed to book me for another 2 weeks on this additional work.
Figure: Good example - The Account Manager is included on an email like this
Note: If an initial meeting is required for the new work, the Account Manager should be in attendance where possible to help continue the relationship.
Long-term success in a career necessitates wholeheartedly embracing and enjoying your job, fulfilling your responsibilities, continuously enhancing your company, and consistently striving for personal growth and improvement.
If you find yourself not enjoying your job, this is not necessarily a bad thing. You should make a commitment to give it a go and try to make it work. When you have decided you are unhappy, you should talk to your boss and figure out what is making you unhappy.
Ensuring job satisfaction and enjoyment can be influenced by various factors. Here are some strategies to help cultivate a positive work experience:
- Find Meaning and Purpose - Seek roles and tasks that align with your passions, interests, and values. When your work has a greater purpose or meaning to you, it becomes more fulfilling and enjoyable.
- Cultivate Positive Relationships - Foster positive connections with colleagues and build a supportive network. Collaborating with like-minded individuals, having open communication, and engaging in team activities can contribute to a more enjoyable work environment.
- Seek Growth and Development - Look for opportunities to learn and grow professionally. This can include attending training sessions, pursuing certifications or further education, and taking on new challenges. Continuous development keeps work fresh and stimulating.
- Maintain Work-Life Balance - Strive for a healthy balance between work and personal life. Prioritize self-care, set boundaries, and engage in activities outside of work that bring you joy and fulfillment. Balancing responsibilities can enhance overall job satisfaction.
- Celebrate Achievements - Recognize and celebrate your accomplishments, both big and small. Acknowledging your successes boosts morale and instills a sense of pride in your work, enhancing enjoyment and motivation.
- Communicate and Provide Feedback - Openly communicate with your supervisors and team members. Share your ideas, concerns, and suggestions for improvement. Engaging in constructive feedback and dialogue fosters a positive work environment and a sense of empowerment.
- Seek Support and Mentorship - Connect with mentors or seek guidance from experienced colleagues. Having someone to provide support, advice, and mentorship can enhance your enjoyment and growth within your job.
Remember, enjoying your job is a dynamic process that requires effort and self-awareness. By proactively engaging in these strategies, you can foster a more fulfilling and enjoyable work experience.
Tip for Software Consultants: The number 1 cause of stress in this industry is caused by running out of budget for a project. The best way to handle this is to give realistic estimates, and inform the clients as soon as it looks like they will be exceeded. A client who has accepted the realities of his project is less scary than working on code that's already over-budget with an impending unknown client reaction.
Whenever you need a number from a system you should think of how you can create a report, so next time you can press a button to get the result.
If you found yourself doing ad-hoc reports, or random SQL queries, a few years ago, the best thing to do was to make sure the boss knows you could not find the data you needed, so he could commission a new report to be built.
Since 2015, the best practice is instead to jump into Power BI and build the report yourself.
To: Mr. Northwind Subject: Report needed Figure: Bad example - Can't build it yourself, sending an email to your boss for a number
See Ulysses' video on how Power BI is the best tool for this:
Video: Power BI - Decisions based on facts: A Real World Look at Power BI (1 h 6 m)
"A great man shows his greatness," said Carlyle, "by the way he treats little men". Bob Hoover, a famous test pilot and frequent performer at air shows, was returning to his home in Los Angeles from an air show in San Diego. As described in the magazine Flight Operations, at three hundred feet in the air, both engines suddenly stopped. By deft manoeuvring he managed to land the plane, but it was badly damaged although nobody was hurt.
Hoover's first act after the emergency landing was to inspect the airplane's fuel. Just as he suspected, the World War II propeller plane he had been flying had been fuelled with jet fuel rather than gasoline.
Upon returning to the airport, he asked to see the mechanic who had serviced his airplane. The young man was sick with the agony of his mistake. Tears streamed down his face as Hoover approached. He had just caused the loss of a very expensive plane and could have caused the loss of three lives as well.
You can imagine Hoover's anger. One could anticipate the tongue-lashing that this proud and precise pilot would unleash for the carelessness. But Hoover didn't scold the mechanic; he didn't even criticize him. Instead, he put his big arm around the man's shoulders and said. "To show you I'm sure that you'll never do this again, I want you to service my F-51 tomorrow."
To err is human and it happens to the best of us. When a mistake happens, getting upset and lashing out doesn't resolve the situation. The best course of action is to examine what went wrong, and how it can be prevented from happening again.
This story from Adam Cogan is a good example of this:
One of my staff, I won't tell you Edward's last name 😉, offered to help clean up my laptop by backing up my files, reformatting and starting from scratch. For some reason or another, all of my emails and client work were destroyed. Naturally, I was upset, but instead of coming down on him like a ton of bricks, I: 1. Went through the steps he took; 2. Identified where he did not do what he was supposed to; and 3. Showed him the company standard for backups.
By giving him a second chance, I ensured that he and others would not make the same mistake again, without making him feel any worse than he already did.
Receiving positive feedback makes everyone feel good, peps them up, and encourages them to do more of whatever they are doing.Forgetting to recognize success means they have no motivation to succeed.
This is a simple rule - if someone goes beyond the call of duty, you thank them.
Bonus: If you want to go further, you can tweet the link where you've found help from.
Tip: Elaborate your text and avoid adding URLs as it may look like spam.
Every day you will probably come across something that could be improved. If you're not making improvements, you're going backwards. But don't make suggestions or criticisms without being specific.
"Do you know our sales process is pretty bad, what are you going to do about it?"
Figure: Bad Example - Nonspecific criticism
When you find a problem, pinpoint it directly (and recommend a solution):
"The current sales process is pretty bad. It does not ensure that a prospect is followed up by a phone call within 7 days of an initial meeting. Please create a workflow in CRM, have it tested by the sales manager, and then we will email the sales team to inform them about the improvement."
Figure: Good Example - Offering criticism in this way ensures that something will happen to fix the problem
"Not done, please try again"
Figure: Bad Example - If they don't immediately know what to fix, this might end up in their "too hard" bucket and never get done
"Not done, you missed the second requirement"
The specific missed requirement lets them quickly fix the mistake
Of course, there are times that you can 'feel' that a problem exists, but you may not even be sure how are unable to pinpoint it or can't think of a good solution. In this instance you should speak to someone who you think may be able to identify a solution, come to an agreement, and then request that action be taken.
When criticism is generic, it is impossible to know what to fix.
It's alsoimportant to consider both your audience and the overall context.
- Internally, you might assess the work on a scale of 1 to 10 (without sharing the score).
- If the work rates a 9/10 or higher, feedback is generally unnecessary. Moving from a 9/10 to a 10/10 often requires incremental feedback that can feel overly critical.
- While aiming for a 10/10 is ideal, it's often acceptable to settle for a 9/10 if the effort to achieve perfection isn't justified.
I hope people ask for a ‘Checked By’ when it is at least a 7/10. Then I hope the feedback gets it to a 9/10, if not a 10.
- Adam Cogan
If someone asks you to do something you believe is unethical, please ring them up straight away and discuss the issue.
It can also be a good idea to document your objections in an email.
The way you and all members of your team present themselves is a crucial part of creating a good impression for your clients, particularly in their first encounters with you.
Dressing Up
One aspect of this is the dress code. Dress code is important for two reasons:
- Looking professional and keen for business
- Reinforce the company's branding
Public Events and Meetings
Of course, when in a public event such as a User Group, conference or seeing clients you should "Dress Up".
It should go without saying, but of course, things such as shaving off your weekend facial growth, using deodorant and having clean teeth and nice breath is assumed.
On a business flight
It's a good idea to "Dress Up" in flights as you never know who you will be seated next to.
Dressing Down (aka Casual Fridays)
Many companies find it a good idea to have Casual Fridays. It is free and easy to do and gives the team something to look forward to.
At SSW employees can optionally work from home Monday/Tuesday, then "dress up" on Wednesdays by wearing company colors, with a nice shirt (business or polo), trousers (not blue jeans), belt, nice shoes (no sneakers, joggers or thongs). So most employees wear their SSW shirts or SSW T-shirts on Wednesdays.
Then they "dress down" later in the week... so they have "Casual Thursday" and "Fun Friday". Thursdays are for casual clothes. On Fridays, employees are encouraged to wear sporty clothes such as shorts. It allows the end of the week to be fun.
Shorts Days - the cool exception
On very hot days, shorts are allowed as soon as you've got an email like this:
To: SSWAll Subject: SSW Sydney - 🩳 Shorts Today! (Over 30) Hi All
The maximum temperature for today is 30.
Feel free to wear shorts if you like 🌞 (hope you haven't skipped leg day 😜)
If you decide against it, then don't forget the SSW dress code 👔 applies as usual (e.g. dress up on Monday and Tuesday - no jeans).
Today's forecast: Sunny. Winds north to northwesterly 15 to 20 km/h turning west to southwesterly 20 to 30 km/h in the late morning and afternoon.
Note:
- At SSW, shorts day is on only if this email comes.
- Why? We don’t want people looking at different weather apps and having different rules apply... so if it’s over 30 but the email doesn’t come (e.g. there is a bug 🐞), then there’s no shorts that day.
Sophie
-- Powered by SSW.Shorts --
See the code: https://github.com/SSWConsulting/SSW.Shorts
<This email was sent as per https://ssw.com.au/rules/do-you-have-a-dress-code>
Figure: Good example - Nice "Shorts Day" email template by SSW.Shorts
If you were talking to someone, when their phone rang; would you want them to answer it? If they were using a loud ringtone, the only way to continue your conversation would be to wait until they had finished or, at least, they would have to get their phone out to hang up. Why should the person who called get preferential treatment and be able to jump the queue?
Your mobile phone is a very useful tool. However, it can also be a nuisance. To make sure it doesn't interrupt your daily activities, you should always put it in silent mode.
If you have a wearable device like an Apple Watch/ Fitbit/ Microsoft Band that connects to your phone, your wrist vibrates when you receive a call. This alerts you to your incoming call silently even if you are not near your phone, and means you *never* need to have your phone on anything but VIBRATE. Microsoft Bands also have the added advantage of allowing you to send a text message-based quick response right from the device letting your caller know you are busy.
This has the following advantages:
- You get to only answer the phone when it is convenient for you
- You won't be interrupting conversations with clients, which can be seen as unprofessional
- You don't interrupt people's work with loud ringtones
**Figure: Should the person you’re meeting get priority...or the person ringing in?**
Give your employees a flexibility for small leave periods (say 1-3 days) and let it be 'auto-approved'. That means that employees will often take small periods of leave with little notice. However, this has big benefits for both employees and employers, as it removes the incentive for employees to lie and say they are 'sick' when they need time off with short notice.
For Employees:
Tell your managers and co-workers as soon as you know when you will be away. If you're planning to be away for any substantial amount of time (say 3 days or more), make sure you have told everyone who will need to know about 4 weeks in advance whenever possible. Most importantly, ensure that your clients are not left in a difficult position while you are gone.
Generally, people who need to know include:
- Your managers
- Your current client
- Your close co-workers
Appointment tips:
- Put your name in the subject of the appointment (so someone scanning the leave calendar can see who's away easily)
- Add a brief description of why you're away (holiday, doctor, etc.)
To: SSWAbsence Subject: Patricia Barros - 2 weeks leave Figure: Bad Example - not enough notice for substantial leave
To: SSWAbsence Subject: Patricia Barros - 2 weeks leave Figure: Good Example - appropriate notice given
When you need to spend money, don't assume you will get authorization – make sure you have approval before spending the money.
Let's have a look at the best way to get authorization:
- Send an email to your boss, manager, or financial controller (or whoever the appropriate person is in your company) outlining what you want to purchase and why. You should provide as much information as possible and recommendations, so it's easy as "rubber-stamping". Your goal should be to make your purchase as easy as possible to be approved!
- The email subject should be "Purchase Please - Request for xx"
- If appropriate, include 2 or 3 quotes (call them "Option A, Option B etc") aiming to keep expenses low, and which you think is the best option
- End the email with "Please approve"
- Wait for an email back with "Approved" (prior to the purchase, or you may not get reimbursed later)
-
Forward a copy of the email to the financial controller/accountant with:
- Your manager's approval (in the history)
- Attach the tax invoice
- State how the payment was made (whether you paid it yourself and need reimbursing or if it was on a company credit card, and if so, which one)
- If this is for a client, include the Client ID/name
- If it is for a client, include if it is to be on-charged (E.g. please invoice - add 20%)
- Try to obtain receipts in English, if they are not, you must write on the receipt what it is, and what it was for
Cross-authorization
We recommend having a cross-authorization system in place that follows your hierarchy. You should not be blocked by reasonable purchases (e.g. under $1,000).
Here is an example: Sophie works in Marketing and wants to spend $400 on an ad campaign. If she can't reach the State Manager, try another State Manager, then their boss, then other Head of department, then the Accounting department, then any senior person that sits next to her...
This system means no one is blocked.
Exceptions
When approving purchases, you might come across some exceptions depending on the business/industry you are in. Here are some examples:
- IT - Be mindful that IT purchases could be of a higher amount and require a unique approval flow.
- Marketing - The marketing team usually works with a previously approved budget and this could vary in period e.g. monthly, quarterly, etc.
- One-time vs. subscriptions - Make sure to highlight when a cost will be a one-off or recurring cost. This is important if the team works on a budget basis.
As a software consultant, knowing your industry, your project management methods and your technologies are vital. Although we're always looking for the latest best practices and shiny new technologies, knowing the fundamentals is vital.
Although everyone learns differently, and some prefer video sites like www.pluralsight.com to reading, these books are still full of useful information:
- Software Requirements and Specifications: A Lexicon of Practice, Principles and Prejudices (by Michael Jackson)
- Software in 30 Days: How Agile Managers Beat the Odds, Delight Their Customers, And Leave Competitors In the Dust (by Ken Schwaber)
- Code Complete: A Practical Handbook of Software Construction, Second Edition (by Steve McConnel)
- Design Patterns(by the Gang of Four)
- The Pragmatic Programmer (by Andrew Hunt)
- The Mythical Man Month (by Frederick P. Brooks)
- Test Driven Development: By Example (by Kent Beck)
- The Phoenix Project: A Novel about IT, DevOps, and Helping Your Business Win (by Gene Kim, Kevin Behr & George Spafford)
The easiest way to digest complex information can often be in video form, as it gives you both audio and visual queues to help with your comprehension. the best places to find good software development videos are:
- Pluralsight- showing developer courses to help learn new technologies
- SSW TV - showing webinars, how to videos, and interviews with leading industry experts to keep you updated on all things Microsoft
When you notice that someone has done something that could have been done better, make sure you are tactful in your correction/suggestions. When you are giving someone a correction or tip, try to include an URL to back up your point.
For example, if someone sends you an email that should be an appointment:
Subject: Meeting
Hi Guys,
Let's meet on Thursday at 3 PM
Figure: Someone requests a meeting using a normal email message
You could reply in different ways:
Subject: RE: Meeting
Hi Mary,
FYI - an appointment would have been better. See rule in Rules to better Email
Figure: Bad Example - Just pointing the mistake
Subject RE: Meeting
Hi Mary,
I noticed you did not send an appointment for this meeting. I hope you don't mind, but I have gone ahead and created one so we don't all have to set a reminder individually.
Have a look at our Rules to better Email. We have a number of helpful standards like this if you're interested.
Figure: Good Example - Being proactive to solve the problem + pointing the mistake in a friendly and polite manner
Learning lessons the hard way is a fact of life, but one of the great things about teamwork is that you can help others avoid making the same mistakes over and over again. This is the foundation of great standards! But what happens when a new (or old) team member misses a standard?
"The floggings will continue until morale improves"
- A bad manager
Everyone makes mistakes. If you run around wielding your authority as a cudgel, telling them they'd better comply or else, two things will happen:
- They will resent you
- They will only bother following standards when you're around
For example: if one of your standards is for developers to send "test please" emails, there's a hard-learned lesson behind that standard (or else it wouldn't exist!). You can beat your developers over the head with the rule, or you can take 5 minutes to explain the reasons why it exists and why it's important.
From: Boss To: Mark Subject: No test please email Figure: Bad example - This email doesn't tell Mark why this is so important.
From: Boss To: Mark Subject: Test Please emails standard Hi Mark,
Regarding that PBI you worked on yesterday.
We have a standard about sending Test Please emails to the client (check out this rule).
This saves time by getting early feedback, allowing bugs to be fixed while it's still fresh in the developer's mind.
The longer the feedback loop takes, the more expensive a PBI becomes to the client :(
Figure: Good example - provide a link to your standard and the main reason(s) why this standard is important
Recurring tasks are the tasks that have been allocated to you to be done on a periodical basis. You may not have a specific task email in your inbox telling you to do this. However, these kinds of tasks are normally very important as they keep our system running.
For example: We have a Network Health report to tell our Network Administrators that everything in our network is running ok, so it will be the network administrator's responsibility to check these reports daily to make sure all issues are fixed or escalated.
Check your employee responsibilities and make sure you do all of your recurring tasks on time and efficiently. If there is any roadblock stopping you, you need to escalate the issue to your manager immediately.
One way to manage this is to use recurring Outlook appointments, especially if it's something you only do monthly or less. If it's a daily or weekly task, you should just remember as you'll be doing it regularly.
Imagine you see one port of a hub not working, what do you do?
When you see something not working like a phone or a power point, don't ignore it. Instead attach a short note to it that indicates it is out of order and notify the appropriate person.
This shouldnt be a large task - prepare a quick note form that reminds you what is broken, who you have to call to fix it and any additional details that may required to ensure the item is fixed properly or replaced.
Tip: Sticky notes work great! ✏️
If you want to have a more formal version of the sticky note, the SSW Design Team has created this PDF which can be printed and attached to stuff that needs fixing (however, normally just a yellow sticky note and an email does the job just fine)
When something happens in your company, always send around an email so that the whole team is kept in the loop.
Examples of events that you should send an email around for:
- An update to a company standard or procedure (including a link to it)
- Births and marriages
- Employees who are starting or finishing
- Anything significant that is happening in your life
You should really feel free to share any good news you have with everyone. It will make the office feel more like a family and not just a place to turn up to work.
Hi Guys,
I'm heading to Sanya with my wife and kid this weekend. I still remember the good time I had there last year at the MVP China Summit; also I think I need to recharge myself a little bit after long time working over 12 hours almost every day.
Pretty excited right now as this will be the very 1st official trip that I take with my kid. I hope he likes the beach.
Be prepared for more photos from my Nikon D80, I think it will be having a hard time during these 5 days.
Will be back next Thursday, so if you need me for anything, call my mobile XXX (if you are in Sydney), or YYY (if you are in Beijing)
Figure: Good Example - Notify others and provide them with contact details
If you see something in a blog that interests you or that you disagree with, reply to it. You should not be afraid to voice your opinion and it's a great way to make a name for yourself and your company on the internet.
Whenever anyone in your organization responds to a blog entry or forum, they should always use a standard company signature.
{{ BLOG COMMENT }}
- Adam Cogan ssw.com.au
Figure: Good example - Name and company after a blog comment
This will help with branding, company recognition, and brings a sense of unity to everyone within your company when they see each other's entries.
Developers often have a very clear idea of what kind of work they want to do. They might want to develop expertise in SharePoint, CRM or SQL Server. They should always keep their manager informed of what kind of work interests them and on which they want to focus. Managers often have many staff to keep in mind and unless you remind them they may well forget and give a hot opportunity to another staff member.
You should also let your manager know what work you'd prefer NOT to do. This might be older technology, testing or niche areas. Despite the expression of your preferences to avoid particular types of work, you should understand that your manager will sometimes unavoidably have to give you tasks in those areas.
As a responsible employee, there should be no excuse for ever losing data, especially if it belongs to a client. For this reason, it's important to make sure:
- Your backups are working properly (backups always succeed, restores fail)
- You are using source control for any code you develop
It doesn't matter where you are, you can still version control your source code and it's important to talk the client into this in order to avoid any possible disasters.
Sometimes it is quicker to explain something than it is to write a comprehensive email. This is particularly true when explaining an idea or concept relating to a product, and you need to go backwards and forwards many times to clarify details. If you can't easily speak directly with someone, due to schedule, travel, or time zone constraints try sending a voice recording instead.
Sending videos or voice recordings can be thought of as a slow paced conversation. There are many benefits to sending voice messages instead of email when iterating over concepts and ideas.
Sending and listening to voice recordings feels more personal than reading an email, because it is possible to hear the person's mood and emphasis more naturally. It is also helpful if the recipient needs to re-play a portion of the message to understand it, especially for people who are communicating in a language other than their native tongue.
Voice recordings and videos shouldn't replace email entirely, but can be valuable tool when used at the right time. There are a number of technological tools available to facilitate this. Here is a list of some of the services you can use:
For videos, you should put them on youtube as unlisted videos and send the link
Studies have shown that you can get up to a 30% increase in productivity by using more than one monitor when you work.
Providing users with the ability to access more information and images simultaneously, multiple monitor configurations allow for more efficient multitasking between applications.
For example... if you were a developer, you could have your references in one monitor and your Visual Studio in another, and directly compare the 2 without compromising on space or layout.
There's nothing more exciting than having a holiday planned, but while you are away, the show must go on.
It's essential your responsibilities are handed over for a few reasons so your absence doesn't cause issues and your leave is undisturbed.Tip: If someone is calling when you are on leave, it's probably because you haven't handed over your responsibilities properly.
There are a number of things to remember to handover
- Scrum Master/Product Owner roles - these roles are required in some meetings, so ensure they are covered or the meetings are rescheduled
- GitHub CODEOWNERS - check you are never the only code owner on a area of the codebase
- Induction approvals - ensure someone else is able to approve new staff inductions
- Other employee responsibilities e.g. Organizing events, managing the office, etc.
All these handovers should be documented in an email, checked by the person taking over.
Timezones can make communication and collaboration difficult, but there is a silver lining! If there is a time-sensitive task you can asynchronously collaborate and get it done faster. Imagine a relay race, where you pass the baton to the next runner. This is how you should think about collaborating across timezones.
To do this effectively, you need to do a project handover every day. This takes a lot of thorough documentation and communication.
Send an email at the end of your day to the person in the other timezone. This email should contain the progress you made today, any decisions that were made, and any big changes that impact the rest of the work.
You should list the remaining tasks and ask them to reply if they have completed the tasks from the previous email.
Passing the baton
To: {{ COWORKER IN OTHER TIMEZONE }} Subject: {{ SUBJECT }} Hi {{ COWORKER IN OTHER TIMEZONE }}
Handing the baton back to you. Here is the progress I made today.
{{ KEY CHANGES (any decisions that were made or big changes that impact the rest of the work) }}
{{ REMAINING TASKS }}
{{ REPLY DONE (or not done) TO PREVIOUS EMAIL'S TASKS }}
<This email was sent as per the rule: https://ssw.com.au/rules/collaborate-across-timezones>
Figure: Good example – A nice handover email to your coworker in another timezone, repeat this process until the task is complete
If there is business hours overlap, get a checked by from the recipient.
Use Time Zone Converter – Time Difference Calculator
Time Zone Converter – Time Difference Calculator provides time zone conversions that account for Daylight Saving Time (DST) and local time zones, while supporting present, past, and future dates.
There are many good reasons why it's better to work in pairs - enhance productivity, creativity, and problem-solving capabilities.
Why use pair programming when you can use AI 😉?
AI can work as your pair, handling repetitive tasks, give quick feedback, and help with decision-making, making it easier to work solo in certain situations. While AI can't fully match the creativity and interaction of working with someone else, it's a great tool for cutting down the need to team up for routine or technical tasks.
Whether it's brainstorming, coding, or tackling complex tasks, working in pairs often leads to more efficient and high-quality results.
For everyone
- Less time stuck on a problem - Having someone familiar with the project will help you work through the problem
- Mutual motivation and knowledge sharing - Keep each other motivated and absorb knowledge from each other
- Increased productivity - Experience shows that two people working on a problem together are often more productive than one person working alone for twice as long
For developers
- Code will have less workarounds - If something doesn't add up to a developer, they've got someone to ask
- Cleaner code - You know someone else is going to be looking at your code
- Support - When you need changes down the track, you have two people to call on
"I have found developers work better in pairs. I am not a fan of the classical pair programming - which is 2 developers working on the 1 PC. There are times for that especially during brainstorming activities, however on a day-to-day basis, I advise that developers work in pairs, but they each have their own PC."
- Adam Cogan SSW Chief Architect + Microsoft Regional Director
If you are not sitting next to a person working on the same project, then fix it. If you cannot then at least mention it to your manager.
Working alone and getting stuck
If you find yourself working alone, which we don't recommend, you should speak up as soon as possible. You should make it clear that working alone is not best practice and that developers working together are worth more than the sum of their parts.
1 dev plus 1 dev doesn't equal 2 devs worth of work. It equals 3! 🎉
Is there an overhead?
Some projects are done quicker with two people - especially when they are complex. But on most projects there is an overhead, because of the extra communication between the developers - you now have to please someone else - not just yourself.
Estimates vary for the overhead, but say it is 20% extra, this is more than offset by the cleaner code and better solutions that come from two brains working together.
What if you are working remotely from each other?
If you are working with someone remote, you will be using an application like Teams, TeamViewer, or another support tool to view one another's desktops so you can help each other out when necessary. You should have a 2nd monitor.
What is the best code collaboration tool?
Visual Studio Live Share - See Video (3 minutes):
- VS Code - Install extension
- Visual Studio 2022! It's built in!
Code With me - A great tool for JetBrains IDE users who want to pair program. Though it isn't supported in Rider right now.
Alternative approach when there’s not enough budget or work: weekly senior involvement
In situations where there isn't enough work for two people, or budget constraints limit resources, an alternative can be adopted. This approach involves a single developer handling the majority of development tasks, with a more senior developer contributing primarily on Sprint Review day. See below for an example:
If a client only has 1 developer working with them for 1 day a week, they must still keep regular Scrum cadence. In this case they would break the work down into 5-week (5 working days) Sprints. Every 5th booking, a senior developer or Solution Architect must be booked with them to ensure the project is running smoothly and to help them plan the next Sprint.
The primary developer progresses the project mostly autonomously, while the senior developer's weekly involvement primarily ensures strategic oversight and quality control, particularly during Sprint Reviews. While the primary developer has greater autonomy, the availability of the senior developer for occasional guidance is crucial. This ensures the project remains on track and the primary developer does not feel isolated.
In a situation where we can’t even do the above, get cross-approval from another Account Manager to make sure the exception makes sense.
It never hurts to get the advice of your colleagues, and getting advice from someone who's been doing what you're doing for a while will always teach you something new and improve the quality of your work.
For development, as your application starts to develop into a usable entity, make sure you get your Chief Architect (or equivalent) to have a look at what you're doing and weigh in with their advice.
You can do this through either a test please on an individual piece of work, or a code review for the entire project.
When building an application for a client, you should implement functionality which will notify you personally whenever it throws an exception and log the issue for review.
There are a few reasons to do this:
- It gives you a sense of ownership of the project
- It makes finding out what's going wrong easier
- You can keep a history so you can see if there are any recurring exceptions
- You can ensure the long term quality of you application
- You are not just washing your hands and leaving at the end of the release
You will find that this will lead to more clients who are happy to use you into the future because they know that you care about their application.
Testing is a fundamental aspect of software development, serving as the quality assurance checkpoint that ensures a product functions as intended, meets user expectations, and operates reliably in various environments. This crucial phase helps identify and rectify issues, enhances user satisfaction, and ultimately safeguards a software's reputation and success.
These are the steps you should take when requesting a "Test Please":
- Find 2 free testers to send the email below
- Stop working on the project until you receive either a "pass" or "fail" email
- Create your "Test Please" following this template:
To: John Subject: Product Name v1.11 - 'Test Please'
Hi John
I am looking for bugs or approval to release this version.
- Please test the following modifications:
- {{ FEATURE TO BE TESTED }}
- {{ FEATURE TO BE TESTED }}
I have done what I could for my code's health. E.g.
- Run SSW CodeAuditor - it has {{ X }} errors (if not 0, give reason)
- Run SSW LinkAuditor - it has {{ X }} errors (if not 0, give reason)
- Kept my eye on Application Insights
-
Ensured all packages are as up-to-date as possible
- Updated:
- Updated {{ PACKAGE }} from {{ VERSION }} to {{ VERSION }}
- ...
- Out-of-date:
- {{ PACKAGE }} is on {{ VERSION }}. Latest is {{ VERSION }}.
- ...
Specific issues to look out for are:
- {{ ISSUE }}
- {{ ISSUE }}
The latest version (Product Name v1.11) is at {{ URL }}
Keep in mind that a "Test Please" is an urgent task and that it should start within the hour.
Notes:
- Know the definition of a bug
- Understand the importance of conducting a "Test Please" internally and then with the client
-
Send suggestions/bugs one email at a time (with unique and good email subjects) making it easier to fix and reply "Done"
- Please CC the project manager and the client
-
Do not reply to this message until you can say:
- "✅ Test Please succeeded (as no Critical bugs). You are ready to deploy."
or - "❌ Test Please failed (as per Critical bugs reported)"
- "✅ Test Please succeeded (as no Critical bugs). You are ready to deploy."
Regards,
Note to developers: If current version is better than the last version you can release (even with a test fail) as long:
- The bugs reported in the test fail existed in the old version
- 2 people have tested it
- The changes in this version are fairly important to get out
- You get to work on the failures ASAP
Don't send a 'Test Please' content via IM
You may use IM (e.g. Microsoft Teams) to point the tester to the 'Test Please' email.
"Ping! I need you to check my 'Test Please' email
See subject: Product Name v1.11"What if you are doing an email test?
In most cases, you can get your email 'Checked by xxx'.
For really important stuff you may need to actually send a 'Test Please' email to test your email. In these cases:
- Add 'Test Please' highlighted in yellow to the top of the email body
- Do not add 'Test Please' to the subject (it is too easy to forget removing it later!)
What if you need to get input from a few people?
If you have received a task that requires input from a few people that were not originally cc'd on the email or on the 'To Myself', like getting feedback on a design, it's nice to give everyone the entire task context.
You have 2 options:
- Keep the "test" in the same thread (recommended)
In this case, just add the people you need to the thread, asking them specifically for a 'Test Please' on what you need - Create a new thread for the 'Test Please' This is for when you have a good reason not to (e.g. avoiding too long email threads; too many people cc'ed, etc). In this case, make sure you include the original thread subject in your email, so people know the main task is happening there
This way everyone will have the entire history of the task and its progress.
What if you're doing a Windows Forms test?
For Windows Forms test you should include this info to the email:
- The latest version of {{Product Name}} has been uploaded to \frog\SSW\Download[ApplicationverX-XXbeta.exe
- Test on a fresh VPC image of Windows
- Install into a non-default directory
- Check the installation folder for misplaced items
- Test Unit Tests via "Help - Run Unit Tests"
- (If Applicable)Test the "Create" and "Reconcile" buttons. Read Rules to Better .NET Projects
- Test open and closing forms and saving values
- Test most buttons and menus and links
- Disable your network connection and test again (check for unhandled errors)
- If your test fails, please rename the executable to ApplicationverX-XXfailed.exe
Note: For clients on fixed-price contracts, the 'Test Please' reply marks the start of the 30-day warranty period.
In order to ensure the quality of the code you deploy, make sure you don't deploy until you have got your code fully tested and received a "test passed".
There is more than one potential successful path to get work from "In Progress" to "Done" - what's important is that this process is consistent for a project and the whole team follows this process.The Scrum Definition of Done is a great tool to document and promote this consistency, and the Sprint Retrospective meeting is the perfect opportunity to review and refine this document.
Here are some examples:
- In some teams, the client directly participates in the Scrum team by testing PBIs as they are completed. In this scenario, a good approach is for these testers to be the only users that can mark a PBI as 'Done' on the Azure Devops task board.
- With automated deployment tools such as Octopus deploy you can give your client direct control over deployment resposibility by controlling access rights to the "Deploy to Production" button.
Figure: Giving clients sole access to the deploy button, allows them to take ownership of the decision to deploy.
For more information on this, see Rules to Successful Projects.
A common mistake is to use code or emails that you have previously written, and stored somewhere on your computer, and change around key bits to make it relevant for the current situation.
The problem with this is that you make it impossible for anyone else in your organization to do the same task to the same quality level.
Make sure your company has a common code base and email template store and endeavour to improve it regularly. This shares knowledge across your organization and makes sure everyone is working to the level that your company standards require.
Create Nuget Packages for reusable code libraries
The best approach to reuse code across multiple projects is to create Nuget Packages. When you need to update that library, it is then trivial to apply that update to your client projects.
For details on creating your own internal Nuget repository, read Do you create a private repository for reusable internal code?
Each team member has their own set of skills. There is no use hiding those skills "under a bushel". If you can at least share one idea a week the team's shared knowledge increases. This has many positive spin-offs, for example, the teams don't become reliant upon one individual, and when your idea is adopted your confidence increases allowing you to make more contributions in the future. Importantly, it's not only management that should contribute this way. Everyone has something to share.
William McKnight, the chair of 3M said: "It is essential that we have many people with initiative if we are to continue to grow."
As an example, if you have a handy tip, send an email to your team or add it to the KB.
Swearing is not acceptable at work. People should not get comfortable with bad language as the work environment would suffer. You should be especially careful when giving and receiving feedback.
Some good deterrents are:
- A swear jar
- To enforce 10 push-ups for every infraction (recommended - this is the same concept as a swear jar but also promotes fitness).
Communication and how you express yourself to your co-workers and clients is reflective of the company you work for. You should practice correct English, as it displays your professionalism and courtesy.
For example:
"It's going good" Bad Example - using incorrect English "It's going well"Good Example - using correct English
Check out this video which highlights 5 common mistakes made by native english speakers:
If you feel very strongly about this, you could enforce 10 pushups per infraction, similar to the penalty for swearing
It's important to provide a physical space for each employee to store their stuff and as a bonus they can also receive packages and mail. Lockers should:
- Be clearly labelled with the staff members name
- Ideally, should have a slot for mail
- Ideally should be half-height so you can hang a shirt or a jacket
- Encourage the goal of a clean desk policy
- Encourage the chucking of paper - it should not be a place to keep all of your scraps of papers. Paper tends to get lost and should be transferred to tasks as 'To Myself' emails and then chuck. See Rules to better Email for more information.
The 5S desk space organization system was invented by the Japanese. Basically, it is a 5 step daily procedure to keep your desk clean and common stuff in the same place. When you have no useless stuff around, it brings you peace of mind and efficiency.
Here are some resources on the topic:
- How to Apply 5S : Home Office Desk by Darion Mabe
- Let’s Get Organized! How to 5S your desk! by wmdavis
- 5S (methodology) on Wikipedia
Photo: courtesy of goleansixsigma.com (source).
Photo: courtesy of goleansixsigma.com (source).
Should we be listening to music at work? I've had the debate with numerous people and decided that, generally, you should avoid it.
Regardless of whether it is AC/DC or DotNetRocks, music/podcasts should not be used in the workplace, especially using headphones, because:
- We want the team to work with each other, and we don't mind that they hear other conversations going on. Hopefully, if they hear about a problem they can fix quickly, they'll help each other out.
- It's been suggested that multitasking lowers your ability to efficiently carry out a task by as much as 20%! (e.g. doing your task at hand along with listening to tunes)
- It can be anti-social - some people can shelter themselves
- It regularly leads to "oh, I love this song, you should hear it" which subsequently turns into a bigger distraction from work for multiple people
Others have said we are wrong with reasons like:
- "It helps me give you 100% - since the office is noisy I can concentrate and I need to block out a noisy environment"
Isn't the music just creating an additional noise source? - "It helps me relax"
Yes, we love hearing a good song, for example, when Adam hears Robbie Williams' "Better man" it gets him pumped a bit and it has a positive effect on his state of mind. We are unconvinced it helps us program better. - "In an open office, headphones are not merely transmitters of sound, they are like ‘Do Not Disturb’ signs on a hotel room door." In several open offices using a headphone seems to be encouraged as the most effective for productivity.
There is, however, a use for it being "background" music in some scenarios; like when you are doing time-consuming mindless stuff like fixing data, building VPCs/VMWare or waiting for long builds.
One risk of running a consulting company is your employees can start to feel disconnected from the main organization, especially if they spend all of their time working onsite. One solution is to get them to work from the office at least once or twice per week, and another is to hold regular company meetings.
These meetings should be held every 1-2 months as needed, and give the chance for everyone to get together and reconnect. The business owner can highlight any key things that have happened in that time and point out any changes for the next period.
There may also be time for a couple of other people to address everyone if there are any key things that need to be brought up.
So that it doesn't impact client work too much, it's generally best if this meeting can be timeboxed to about 1 hour and be held over lunch.
After each meeting, the organizer should set the date for the next one and send out an appointment with a "Skype Meeting" request, so available people can simply click the "Join Meeting" link to join, as this saves time and makes the beginning of the meeting run smoothly.
To: SSWAll Subject: Join us for the company meeting Hi All
(Emailed SSWChapel@ to book it in its calendar)
Join us for the next company meeting. We generally try to hold these every few months to keep everyone connected and up-to-date.
If you’re at SSW Sydney on the day, come to the SSW Chapel, otherwise, click the link below to join the Teams meeting
Let me know if you want any topics raised.
<This is as per the rule https://ssw.com.au/rules/do-you-hold-regular-company-meetings/ >
Figure: Good example - Email template for the meeting
Some managers or approvers can get very busy, and if you don't manage them closely, can cause deadlines to be missed, opportunities to pass by, and work to be wasted. Remember, they're usually doing a lot of other important work, and although approving your piece of work is important to your workflow, it may be less important in the big picture than what is taking up their attention.
The best way to ensure your work is approved and goes live is to physically sit down with the approver and get it approved on the spot. However, if this is not possible due to unavailability, you need to have a back up plan to make sure your work is not wasted.
The best solution in this case is to set an agreed timeframe for any approval, after which time, you will assume a "test passed".
To avoid the approver feeling hard done by, make sure you do the following:
- The time frame needs to be more than reasonable, to allow the approver time to get to it if it's actually important for them to see
- The approver needs to be reminded when half of the timebox has expired, and again on the last day, to ensure that they are aware that their approval is about to be bypassed, and can request an extension if necessary. Read Do you follow up tasks effectively? to facilitate this
- If the approver needs more time, it is ok for them to ask for an extension. It is not, however, ok for them to just say "Don't go live until I've approved it", as this just puts us back in the same position we were in before we had this rule
To: Adam Subject: Test please - {{ PRODUCT }} Figure: Bad example - Chasing an approver with no set timeframe is frustrating and disempowering
To: Adam Subject: Test please - {{ PRODUCT }} Hi Adam
As per our conversation, you haven't got time to sit with me to approve this today, and you're very busy at the moment, so we've agreed that you have 2 weeks to approve this video before it goes live.
<This is as per https://ssw.com.au/rules/do-you-timebox-approval-requests />
Figure: Good example - An agreed timeframe is communicated so there are no surprises
Sometimes you can set a task or be given work that ends up taking much longer than expected. Timeboxing sets a time limit to a task, after which you must stop and move on.
Timeboxing allows you to give more context to a task by showing how much time (and therefore money) you are willing to spend. This typically applies to:
- "Nice to Haves" - If it takes too long, don't worry about it
- Risky tasks - I'm not sure this will even work, if you can't figure it out, don't worry about it
- Unknowns - This could take 2 minutes or 2 days. If it takes too long don't worry about it
Time box: 1 hour.
Figure: Good Example. A timeboxing of one hour. Assignee should not spend more than the time allocated on this task
Communication can be difficult (even if English is your first language!). When using Teams/Zoom/Skype, it might be tempting to only chat via text in IM, but this will not improve your skills or build a relationship as well as communicating verbally.
Tips to have a better call
Try to always answer the call with video (if weak bandwidth, use it for the first 10 seconds and say "I'll turn off video to save bandwidth").
Sound
- Be ready with the headset already on (it looks disorganized setting it up after you are on the call)
- Check the sound quality of the microphone - you need a good mic and it should be close to your mouth - if you are using the laptop mic, sit in close
Video
- Check the image quality of the camera
-
Beware of the angle of the camera - laptops with thin bezels now put the camera at the base, looking up your nose. Avoid them. Frame your head and shoulders in the shot, and keep the camera lens at or above eye level - use a stand if necessary
-
Get your video background right
- Keep a light source on your face, and try to avoid sitting with a window behind you
- Have a microfiber cloth and wipe off the lens from time to time
Text
- It's always helpful to confirm things you're talking about with typed text during the call (especially helpful for people with English as a second language).
For more info, see how to look and sound great online
Tip: Help the other person with following this rule by taking a screenshot of a call with them, then give a mark /10 with good and bad feedback. E.g. Sound/video quality, background.
A great way of collaborating with a team or presenting a new solution to a client is using a visual display of your recommendations.
Using a whiteboard is a great way of collaborating and brainstorming which works quite well. But a physical whiteboard is a large ugly object that takes up a fair amount of room, often isn’t kept clean, and doesn’t allow for people to collaborate remotely. There are modern alternatives that work even better, let's have a look at them.
Scenario: Software consultants often use architecture diagrams to present a solution to the client. These graphical representations are used to help all of the stakeholders, the developers, the designers, and the clients visualize the high-level structure of the system or application to ensure it covers all of the client requirements.
#1A Casting your screen (recommended - non collaborative) ⭐️
If you are in a situation where you just need to show someone what you are doing then you can use your laptop or iPad and cast it to a monitor or a remote screen.
#1B Teams Whiteboard (recommended for remote collaboration) ⭐️
There are 2 ways to open the Teams Whiteboard:
- In video chat the Share Icon | Whiteboard
- In Teams chat window Click + | Whiteboard
Figure: Using Whiteboard in Microsoft Teams
Figure: Using Microsoft Whiteboard App #2 Tech Whiteboard replacement
#2 Electronic whiteboard alternatives
- Samsung Flip ($3k AUD)
Figure: Using Samsung Flip
- Microsoft Surface Hub 2 (about $12K AUD)
Figure: Using Microsoft Surface Hub
#3 Paper Whiteboard (Low tech – a large piece of paper)
Old school but it is great to have a pen in hand, you can always just grab a big piece of paper and draw on it together.
Bear in mind that paper is not ideal because you can’t wipe it out... you have to start again #ouch
#4 Whiteboard and marker - Low tech (ugly)
The traditional whiteboard.
Quote from Adam Cogan (apparently not a fan of whiteboards in a tech office):
I believe whiteboards are a sign of an old office… and they are ugly. They’re not a sign of a modern office. Sometimes they are useful and I know some people really like them (generally older people). I have seen the digital whiteboards (usually targeted at teachers) but I think they are horrible to use. The common scenario is for a Spec Review. I am always happy when I see devs using their device and casting to the TV. And the subsequent notes get saved to Microsoft Teams.
#5 Writable wall - Low tech (ugly)
Low tech (ugly) – Paint a wall to be writable or put some writable film on an office glass wall
Suggestions for sketching software
There are many apps that allow you to sketch what you're talking about e.g.:
- PowerPoint
- Visio
- OneNote
- Mural (collaborative app)
- Miro (whiteboard app)
- Microsoft Teams Whiteboard
- Microsoft Whiteboard
- diagrams.net (was draw.io) ⭐️ - often collaborative sketches generated above enable the creation of a beautiful architecture diagram (Do you make awesome documentation?)
Note: These work fine with a mouse, they work even better with touch screens, or pens/styluses
Throughout your career, you might come across a scenario that feels unfair. In these situations, communication is vital for resolving conflict and making all parties feel content with the result. Let's take a look at some scenarios that may be perceived as unfair:
- Someone might get a promotion when you felt you deserved it more
- A group of employees might be left out of a public yearly bonus
- A colleague might be put on a project that someone else is more suited to
There are 3 perspectives to consider and each has different strategies for maintaining a good working environment.
Manager
Managers are human, and sometimes don't make the right decisions.
- Avoid unfair situations - Steer clear of arbitrary decisions that could be perceived as unfair. For example, if you are going to choose who the best employee is, you better have numbers to back it up.
- Communicate decisions - By communicating the reasons for every decision you set the right expectations for employees and prevent them from feeling frustrated.
- Give a heads up - If you know someone might feel a situation is unfair, give them a heads up ahead of time.
Receiver
Getting an accolade or present is great but consider your colleagues.
- Remain humble - You might feel proud of your new accomplishment and that's awesome. However, make sure you don't advertise or boast about it because that may cause resentment among your colleagues and foster a bad working environment.
Neglected individual
Missing out on an award can suck. What should you do?
- Ask questions - Finding out the reasons for decisions will help you understand why it happened. That knowledge will be valuable to you in the future.
- Speak up - If you feel things are unfair make it known tactfully. If it is bothering you, the longer you wait, the worse it becomes. Speaking up will give the person making the decision a chance to explain or rectify the issue.
-
Be reasonable - Everybody has their day of sunshine. Even if it doesn't totally make sense to you. It would be awesome if you can be genuine and privately send a congrats or even better do it publicly.
"Always clap for your friends, even if their dreams come true before yours."
- Adam Cogan (8 min)Video: Fairness and Helping Each Other - 10 tips with
Everyone wants a place where people help each other. Unfairness can really impact people in the workplace.
It all starts with how you approach things, some people are better than others at dealing with unfair situations.
Lets assume one of these common scenarios:
- New great project – someone is assigned to it... someone is unhappy
- New promotion – someone gets it, someone else is unhappy
These might seem like unfair situations. People don’t want to be unfair... friends don't... bosses don't.
Here are 10 tips for how you can manage unfairness.
- Gotta speak up - See Do you know to speak up?
- Happiness is relative - Unhappiness can come from comparisons with others. Instead compare yourself with your day yesterday.
- Get one thing in life, lose another - Can't have everything. When you are saying 'Yes' to one thing, you are saying 'No' to another.
-
The 'Happiness Equation' Happiness = Reality - Expectations.
If you want to be happier, then:- Reduce your expectations
- Increase your reality
- Consider luck - Everyone wants to succeed in life. But what causes some of us to be more successful than others? Is it really down to skill and strategy - or something altogether more unpredictable? Sometimes peoples success is simply luck. Read the book "Fooled by Randomness"
- Compete with yourself by embracing Scrum – Competing with yourself is the best approach. The same with teams. In software, Scrum is the best way of working as you only compare yourself... or your team with what you did before. Using empirical data is the way to go.
- Understand intentions - Try to see yourself in others shoes.
Understand that people don't want to be unfair. It is common to be assuming the wrong stuff. -
Be the 'squeaky wheel'
"A squeaky wheel gets the most oil."
Ask questions, and you will understand even better the logic your friend or boss is using. Bonus they now know this is a topic you have interest in... so they'll give you extra information.
- Have attainable ambition - You need expectations to be realistic enough to push you, not so much that it makes you unhappy.
Overly ambitious people are often unhappy... they never get there! Sometimes people find they are never rich or successful enough... -
Celebrate other people's wins - Be at peace and in a place where you are pushing each other up, rather than climbing over each other. Everybody gets their days of sunshine. When others achieve a goal, be happy for them, send a nice message, 'like' their posts, etc.
"Always clap for your friends, even if their dreams come true before yours."
Do the above and you can have a culture of helping yourself and helping others.
When a company has many different office locations, often people in one office aren't familiar with people in other offices due to a lack of interaction. This problem is particularly pronounced where you have offices that span multiple time zones or countries.
Tip: You can use a time zone converter to know the time difference between offices. You may also install one of the numerous apps to help with that info.
What improvements come from better interaction?
It is crucial to build interaction between all company offices because it often improves the following:
- Communication
- Relationships
-
Technical skills
- Knowing alternative approaches
-
Access to resources
- Knowing who has certain skills
- Knowing who can provide you with localized or domain specific information
- Cooperation
- Confidence
-
Understanding of foreign perspectives
- Knowing why someone from another culture responds in a different way to what you are used to
Boost interaction with unique strategies
Think about what your company can do to increase interaction. There are tonnes of ways that interaction can be developed. Examples include:
Team building activities
- Playing a game/solving a puzzle together
- Reviewing/updating a company standard together
- Having a company retreat to bring everyone together
- Going on a group trip (e.g., to the Great Wall of China)
- Visiting local companies together
- Having employees from China to work in every Australian office for a month each or vice versa
- Having developers from Brisbane spend a week in Melbourne
- Pair programming
- Mob programming
Rotating Daily Scrum
- Each week, 1 person from each office is paired up to do a Daily Scrum with others
Creating cross-office teams and events
- Putting developers from the China office onto a project with Australian developers
- People from different offices are paired up to have virtual coffee
- A Chinese dev does a presentation at the Sydney User Group
Cultural events and videos
- Celebrating holidays from other countries
- Organize meetings to discuss culturally different issues
- Have a weekly language exchange catchup
- Organize a cultural performance day where everyone shares a piece from their culture
Product videos about other offices
- What is it like to work in the China office?
- What is your reaction if you see Chinese on a web page?
- What are the differences in the app market in China and Australia? I.e. WeChat vs Facebook
Fun weekly company meetings
- Everyone meets on Friday for 30 minutes to discuss a fun question
No matter how well adapted your business and processes are, there's always room to improve and learn.Getting feedback from others, outside the critical distance, helps to fine-tune ideas, even if you may think your processes are ideal.
Once you've built a fantastic team of experts, it's important to actively listen to their opinions and ideas to continue building a great place to work and deliver more value to your customers.
Having a regular forum like this is a great way to achieve also achieve 2 other important goals:
- Educating the team
- Aligning the company
In the highly dynamic space of software development, there are new frameworks, features and languages constantly being released, hyped, maturing and sunsetting.No-one has the time to keep up with everything that's going on, so it makes sense to gauge the opinions of your team - there's a good chance that at least one of them has an opinion!
Setting up a regular schedule to collect everyone's opinion is great to build up a habit and ensure that you've always got new ideas coming in.
Gather Your Team's Opinions
Gathering and actioning these opinions is a relatively straight-forward process.While it may be tempting to stick to only business oriented topics, it's a good idea to remember that this process works well to spread knowledge around your team and upskill everyone!
This process typically has 4 core steps, performed in a regular cycle:
- Publish an article on a new technology or process that you'd like to explore as a team
- Send out a survey to everyone on the team, asking them to review the article and give their feedback
- Review the results and implement feedback
- Publish changes
1. Publish an article
If you're excited about a shiny new technology or process change that you've read about, choosing a topic for the article will be easy.Sometimes it may be a bit more difficult, this is where your team could contribute ideas that they want discussed.
Write up an article and publish it somewhere appropriate for your team to access.Make sure to include bad and good examples to really get your point across.
2. Send out a survey
Once the article is published, send out a survey to your team and set a deadline for submissions.Without a deadline, it's difficult to start the review process as responses can come in well after you've moved on to the next cycle.
In the survey, ask for the team's thoughts on the idea presented in the article. Both positive and negative criticism should be encouraged - the point is to choose the best ideas, bad ideas should be rejected.A really effective metric to include is a star rating out of 5, this can be averaged to gauge the general sentiment of the team at a glance.
3. Review results
Once the deadline has passed, review the survey submissions, taking note of any:
- Particularly high or low ratings
- Suggestions for change
- Ideas for future editions
Don't just cherry-pick the ideas that you immediately like the looks of, it's worth examining (or even better, discussing) any submitted ideas.Your team members will appreciate feeling heard, so reach out to those members who submitted ideas which you don't agree with or are impractical to discuss why.Not only will this ensure they feel valued, it will also help teach them your reasoning and improve their future suggestions.
4. Publish changes
This process doesn't have much significant value if you don't action any of the submitted suggestions, we are looking to not only educate but improve as we go!If some ideas from the survey are actioned, make sure to let the team know.This encourages further feedback in future iterations and is an efficient way to notify everyone of the changes.
Stay Regular
It may sometimes be tempting to skip a scheduled cycle, but to maintain habits, it's important to try to send one out anyway.To ensure you always have something ready to go, set up a repeating meeting a few days before the scheduled release date each cycle to review or create the content.
The tickets sent to SysAdmins are often quickly resolved with a few clicks of the mouse. Calling SysAdmins first can save valuable time versus waiting for someone to respond to your ticket, making you more productive and saving the SysAdmins time managing ticketing systems.
When you need to request technical help, the steps you should take are:
- Draft an email with the details of the problem you want resolved. When describing the defect, follow the guidance at “Do you know how to report bugs and give suggestions?”. This will give you an opportunity to think through the problem and ensure that you cannot resolve it yourself
-
Call an available SysAdmin to discuss the issue. Share your screen with the email so that they can review the details you have collected
Note: If you are working outside of normal working hours and it is not an emergency, just send the email to raise the ticket.
- You likely won’t need to send the email if the problem can be resolved quickly. If the issue requires further investigation, add “(Checked by {{ SYSADMIN NAME }})” to the start of the email and send it
Being developers, it's often the case that we have to take our notebooks to visit a client or even home for the day. Using the suspend option is a great way to make sure time isn't wasted. Instead of shutting down and restarting (which as we know can be a lengthy operation) using suspend you can be working again much more quickly, meaning you can utilize that extra 10 mins in the car or on the train. Also, a good option is to have an SSD (Solid State Drive, as opposed to a Hard Drive) as your primary Operational System drive, as it drives the boot time down considerably.
Your notebook should also be configured so that if it is left in suspend for a long period of time (more than 10 minutes) it will automatically hibernate. However, your notebook should not automatically suspend or hibernate if the lid is simply closed. Both of these settings are in the Power Options in Control Panel.
Managing recurring tasks effectively can be a major challenge, especially when you don’t have visibility into whether tasks are completed on time or not.
Previously, we relied on manual methods like recurring calendar appointments or reminders. However, these approaches made it difficult to track the status of tasks and understand each team member's workload. Microsoft Planner and Power Automate offer a better solution, allowing you to manage, automate, and gain insight into recurring tasks for your team.
Why use Microsoft Planner and Power Automate?
By using Microsoft Planner and Power Automate, you can streamline recurring task management:
- Microsoft Planner organizes and assigns tasks to team members, showing progress and status.
- Power Automate adds automation, creating tasks at the right time, notifying team members, and syncing with other platforms like Outlook and Teams.
How to set it up in 3 steps
-
Select or create a Team in Microsoft Teams
- Ideally it has all the people you want to manage these recurring tasks for.
-
Create a Plan in Microsoft Planner
- Use Microsoft Planner’s built-in recurrence feature to create tasks that repeat daily, weekly, or at any specified interval.
- Example: Assign a task for team members to complete every Monday, such as sending a status update.
-
Automate with Power Automate (Optional)
- Go beyond Planner’s capabilities by using Power Automate to generate tasks dynamically.
Benefits of using Microsoft Planner
- Centralized Management: Track and monitor the workload of your team from one place.
- Visibility for Managers: Managers can easily see overdue tasks and assess team performance.
Additional benefits of using Power Automate as well
- Timely Notifications: Ensure team members get timely reminders where they usually work, like in their Outlook inbox or Teams notifications.
- Reduce noise: Tasks are only visibile in your Planner when they're supposed to be worked on, or if they're overdue.
By centralising and automating task management, you improve accountability and can quickly identify if any tasks are slipping through the cracks. Adopt this method to keep your team organized and efficient.