Software R&D Collaboration: How Can We Do Things Better

Focusing on Needs vs. Focusing on Tasks

For my first point, I want to get the point of why we shouldn’t focus all of our attention of “tasks” instead of the “values” and “needs” that tasks actually relate to.

  • Connected: The process is visualized as a value stream from beginning to end. It starts with the presentation of the user’s problem and ends with its resolution.
  • Outcome over output: We want to minimize “task output” while maximizing “need outcomes.”

Flow Efficiency vs. Resource Efficiency

My second point is related to the difference between “flow efficiency” and “resource efficiency.” The overall product delivery process requires a lot of coordination between several different teams, including the business, as well as the product, development, testing, and O&M teams. If we are to focus on “flow efficiency,” then we would understand “needs” as the units in the overall business or process. “Needs” come from users and then flow back to users. The speed of the flow determines the efficiency of user response and feedback acquisition.

Focusing on Problems vs. Focusing on Activities

When it comes to collaboration in software projects, the key issues are resolving problems, removing obstacles, and how finding a way to meet needs at every stage of the process. In project collaboration, we need to consider all of the following questions:

  • What are the unmet needs that we still need to resolve?
  • What are some of the dependencies we may be forgetting?
  • What are some interruptions in the value delivery process?
  • What are some bottlenecks in the current delivery process?

Cross-Functional Team vs. Single-Function Teams

Now let’s discuss why cross-functional teams are better than single-function teams. Driven by “needs” and focusing on “flow efficiency” means that, in the collaboration process, we adopt a business-driven integration of all functional elements, including the business, product, development, and testing pieces of the puzzle. This requires cross-functional coordination. Teams with a single “function” tend to form function silos. As a result, each team remains busy, but the overall system collaboration efficiency is low.

Cloud Code Hosting vs. Internal Network Hosting

Now let’s discuss why you may want to consider using cloud code hosting over internal network hosting at your company.

  • Access control: This includes control over commonly used IP addresses, the prompt revocation of permissions for former employees, and the proper setup of code library visibility, among other controls.
  • Identifying Abnormal behavior: This includes both post-event audits and advance warning capabilities, such as the detection and warning of suspicious code downloads.

Code Scan vs. Code Review

Now, let’s discuss why you shouldn’t overlook code scans as a tool in your toolkit. Many people often emphasize the importance of reviewing code but ignore the benefits of automated code scans. Reviewing code may be helpful, but it does not necessary directly improve the quality of the code. Rather, it’s more like a kind of “social programming” activity because promotes the sharing of knowledge within the team, among other things.

Continuous Release vs. Batch Release

Next, let’s discuss why you should choose continuous release over batch release. “Continuous release” refers to the continuous, fast, and reliable release of software. Continuous release can help developers quickly discover problems. It can also help us discover engineering efficiency problems. To achieve continuous release, you must do the following:

  • Establish an automatic and comprehensive quality assurance system
  • As far as possible, use automated deployment methods with no human intervention, such as Docker images, code and configuration separation, and the building of multiple deployments at a time.

Automated Regression vs. Manual Verification

Last, let’s discuss why automated regression is a helpful tool. When it comes to continuous releases, the efficiency of continuous release is limited by the efficiency of regression testing. When you use a manual verification method, efficiency completely depends on how fast the personnel can work. When you develop software for multiple platforms and environments, manual verification typically cannot keep up with engineering efficiency. In contrast, automated regression is very efficient and can enable developers to quickly obtain feedback upon every commit, giving them greater confidence and peace of mind.

Summary

In this article, I have gone over some of the most common mistakes that may occur during collaboration, providing some useful considerations and methods to remedy these mistakes. I hope that I have inspired you to work better in your collaboration efforts in the future. Working from home isn’t always easy, but if you implement these changes, your team will work even more efficiently. And these methods are not only good for when you’re working from home, they’re also great in the office, too.

Original Source:

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store