Virtual Office for Software Development
In today’s world the old-school office is being replaced, with cloud services, and remote work, we now see development organizations turning to a virtual office. However no where is it more prevalent than in the software development industry. It is defining a new way to work, and redesigning work flow in all new ways. Today I’m here to discuss those changes an how they effect the software development.
First let’s take a look at some of the cloud services that have contributed significantly to the this change. Everything from source control, to chat has drastically effected this.
Virtual Office Cloud Services
You can’t have a conversation about software development in today’s world without discussing GitHub. Easily the most dominate source control system in the cloud. Git makes it easy to share code with a repository and locate that repository anywhere in the world. GitHub provides that repository and gives it a simple to user interface to handle your merging and branching. Robust enough that we you can create your own strategy, while not over complicating things.
If your going to write software your going to have bugs. Atlassian offers Jira in the cloud to perform your agile development and issue tracking. It offers the standard features we come to expect from issue tracking. With the flexibility to create your own workflows to match your development system.
No office is complete anymore without some form of chat application. Microsoft Skype has certainly found a niche here to fill. With the ability to chat, video chat, file sharing, and even screen sharing. Skype is a solid contender in your office, whether it’s a virtual office or a physical office.
Google is right in the game with Google Hangouts. Providing chat, video chat, file sharing, and screen sharing. Integration into Google Calendar is a big plus for Google Hangouts, if you use Google Calendar.
Slack is a solid contender in this space, but it takes a vastly different approach from Skype and Hangouts. It provides a persistent chat for teams, with multiple channels, to share. and discuss in. That by itself would not make it a contender in my opinion. However it’s the integration that Slack brings with so many applications both on premise, and in the cloud that makes this cloud service shine. Not only can you integrate both Google Hangouts and Microsoft Skype into Slack, you can hundreds of other choices of apps to integrate as well.
Let’s face it, Microsoft Office is the standard office suite and has been for decades. Now it’s in the cloud, along with desktop versions as well. What else really needs to be said here?
Don’t count Google out when it comes to office suites. They have Google Docs, Sheets and Slides. A solid cloud solution to Microsoft Office.
While not a “Cloud” platform, it does provide a pretty solid and free replacement to Microsoft Office.
Cloud File storage, there are a number of possible vendors. Really the difference comes down to the integration you need into 3rd Party Apps, is Box one of the ones supported or now? Offers a great desktop application for syncing.
Cloud File storage, another big hard drive for you store files on. Again which has the better integration into the 3rd Party Apps that you need? Offers a great desktop application for syncing.
Now things change with Cloud File Storage. If your going to use Google Docs, Sheets and Slides, you will find your better off using Google Drive for you file storage.
Microsoft’s Cloud File Storage solution, again if your going to use Microsoft 365 give OneDrive a solid hard look. While not as necessary as Google Drive is to Google Docs, Sheets, and Slides, it will make your life easier.
These are but a few of the thousands of cloud services that are now available. Bringing them together into a virtual office, is the key to the success of your development efforts.
Jenkins in the cloud. Jenkins is one of several build servers, but it’s continual updates, and large plugin repository make it one of the best build servers you can use.
Integrating a Virtual Office
Plenty of cloud services out there for you to select, however the key to your success is how well do the integrate together. So let’s talk about some key areas that need focus.
Continuous Integration / Continuous Development
As a developer this is of great concern to me. In order to have a CI/CD in a virtual office, we have to consider.
- Source Control System – GitHub meets our criteria here very nicely. It provides the source control management and integrates with most build servers.
- Build Server – Jenkins, CircleCI, or another alternative generally integrates nice with GitHub. Allowing for builds to be triggered when code is delivered to a branch. Most build servers integrate some testing into them. JUnit is a common until testing framework that build servers integrate. This is your first line of automated testing. Let your build server run the JUnit tests on the recently built server. Notifying the developer who made the change if the testing fails.
- Test Server – This could be Travis CI, JMeter, additional JUnit tests, or another test platform. This provides a more robust set of testing. Allowing for UI testing, mocking and additional tests. Sometimes times this can be integrated with your Build Server as well.
- Deployment Server – IBM Urban Code Deploy, Travis CI, automated scripting, Puppet, Chef or other deployment application that can automatically deploy a build out to a test environment.
- Test Environment – This is an environment that mimics a production environment. Your deployment server would install the new build in this environment. Additional automated testing can be performed here. Along with manual testing that you may wish to perform. Testing such as:
- Performance Testing
- Scaling Testing
- Fail-over Testing
- Middleware Testing
- Production Environment – Finally if your testing all passes, you can have your deployment server deploy the build to this environment your Production Environment. Typically this fits the profile for cloud software over on-premise software.
Development Team Interaction
This takes on many forms. How developers chat, share information, code review, and design the software being developed. Do you use Google Hangouts? Microsoft Skype? Slack? There are so many tools you can use for this. First there is the level of integration you want/need. Personally I find Jenkins/CloudBees as my build server, Slack as my communications, with either Google Hangouts or Microsoft Skype integrated for Video Chat, combined with a code review system. This allows for communication, screen-sharing, and code review. However you still need something for code design. Nothing beats a whiteboard. Google Hangouts has a Whiteboard plugin, Microsoft now has a Whiteboard App. Also Microsoft OneNote has nice drawing capabilities and the ability to share.
Track Tasks / Defects
Not a lot you can say here. Look for your issue/project tracking software that fits into your build server, and into you development environment the easiest. Your build server should be able to show what issues are fixed in each build. Your source control system should be able to identify your changes back to specific issues or tasks.
The end of the on premise office?
After reading this you might be asking if this is the end of the on premise office. While Virtual Office are becoming more common, I have also seen large development organizations closing ranks and moving to a strict on premise development. With the concerns of security and work ethic, it is a risky proposition for a company to go completely to a Virtual Office. I believe in time company’s will find a happy medium. Those trusted employees with proven track records will be able to opt into a virtual office development team, while new employees will find it beneficial for the on-premise office, for mentoring and learning the organization.
There will always be those development efforts that require on-premise office, due to high security requirements. Security will be the number one defining requirement for the cloud moving forward to see a growth in the virtual office.