Your Hardware is only as good as your developer’s VPN access / VDI requirements, but some things that are important to consider when selecting your team’s computers are:
- Processing speed
- Ability for customization by individual devs
A few good questions to ask around your hardware are: What type of developer access will we have with this hardware? Can developers download the apps they think are important?
Strive to develop in an environment as close as you can to the one you’ll be deploying to.
VPNs can interfere with high fidelity, remote pairing tooling (for example, Tuple). Open internet or VPNs that only require some traffic to be funneled through have made it easier for our teams to collaborate in the past.
Not all VPNs are equal. Even if your VPN allows some traffic through, check to make sure your tools aren’t still being blocked.
Local admin access, which allows engineers to install software locally and set up their workstations, leads to a more efficient onboarding process and enables teams to be more effective from the start.
Engineers greatly benefit from Source control and CI/CD privileges, which facilitate seamless collaboration and expedite the development process.
Deployment permissions enable rapid software development and user feedback cycles.
Empower trust and accountability within the team by giving them the privileges for setting up their workstations and controlling the development process.
Quick or automated approvals for adding new dependencies enable engineers to widen the engineering toolset and maintain past-paced development.
A longer approval ticket or self service process blocks the current work track and hinders story progress. A 72-hour approval process could halt development for over half a week.
Minimizing approvals and time-to-approval can directly improve developer experience, team velocity, and software delivery.
Day to Day
Backlog management tools help organizations track work across teams using a standardized and established method. Having one organized backlog facilitates better team and stakeholder alignment allowing us to make clear, prioritized decisions.
Our team believes Pivotal Tracker shines most when developing a new product, keeping the backlog laser-focused on the work at hand and taking a streamlined approach versus its competitors.
Organize your backlog in a way that lets your team continue to pick up clear stories as they complete their work. Accomplish this by creating detailed stories, consistent pointing, and an established system of tagging.
Design tools are necessary for many steps in the development process like wireframing, prototyping, and mocking up high-fidelity designs. Since your designers will be in this tool everyday, it’s best to use the one that works best for them. Our designers have mentioned these features as being most important to them in a tool:
- Collaboration / the ability to have multiple cursors in one file
- Ease of use
- Speed/performance (when loading large files)
Almost all of our designers agree that Figma is the current industry standard because of its ability to design, prototype, and share work all in one platform.
Design files can get cluttered quickly. It can be helpful for both your designers and engineers (and anyone who needs to see a design file) if your design tool has organization features that make sharing and viewing easy.
When choosing an IDE, one of the most important factors is how fluent your developers are in that specific environment. The better they can use that IDE, the faster they can translate ideas into code.
However, smarter IDEs can understand your code and make it easier to make changes, refactor, and test.
The Tanzu Labs team are most used to IntelliJ and the suite of JetBrains IDEs which come by default with VMware-provided laptops.
Choose an IDE that has intuitive built-in keyboard shortcuts that can be utilized to help developers move faster.
Pair programming (developers working in pairs) ensures that development decisions are shared and discussed, maximizing the quality of code. It allows new team members to ramp up rapidly, helps reduce knowledge silos, and encourages shared team ownership of the code.
While co-location is ideal, remote pairing can be done using video chat and screen sharing tools that let pairs look at the exact same thing and have equal control. Ideally, pairs experience real time collaboration - any lag or delay in communication causes a slowdown.
Tanzu Labs developers prefer Tuple, Pop, or Drovio because these tools allow annotation, sharing a cursor, and have high screen resolution.
See pair programming tool comparison chart
|CodeWithMe /JetBrains||VNC /BuiltInScreenSharing|
|Requires Good VPN||N||N||Y||Y||Y||N||Maybe||Y|
|Requires Fast Network||N||N||Y||Y||Y||N||Maybe ||Y|
|Full Screen Sharing||Y||Y||Y||Y||Y||N||N||Y|
|Each Person Has Own Cursor||N||N||Y||Y||Y||Collaborative Editor||Collaborative Editor||N|
|Allows Annotation||N ||Y||Y||Y||Y||N||N ||N|
|Allows Control of Other Computer ||Y||Y||Y||Y||Y||N||N||Y|
|Can Be Installed On Site - Info Stays Within Corporate Network||N||N||N||Y||Y||N||Y||N|
Sometimes the best option is a combination of tools, such as a video conference tool (like Zoom or Teams) plus a tool that is exclusively for pair programming (like Pop or Tuple). Experiment with different options to find the best for your team and their pairing style.
In-person whiteboard collaboration cannot be replaced, but tools exist that make group brainstorming easier. Digital whiteboarding tools can help facilitate both real time and async collaboration with different features that mimic in-person sessions such as:
- Sticky notes
- Commenting and voting
- Flow charts, and more
Team members of all disciplines across Tanzu Labs have become fluent in using Miro, which allows for seamless collaboration at all stages of development. A close alternative is FigJam, especially for our members who are already familiar with Figma’s UI.
A blank canvas might be a daunting starting point, but choosing a tool that has premade templates can help your team get started faster. Check out our Miro templates!
VDI (Virtual Desktop Infrastructure) Usage
VDIs can offer user mobility, ease of access, flexibility, and greater security but can make pairing remotely challenging. Some of the issues our developers have run into while pairing over a VDI:
- Difficulty using tools that share cursor
- Video/audio/screen delay
When VDI is not required, our team has less constraints and is able to work with more efficiency.
When you can’t get around a VDI, in-person pair programming can help the team get started and build momentum. Try hosting a short in-person session to kick off your engagement.
At the heart of remote and hybrid working environments is video conferencing. Being able to host virtual meetings is critical for dispersed teams to help them stay connected and collaborate in real time.
Specifically with pairing, communication can sometimes be significantly non-verbal. Seeing if your pair is happy, excited, sad, or frustrated may help improve the overall team dynamic.
At Tanzu Labs, all our team members have premium Zoom accounts for unlimited meeting time.
Choose a video conferencing tool that allows you to integrate with your team’s calendar. Creating meetings becomes easier when you can automatically have a conference room ready to go.
The best asynchronous communication tools should facilitate quick and easy communication between group members.
Features such as channels allow us to manage projects in a convenient, easy to find thread.
All Tanzu Labs members (as well as the rest of VMware) are on Slack.
Some asynchronous communication platforms allow guest accounts to join certain channels or groups if your client isn’t yet on the same platform as you.
Collaborating across time zones can be surprisingly difficult, and it takes a concerted effort to ensure effective communication for widely dispersed teams. Consider the start time, end time, and lunch break of team members in each time zone.
Another factor to consider is the spread of your timezones. You may only have your team across 2 time zones, but what is the difference between these two locations?
Tanzu Labs has found that having all team members in the same timezone maximizes the amount of time we can spend pairing.
Continuous Integration refers to an automated pipeline to test and compile the build artifact – letting the team know if the build breaks for any reason. Continuous Deployment is automation that rolls out every build that is created to a series of environments, including production.
Our developers have been most efficient when they have been able to customize the entire pipeline.
Track how well your organization is delivering software using DORA metrics.
We want to be able to push to production constantly which means we need to be automating deployment. Manually deploying introduces risk because humans can make mistakes.
For your push to the production platform, the main question you want to consider is where is your software going to run?