When Matthew McCullough, director of field services at public repository host GitHub, speaks at JavaOne 2015, he's going to try hard to forget the three times he's been a "rock star" at the conference.
This year it's all about the collaborative software development team, not the individuals. His JavaOne presentation, "Patterns for Collaborative Development in a Social World," will address what is nearly a universal issue: Developers who work on distributed teams across countries, continents and time zones.
His goal is simple: Create a truly united team. Or to put it another way, he wants to end the "handoff."
"In the software lifecycle today you have the design architect hand off … to the developer, who hands off to the testers, who hand off to the performance testers, etc.," he explained. While every team needs specialists, the problem is those specialists can become silos, and that's a huge disadvantage when applications and updates have to get out the door fast.
"If you're pushing out changes 100 times a day, you're not going to want to be handing stuff over the wall to the tester 100 times a day," he said. Having testers right at hand when they're needed would dramatically speed up the process. "You need different talents in a unified pool rather than in separate departments."
Collaborative software know-how
That notion of open-ended cooperation isn't always easy to achieve. Jutta Eckstein, an IT communications consultant, specializes in long-distance collaboration, albeit from an Agile perspective. She's personally done it often, and she's worked with a number of companies trying to get it right.
"Wholeness is really defined by the team itself and not where the team resides," she said. "All the roles need to have the know-how required to do the work. Teams can find their own way of working, and that can mean all kinds of things," she said. Challenges include, but are not limited to, cultural, language and time zone differences, all of which take work to conquer.
McCullough knows this battle, and he's looked back into history for inspiration. Huge breakthroughs in science and medicine have taken place over the years without scientists working shoulder to shoulder, he said. Now, as the software world is expanding, there's going to be more collaboration possibilities -- and those will be without borders.
"GitHub is looking to remind people that geography is important, but it doesn't have to be massively restraining," he said. "If we do it right, we can have a talented person in Romania and a talented person in Chattanooga working together, and they're going to forget where the other person is but remember the work they did together."
The avenue to software collaboration
Matthew McCulloughDirector of field services, GitHub
Software developers hold a major advantage here: the universality of the code. "It's a language of its own accents and it transcends any given language," he said. Language differences can make reading scientific papers across cultures tough, but Java pro or Python are the same no matter what native language the coder speaks. "We really need to think about the full potential of this universal language," he said.
McCullough thinks the stakes here are huge. With a worldwide shortage of software developers and no end in sight, companies and their teams need to get collaborative software right. "Today software is involved in every aspect of every business, whether it's a tire company or a grocery store," he said. "So if your company wants to stay in business it must have a software advantage."
And that advantage, he explained, can be found in cooperation. "Software development really isn't a job title any more. It's a department in most companies. So we have to make it work better."
New to Git and distributed version control? Here are some Git examples and Jenkins-Git integration tutorials designed to help you master the popular source code versioning tool.
- The five key Git commands to master first
- Change a commit and manipulate commit history with this hard git reset example
- What happens when you git reset and push?
- Learn to undo a commit with git revert
- Use the git cherry-pick command across branches
- Change the default Git commit editor to Notepad++
- Where the Git configuration files are stored
- Make continuous integration part of your DevOps journey with this Jenkins CI tutorial
- Include Jenkins Git environment variables in your freestyle builds