What most effective teams have in common is certainly their ability to work together. When it comes to software development, one way to work together is pair programming.
Pair programming is a technique where two developers sit at the same desk and code together. The purpose is to spread knowledge over the team, share good practices and sometimes overcome technical challenges by combining two people experiences to solve a problem. At any time, one developer is coding while the other one reviews each line as they are typed and thinks ahead. They must engage with the task to perform for this exercice to be beneficial. Thus, no place for procrastination.
From the point of view of a manager, two developers working on a single task may appear like a waste of resources. However, studies have shown that for a 15% longer development time, pair programming improves code quality, reduces massive show-stopper bugs and enhances team communications (see “The Costs And Benefits of Pair Programming”: https://collaboration.csc.ncsu.edu/laurie/Papers/XPSardinia.PDF).
Let’s see when to pair and how to do it effectively.
Even though the ultimate goal is to produce a fully working piece of code, pair programming can be employed for various reasons. Generally, it depends on the skill level of the participants.
The most common usage is a junior programmer pairing with a senior one. The former types while the latter instructs on what to do or help the junior figure it out without giving the solution beforehand. In this case, pair programming is used as a learning and on-boarding tool.
Roles are not exchanged at first. Junior programmers can’t learn by only watching someone else type lines of code they might not even understand. Either because they don’t know the code base yet or because they’re lacking experience. They have to experiment a bit their ideas and make their own mistakes to learn.
Thus, senior devs have to resist the urge to always take over the keyboard control and even show any sign of irritation. Patience is the key here. Sure you would have done the task in a minute, but would that serve any purpose? You don’t want juniors to be discouraged and leave the team. Instead, senior devs should progressively bring juniors to the path that lead to success.
To make this happen, the junior dev speaks their mind aloud as they type. When the senior dev disagrees, they let them reach a dead end then explain why it was not working. Another approach is to ask questions as the junior dev tries to describe what they’re going to do. They’ll inevitably doubt about the proposed solution. This way, they can understand by themselves it would not work and will actually learn. It requires a lot of patience and sessions should be definitely kept short, the exercice being so exhausting for both parties. At the end though, junior devs will be way more engaged and motivated.
The junior dev, mostly. Yet we all have different visions when it comes to problem solving and juniors can bring a breath of fresh air to a project you should not underestimate. Also, senior devs who’ve been part of the team for a long time well often share the same point of view on a code base and how things should generally be done. A junior dev, however, usually ask questions that force the veterans to explain what some portions of code actually do. This helps to detect design flaws early on that you wouldn’t have suspected at all. You onboard a new team member and at the same time review what has been done before, making sure it’s understandable and that it won’t all fall apart someday. Win-win.
Two juniors pairing together is generally considered a bad combination. They can’t rely on an experienced developer to help them sort their minds. On a complex story, when dealing with agile projects, they’ll lose time investigating each dead end. That generally leads to frustration and failure, also potentially increasing project risk.
A senior dev should approve the stories they pick, generally simple stories. It can work if the team is ready to accept errors and if the juniors already had prior pair programming experiences with a senior dev. They’ll be able to share with each other what they’ve learnt from their past pairing experience.
Also, there are always trade-offs to be made when dealing with development. When they have no senior dev around at disposal, junior devs have to take their own decisions. Something they could be reluctant to do when pairing with a senior, too worried to seem somehow dumb. Taking decisions is an essential part of the learning process when coding. It allows devs to build up their self-confidence.
Pair programming is a good practice to grow as a cohesive dev team. You want juniors to be more effective and expect someday they’ll be able to handle stories by their own, without systematically requiring you to fix everything afterwards. For this to happen, they first need to feel they are key elements of the project and team.
The last scenario I’ve not tackled yet is two senior devs pairing together. Although a senior programmer might be able to handle any story of a project, there are a few cases where pair programming can help: learn a new framework together, resolve bugs implying multiple code portions written by each parties or increase the bus factor.
Bus factor refers to the number of people in a team that can put a project in trouble if they disappear (literally by being hit by a bus but more seriously for vacation, illness or leave). Having a good bus factor value ensures the project will eventually come to an end. The rest of the team can easily take over the work done without being lost or having to restart from ground zero.
Pair programming helps to spread knowledge over the team and allows to increase the bus factor value. People involved on a project are no longer isolated on specific corners of the project and code duplication is avoided.
We often pair at USE Together just for the sake of increasing our bus factor. As developers, we have our own preferences when it comes to technologies, programming languages, frameworks. Pairing allows us to move out of our comfort zones, understand quickly how some piece of code is articulated and get ready to take it over when people are on vacation or simply working on other urgent stuffs.
There are numerous flaws we can potentially write when coding solo. We sometimes lack that step back that would have permitted us to quickly realize something will not really work as intended. When implementing a solution, developers have most of the time different approaches based on their experience. Two minds combined will help reducing massive show-stopper bugs.
Pair programming allows to share consistent coding practices between team members. When you expose some new way to arrange the project’s code during a meeting, people might not be as receptive as you thought they were. Pairing with them on a task that would, at some point, involve following your good practices will help them remember and understand the why.
Multiple techniques can be used to pair program. At any time, there are always one developer typing and one observing.
A classic one. The driver takes the keyboard and mouse control, writes code, navigates between files and mainly focuses on the current step to be done. The navigator, on the other hand, is responsible for reviewing each line of code being written and thinks more about the big picture: are we on the right track? Will that cause some bugs to emerge? What’s the next step? Driver and navigator often switch roles every 5, 20 minutes or each hour. It mostly depends on the pair but that should happen. Otherwise, the driver will feel exhausted quickly and the navigator will be bored and tempted to procrastinate.
This variant works best for senior-junior/newcomer pair programming. Basically, it’s analogous to driving lessons. The junior or newcomer dev is the driver and is responsible for writing the code. The senior dev is the navigator and gives clear instructions on what to do next, sometimes how to do it when the junior has absolutely no clues. After some lessons, the driver should have build up more self-confidence and know the main parts of the code base. The navigator then only gives a few tips when necessary. It’s important that the navigator resists the urge to take over the keyboard control. They should instead help the driver to figure out by themselves how things should be done.
In combination with test-driven development (TDD), a programmer is responsible for writing a failing test while the other implements the minimum needed for the test to pass. After a bit of refactoring, they exchange role: the person that made the test pass now writes a new failing test and the other one codes an implementation. Going back and forth, as a ping pong game.
The driver should speak their mind at any moment by explaining their approach. This way, the navigator can validate or suggest a better way to solve the problem. It requires some practice to rubber duck to a real person when you’re only used to speak with your brain. At the end, you will improve your own coding process.
Rest your eyes, drink, check emails, whatever but take breaks at regular intervals like 30 minutes or 1 hour. Constantly chatting and conveying your mind is exhausting.
We don’t think the same way, you should show some tolerance when your pair is taking too much time to solve an obvious problem. Maybe your pairing partner is thinking ahead about other issues that might arise or simply confused because of your irritation. Irritation is the first cause of bad pair programming experiences.
An essential skill for a programmer is the ability to search effectively on Google for docs, examples or similar issues as the one you’re having and possible ways to solve it. As the navigator, you might just be tempted to do that off-screen, say on your mobile phone, because the driver is indeed not searching for the right keywords and it’s exasperating you. Don’t. That’s an open door to distraction (oh I’ve received 6 emails). Instead, wait for them to find nothing relevant. Then, suggest new keywords and explain why you would search for that. Remember, pairing is learning and requires patience.
As the navigator, don’t insist too often on every mistake. The driver will figure out by themselves that a semicolon is missing or a variable is misspelled. Doing this too often makes the driver focus more on the code style than on the task itself.
Or zoom text. Especially when using high resolution screens. Hard to read when not exactly in front of the screen. If you can, plug in another one and mirror your desktop.
Use two mice and two keyboards to switch roles smoothly and at regular intervals (5, 20 minutes or 1 hour). But keep in mind you have one role at any time. Resist the urge to take over the control if you’re the navigator.
Keep the comfort of your own desk and overcome the last two points by pairing remotely with USE Together.
USE Together, the screen sharing app that lets you collaborate with your teammates from anywhere in the world as if you were all at the same desk 👩💻👨💻 is finally coming out of beta.
USE Together online beta has been available for free for about 20 months now and it sure has come a long way. We made it a point to listen to all of you and over these months, we received quite good feedback 👍 that allowed us to improve the app considerably.
From all the team, and to everyone who have been using USE Together since the beginning or have just started using it, thank you 🙏.
We’re thrilled today to announce that USE Together is finally getting out of beta on Wednesday, March 20.
You will be able to choose between two plans:
Both of these plans will allow you to invite up to 3 guests on your screen.
Only Basic users who share a screen will have the limitation. You will still be able to take control of a Pro user’s screen with a Basic plan, even if the daily limit has been reached on your account.
We made it simple for teams to manage their subscriptions from one place, with centralized billing. Add, remove team members and change their plans (Basic or Pro) at anytime. Each invited team member will get the whole team added to their contact list on the app.
Last but not least, some brand new features are coming:
📹 Record the session (screen share and audio chat) to re-watch it later on. A nice feature to make instructional/demo videos and keep track of what has been said during the meeting.
🖥 A new lightweight session bar will appear on top of your screen when a session is running. It will enable you to quickly change what you’re sharing, mute your microphone, record or end the session. You’ll be able to hide it completely.
🔗 Opening a shareable link will now ask if you want to join the session from the app (instead of the web browser only) if you have it installed.
Please note that starting from Wednesday, March 20, you will need to update the app to the latest 2.1 version to continue using it. You will automatically be subscribed to the 15 days Pro trial.
We’ll be happy to answer any question you might have. You can reach us at firstname.lastname@example.org.
Happy screen sharing 🙂
Work does not need to be done in a specific place to be realized efficiently. Several workers clearly prefer to work comfortably from their home or anywhere they want. Nowadays, with the rise of new technologies and new tools, remote work (also called telecommuting) is becoming the new traditional way of working.
According to recent studies, 25% of Americans work remotely few hours a week outside their office. (Source : www.smallBizTrends.com) Companies tend to allow more their employees to work away from their office. For some employers, results are actually more important than the amount of time their employees spend in their office.
With the rise of Internet and communication tools, working remotely is a breeze. In this article, here are seven reasons why it is good for a business to work from home… or anywhere you want!
In our interconnected world, anything can now be accomplished with a laptop and WiFi. This connectivity allows everyone to communicate easily with their friends, colleagues, customers everywhere they want: in the train, by the sea, in the mountains and so on.
Workplace should not be limited to an office in which you’re stuck all day long. Remote work allows everyone to work wherever they want, in a place where they feel comfortable and productive, without geographic boundaries.
If you have children, no need for a baby-sitter, stay at home and take care of them. If you have to travel for professionals needs (or just to travel), work from home or even abroad and forget about the time zones! . Tools like USE Together give you the ability to work outside your office as you are able to work anywhere you want. All you need is a device connected to the Internet.
Remote workers say that they feel more productive when working away from their office. They use flexible working hours and work when they are most productive. By working remotely, you can be your own boss and set your own schedule so you can combine work with all your personal life (family, friends, hobbies and more) and professional responsibilities. Remote workers can (and might) take few minutes breaks whenever they want. To work remotely with USE Together, all you need is a device connected to the Internet.
Working remotely also implies saving time. No more early alarm clock every morning, no more public transportation, no more driving to go to your office, no more high fuel cost… but more productivity at home! You can even take time for a breakfast! Saving time and money is a big advantage of remote work and it makes workers happier. Workers are more productive when there is less tiredness and boredom.
Remote workers also cost much less for employers because they don’t have to rent an office if they don’t have the money to afford it.
As working remotely implies saving time, you can thus catch up on delayed work but also have more time to focus on one task. Tools like USE Together are perfect to work with your team without moving. This way, if you happen to be stuck at home, you can still collaborate with your teammates on important projects.
When you’re at the office with your colleagues, you mostly talk about work with them. However, sometimes you come to have some other argues as the last Star Wars movie or the last football match. All that stuff that have nothing to do with work. Less distraction, more productivity.
Remote workers are well connected and can keep in touch with their team more easily. They often need to send reports to your colleagues and you only need to communicate essential informations about work and not other subjects. Some useful management tools allows you to instantly update your work when a task is over. No useless informations anymore while you’re working on a project.
Here is definitely the best advantage of remote work: increasing productivity! Indeed, 91% of remote workers say they are more productive from home or another place than in their office. (Source: Forbes)
This is explained by the fact that they are more organized in their work as long as there are now several tools for organizing (to do list, calendars, memos, notepads, etc.) so they can stay focused on one task.
By working from home, remote workers are less distracted as long as their workplace are more quiet than an office. With USE Together, working from home with your team will help you to increase your team’s productivity and stay focused on your work as long as you’re working on the same support all together.
Working in traditional office requires to be presentable and well dressed everyday. Whereas, at home or in a coffee bar, you’re free to wear whatever you want (yes, even pajamas!) while you’re writing a report or coding. By working with USE Together, you don’t have to worry about the way you dress since nobody can actually see you! Plus, you can go everywhere to be in a quiet place.
You can set up your own space and work from your bedroom, on your own desk or even in the couch.
Remote workers tend to be less stressed and happier than office workers. Working remotely leads to more stable work condition, a higher level of productivity and… a best quality of life. Employees won’t feel constantly the need for vacations and the absenteeism rate is lower in a remote company.
Remote work increases work quality but also workers happiness because they get more involved and are becoming more and more empowered to work. That’s exactly why more and more workers choose to work with collaborative tools.
USE Together is a nice collaborative tool to work remotely with your team. With USE Together, you can work wherever you want, whenever you want with whoever you want without moving. All you need is a device connected to the Internet. USE Together is a perfect tool to increase your team’s productivity and stop wasting your time. Make your workplace more comfortable and feel at ease while you’re working with USE Together!
You can download USE Together on www.use-together.com.
Today, we announce that USE Together is now available on Slack. Communication is smoother when all your tools are connected together, so you can use all your apps easily from one place.
Slack is a collaboration tool that allows you to connect and communicate efficiently with your team. It brings all the communication together in just one place. Slack also lets you integrate tools like Skype, Twitter or Evernote.
With Slack, you can create a workspace and invite all your teammates to join it. Your workplace is a shared hub where members of your team communicate and collaborate easily. Slack is a great tool for small, medium and big companies.
On Slack, your workspace is divided into different sections: channels, messages, search and notifications.
Slack helps teams to improve their productivity and have a better communication.
First, you need to install the USE Engine app on your machine. Then, you can add USE Together to Slack. It’ super easy!
Before sharing your screen with USE Together and using these commands through Slack, note that you need to have the USE Engine app v2.0.2 or later installed on your machine.
To invite your team to join your screen, you just have to enter a command in a channel or DM. When you send the request, a link appears, just like below:
When USE Together is added to your Slack workspace, you can use commands to:
Invite your teammate through the USE Engine app:
/use invite @slackuser or email@example.com
Send an invite by email (they’ll join you from their web browser):
/use web-invite @slackuser or firstname.lastname@example.org
Generate an invite link (they’ll join you from their web browser):
Make a call only:
/use invite @slackuser or email@example.com audio-only
Switch back to screen sharing when inviting:
/use invite @slackuser or firstname.lastname@example.org screen
Add a contact to your contact list:
/use add @slackuser or email@example.com
You are now ready to use USE Together from Slack! If you have any question, feel free to send us feedback at firstname.lastname@example.org. Your feedback is deeply appreciated. We want to give you the best screen sharing experience.
Happy screen sharing with USE Together… and Slack!
You would like to work with your team on the same machine in real time even if you’re away from them? USE Together is meant for you!
USE Together is a collaborative screen sharing solution easy to use and available on both Windows and Mac.
Several studies have shown that remote work, contrary to traditional ways of working in an office, is more efficient and increases productivity. In May 2018, a study released by Zug, Switzerland-based office provider IWG found that 70% of professionals work remotely at least one day a week, while 53% work remotely for at least half of the week. (Source : www.cnbc.com)
Some remote workers sometimes need to work with their colleagues even if they are not in the same room. In this case, working all together on the very same machine, on the same project, at the same time, instead of using several different machines, can increase greatly your productivity. Everyone can thus modify a document simultaneously on a same virtual workplace. No need to send it over and over again each time your team needs to modify it! With USE Together, you can work remotely with your teammates on the very same machine. All they need is a device connected to the Internet… and nothing else! Pretty awesome, right?
USE Together enables you to simply share your screen with your team (colleagues, collaborators, friends, customers, etc.) and gives them access to your desktop. If someone is making trouble on your desktop, don’t worry, you can quickly take back the control. Your teammates can interact with all your applications, write whatever they want, watch videos with you and many other things. Your computer becomes a real collaborative workplace. USE Together can be used for everything and brings you a more intuitive working experience to create amazing things.
USE Together offers many features to give you the best screen sharing experience. We are sure you will enjoy them:
User-friendly interface: The application includes an easy-to-use contact list. You can manage your contacts: add a new contact, know when they are available or not, send text messages, voice chat and start a session with them with just one click.
Multiple mouse cursors: After starting a session, you and your team can see what you’re doing all together on your desktop in real time thanks to the multiple mouse cursors system. That’s even better than if you were sitting at the same desk, right?
Messaging zone: Communication is the best way to improve the quality of your collaborative work. During a session, you can therefore communicate with your team by sending them instant messages. You can send messages to just one of your contacts or to your whole team during a session. You also have the ability to send files to your team.
Audio chat: For a more natural way of communication, you can also directly talk with your team in real time! With USE Together, speak with your team to drive easily your session and guide your teammates in the best way without being physically next to them.
Web Browser access: If your teammates don’t want to install the USE Engine app or to subscribe, don’t worry, we also have a solution. Your team can indeed access your session through a simple web browser. Note that USE Together is compatible with the most popular ones: Google Chrome, Mozilla Firefox, Opera and Safari 11+.
Share what you want: You certainly don’t want your team to see your private files during a session. You can share just one app instead of your whole screen if you prefer: graphics editor, IDE, presentation software, videos, email and so on.
Swap: Quickly take the presenter role with the Swap feature. If your teammate is sharing their screen, you can in turn share yours with just one click.
Low latency: USE Together supports hardware encoding to offer you a low latency experience. No more 5 FPS screen sharing sessions, you can watch videos with all your team in real time!
Privacy Aware: USE Together respects your privacy and ensures the protection of your data. Indeed, 95% of the screen sharing sessions are made through a P2P (peer-to-peer) architecture, with no gateway between the shared screen and the clients accessing it. The last 5% are when a restrictive firewall or NAT configuration prevents a direct connection: in this case, our own relay servers are used as gateways but the communication can still only be decrypted on each end. Thus, we cannot see anything even if we wanted to.
You can install USE Together on both Windows and Mac devices. You can use it for your personal activities, for your studies or even for work. USE Together was designed to meet all your needs!
First of all, to start a session on your computer (as the presenter), you need to download and install USE Engine, available for both Windows and Mac users. All USE Together features are available with the USE Engine app.
The app also allows you to easily get in touch with your teammates, partners or customers. Through a web browser, you can only join an ongoing session but you can’t start a session.
After installing USE Engine, you have to create an account. To do so, all you need is an email address. After signing in, you’re all set to start your first session.
Now you’re ready to start a session on USE Together. You can invite whoever you want. There are three different ways to invite people on your screen: directly in USE Engine, by sending them an email or with a simple link that you can copy and paste.
USE Together is also ideal to pair remotely with a colleague who has already USE Engine installed on their machine, you can invite them from your contact list, they will join you on your screen directly from the app.
You want to invite someone else on your ongoing session? You can add someone during a session through the app.
With USE Together, you can also send a request to join your screen to people who don’t have USE Engine app installed. You can either invite them by entering their email or simply copy and paste the link to your session. They will then be able to join your screen directly through their web browser.
Once you start a session, your team can do anything on your desktop. Don’t worry though, you can easily take back the control of your screen whenever you want.
Now that you’re ready to try USE Together, you can download it here!
Happy screen sharing!