Rules to Better Software Consultants - Working in a Team - 65 Rules
Standards should *not* be followed blindly. Aim for continual improvement.
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.
But there are pros and cons to having standards:
- They help speed up the decision making process – getting you to the best decision faster
- They help consistency
- 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.
So standards should always help the critical thinking process, never replace it
If you think something can be done better or the standard is simply out of date, you should improve the standard. This is best done as a team effort with everyone making little changes often. Whenever you come across a standard which needs updating or improving you have three options:
- Fix it yourself straight away by editing 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"
What you should never do is to ignore it and hope someone fixes it.
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.
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, and 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 mins 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:
- 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"
- 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
- 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
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 with 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 something
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.
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.
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
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 FollowUpThento 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 minimise these:
To Myself emails (or 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 CCed.
See more on the to myself rule.
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
Buffers (AKA some 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
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.
Managing up is providing your manager with an option to approve, rather than asking a general question.
What do you want to charge for Cameron's rate?
Figure: Bad Example - Nothing to approve
What do you want to charge for Cameron's rate?
I would advise the standard $165 + GST until he has more experience. Please approve.
Figure: Good Example - Option to approve
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
We want to integrate our database with our website so that customers can purchase online.
Option A - 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 B (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 C - Build a new solution using a third party company - It will be expensive and it will take a long time.
Please let me know if you're happy to proceed with our recommendation, otherwise let me know if you have any questions.
Figure: Good Example - Multiple options to approve with reasons for each
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" focusses on the failing points for teams; 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 if 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
From: Jason To: Uly Subject: What's next?
Did I have a project or something due soon?
Figure: Bad example - you shouldn't have to ask that!
From: Jason To: Uly Subject: Northwind presentation v1 - review
We've got the Northwind presentation coming up next week. I've finished a v1.
Would you have some time on Thursday afternoon to go over it with me?
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 emails - emails with "URGENT" in the subject e.g. URGENT - the website is down
- Emails about timesheets or invoicing issues
- Your calendar - keep your calendar up-to-date,so people know where you are
- Your existing clients - e.g. Normal planned client work and client administration (preferably working on a sprint backlog and 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 - 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...
- Don't move an important task out of your inbox unless someone else is going to do it right away.
- You can use inbox subfolders to group and prioritize tasks
Also, it's common that priority orders change, but clients don't always mean to, so double check that the client means this.
When someone is asking you to do a new task, and you are still working on some other task, you should ask:
"Are you changing the priority order? Do you want this new task done before the current task I'm working on, which is xxx."
Figure: Confirm with the client "Are you changing the prior order?"
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?
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.
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.
- Please add a checkbox on the right, and make it red.
"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.
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.
Figure: Good example - Record yourself and your screen
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.
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".
More: The 3 A’s of Business (a great article from American Express) https://www.americanexpress.com/en-us/business/trends-and-insights/articles/the-three-as-of-business/
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.
This idea is different from the above rules 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 He said, it's a valid point when it came to creating a positive team environment. If you're willing to 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 work-place isolation disappears
- Productivity lifts as tasks can be achieved quicker
Figure: Going the extra mile This rule particularly applies when a person is blocked– as identified in their Daily Scrum.
"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
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://rules.ssw.com.au/great-email-signatures
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 an error, don't just fix it, as the developer who made it is likely to make it again. Instead, write an email to the person explaining what has been done wrong and how you would've improved the code. CC relevant parties to improve others, to collect your brownie points or to set a good example.
No one likes being corrected but hopefully, with everyone doing this in the office, it's not a matter of finger-pointing, it is working together to write better code or developing better solutions.
Tip: In code, if you don't know who made the mistake, use the annotate tool.
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?
When something is really personal, you can’t really correct someone unless you are a close friend and have credit with the person, so you should discretely ask your manager how to proceed in that specific case.
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
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.
Figure: Good example - nicely informing of a standards violation
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.
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.
If an initial meeting is required for the new work, the Account Manager should be in attendance where possible to help continue the relationship.
Hi Bill,As per our conversation, you want to book me for another 2 weeks on this additional work.Figure: Good Example - the account manager should be CCed on an email like this.
Long term success in a career requires:
- First is to put your heart into your job and enjoy yourself
- Get your responsibilities done
- Improve your company to become a better place every week
- Improve yourself to become a better person every week
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.
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.
Subject: Report needed
Today I needed to find xxx and so I had to write a query to find it. You can find it at \server\Reports_Adhoc\SalesByRegion.xlsx
I suggest adding this into our Performance Point Cube so I could find it at a URL.
Figure - Bad Example: If you can't build it yourself, send an email to your boss for a number
Figure - Good Example: Sate your own curiosity with Power BI
See Ulysses' video on how Power BI is the best tool for this: https://tv.ssw.com/6839/power-bi-finally-can-make-decisions-based-facts-ulysses-maclaren
"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;
- Identified where he did not do what he was supposed to; and
- 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.
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.
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, the employees "dress up" on Mondays and Tuesdays 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 on Mondays.
Then they "dress down" later in the week... so they have "Casual Thursday" and "Sporty Friday".
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)
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.
- 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.
-- Powered by SSW.Shorts --
See the code: https://github.com/SSWConsulting/SSW.Shorts
<This email was sent as per: https://rules.ssw.com.au/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.
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
- 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
Hi SSW Absence,
I'm going to Brazil for 2 weeks on Monday... wish me luck :)
Figure: Bad Example - not enough notice for substantial leave
To: SSWAbsence Subject: Patricia Barros - 2 weeks leave
Hi SSW Absence,
I want to book a ticket to go to Brazil for 2 weeks. I'd like to leave in about 4 weeks. I will, of course, check with my client before I purchase my tickets.
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.
- 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 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%)
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:
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 like that:
Let's meet on Thursday at 3 PM
**Figure: Someone requests a meeting**
You could reply in different ways:
Subject: RE: Meeting
FYI - an appointment would have been better. See rule #48 in Rules to better Email
Figure: Bad Example
Subject RE: Meeting
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 create one individually.We have a number of helpful standards like this which you can have a look at in our Rules to better Email if you're interested.
Figure: Good Example
If you criticize your staff:
- You don't make lasting changes
- They will resent you, resulting in lower productivity and employee morale
For example: If one of your responsibilities is to make sure all your developers sent "test please" emails, you can run around with a lot of authority telling them they'd better comply, but at soon as you're not around, they will resent you and not bother about it.
A better approach is, when you see developers not sending "test please" emails, explain that they save time by getting early feedback, allowing bugs to be fixed while it's still fresh in the developers' minds. Explain to them that the cost of a bug increases over time.
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 PowerPoint, don't ignore it, stick a note to it and tell the appropriate person.
Create a form that reminds you what is broken, who you have to call to fix it and any notes that may need to ensure that the item in question is fixed properly or replaced.
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.Subject RE: Vacation
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 by skypein: \*\*\*\* \*\*\*\* (if you are in Sydney), or 139 \*\*\*\* \*\*\*\* (if you are in Beijing) Figure: Good Example - Notify and give 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 world wide web.
Whenever anyone in your organization responds to a blog entry or forum, they should always use the standard company footer.
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 two without compromising on space or layout.
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.
There are many good reasons why it's better to work in pairs.
- Less time stuck on a problem - you have someone familiar with the project to help you work through the problem
- You can keep each other motivated and you absorb knowledge from each other
- Experience shows that people are more productive. As per Strengthening the Case for Pair-Programming
Extra for developers:
- Your code will have less strange workarounds - because if something doesn't add up to a developer, he has someone to ask
- Cleaner code - because 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.
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 TeamViewer or another support toolto view one another's desktops so you can help each other out when necessary. You should have TeamViewer showing on a 2nd monitor.
What is the best code collaboration tool?
Visual Studio Live Share - See Video (3 minutes):
- VS Code - Install extension
- Visual Studio 2019 Beta - Built-in
- Visual Studio 2017 - Install extension
Please complete this survey on Working in Pairs.
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.
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.
These are the steps you should take when request a "test please":
- Find two 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: Test Please - Product Name v1.11
I am looking for bugs or approval to release this version.
I have done what I could for my code's health. E.g.
* Run SSW Code Auditor - it has [XXX] errors [If not 0, give reason] * Run SSW Link Auditor - it has [XXX] errors [If not 0, give reason] * Kept my eye on Application Insights
Specific issues to look out for are:
* [XXX] * [YYY]
The latest version (Product Name v1.11) is at [www.url.com]
Keep in mind that a "test please" is an urgent task and that it should start within the hour.
- Send suggestions/bugs one email at a time (with a new email subject) because it makes it easier to fix and reply "done"
- Please CC the project manager [email@example.com] and the client [firstname.lastname@example.org]
- Know the definition of a bug.
- Understand the importance of testing. Read the rule on Do you conduct a "test please" internally and then with the client?
- Use good subjects on your emails. Read Do you realize the importance of a good email Subject?
- 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)"
What if you're doing a Windows Forms test?
Then you should also include this to the email:* The latest version of [Product Name] has been uploaded to \frog\SSW\Download[Application_verX-XX_beta.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 Application_verX-XX_failed.exe
What if you are doing an email test?
* DO NOT add Test Please to the subject. (it is too easy to forget later!) * Instead, add "Test please" with a yellow highlight to the top of the email body.
Note to developer: 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 * Two people have tested it * The changes in this version are fairly important to get out * You get to work on the failures ASAP
For clients on fixed price contracts, this email marks the start of the 30 day warranty period.
Use TFS to email the work items to the project manager and client:
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.
Good Example: when reusing code across multiple projects for a single client, hosting your own Nuget Server provides an excellent way to manage shared private dependencies
For details on creating your own internal Nuget repository, read this rule:https://rules.ssw.com.au/do-you-create-a-private-repository-for-reusable-internal-code
Good Example: If your library has potential outside of your current requirement, consider publishing to the world on Nuget. Often the work involved to make a library more generic and re-usable results in better-quality code.
You can find a selection of Nuget packages published by SSW here:https://www.nuget.org/profiles/SSW
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.
"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. SeeRules to better Email for more information.
Note: At Microsoft Canberra and other offices, they call this "Keep your office in your bag". See the 5S methodology for more details.
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.
Imagine this scenario... Mary notices a small error on a page in her intranet. She is a good employee... She opens up the backlog and reports the spelling error. As she sends it she says to herself "That took more time to report the error than it would have taken me to fix it".
Small errors should be fixed by the person who found them. Text changes can be easily done in SharePoint or WordPress. If you know who the culprit is, it might be a good idea to inform that person, including the things you have fixed.
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
(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://rules.ssw.com.au/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. Follow 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
I know you haven't had time so far to test this for me, but if you could please do so, i can go live... I've been waiting for quite a while now
Figure: Bad Example - chasing an approver with no set timeframe is frustrating and disempowering
To: Adam Subject: Test please
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 the rule, https://rules.ssw.com.au/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!). It might be tempting to only communicate 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").
- Be ready with the headset already on (it looks disorganized plugging it in after you make 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.
- Check the image quality of the camera.
- Beware of the angle of the camera - the ones 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 cardboard box as a stand if necessary.
- Consider what is in the background.
- 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.
- Get your video background right. Read Rules to Better Branding
- 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 and giving them a mark /10 with good and bad feedback on the call quality and background.
In Bing, if you are logged in to your work account, you can easily see your recent files!The same works for your work colleagues.
Suggestion to Microsoft: Put a checkbox "Show thumbnails" like Delve.
In a slower way, you can go to Delve to see this information with a different UI with big images.
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.
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.
#1 Laptop and cast to a monitor (recommended) ⭐️
Using your laptop or Ipad and then sharing your screen in a remote meeting and is easily saveable/sharable for later. There are many apps that allow you to sketch what you're talking about e.g.:
- Mural (collaborative 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
Figure: Using Whiteboard in Microsoft Teams
Figure: Using Microsoft Whiteboard App #2 Tech Whiteboard replacement
Samsung Flip ($3k AUD)
<br unselectable="on"> </div><dd> Figure: Using Samsung Flip </dd>
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
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 confidant when times are tough
- Care about your success
- Be a positive role model
- Dedicate some time just for you
- Be life-long learners
- Be open and honest
There's a few types of mentoring:
- #1 Consulting mentoring where you hire expert consultants because you don't have the skills within your company. This is most commonly all day engagements e.g. SSW's Mentoring Services.
If you have the skills within your company, then you can up-skill people using the brains of your own company and this usually falls into two groups
- #2 Ad-hoc mentoring (informal) where you get advice when you need it
- #3 Scheduled mentoring (formal), when 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... ha ha 😉
- 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
- Designing big solutions - Cloud Architecture
- UI/UX Design
- Great blogging
- Increasing your social media presence
Scheduled mentoring - How does it work?
As a mentee, you will be driving your progress. If you need additional motivation, add what you are learning to your Teams Status. Mentors - you can do the same, let people know what you're mentoring.
You will need to book a few appointments with your mentor:
- 5 minute chats at the end of every week to catch up to see how you're progressing
- 3x monthly mentoring sessions (about 30mins) to work on your target areas.
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.
- 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
- 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
- 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
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.