Last time, we discussed social aspects of teamwork, and how working in a team can both benefit and harm you. There’s loads to take into consideration when working with other people, and lots to be gained.
This time, let’s talk about practical aspects of teamwork, particularly virtual teams or, in other words, teams with remote members.
Time Zone Difference and Broken Bottleneck in Teamwork
When working in a team with remote members, time zone differences can be a huge hindrance. Take for example SitePoint itself – I write for an audience which is, in a large part, US, SitePoint’s HQ is in Australia, and I’m based in Croatia. That’s three time zones 6-8 hours apart each, which means a full day can elapse before people answer your emails.
When you have a lot of emailing back and forth, not only among the team members but also among the clients, authors and whoever else, things tend to get messy fast. You need a way to stay in sync with everyone at all times.
Another problem is what I like to call a broken bottleneck syndrome. Usually, when only one person is directing requests to the development team (a filter, team lead or the project owner, for example), that person can become a bottleneck if the requests are coming in too strong or the dev team is too slow or small to implement them. The people feeding that person with instructions then tend to go around him/her, and cause a spillage of (often contradictory) information overflowing the dev team.
Yet another frequently encountered issue is multiple people working on the same piece of code. Bad prioritization and organization, in a nutshell. Sometimes, a developer might even end up in bug-jail (that’s when you have so many bugs on your previous work, you’re forbidden from building anything new until you get out of this jail mode), and this halts further development, especially if other devs depend on your completion of your part.
These issues can slow down development or even, at times, bring it to a complete halt, and there are several remedies for them. We’ll divide them into organic and inorganic solutions.
Organic Solutions
As I mentioned in the previous article, the importance of a capable lead and a capable filter cannot be understated. The capable lead will be able to formulate tasks properly and divide them into smaller units, while the capable filter will make sure requests that don’t make sense or just aren’t worth implementing never even reach the ears of the developers. A filter’s role is absorbing the requests of the rest of the company, and being the only means of communication between the dev team and the non-technical folk. The filter’s strength directly influences the time it takes for a broken bottleneck effect to occur.
A capable filter needs your help – you need to refuse orders from unauthorized people. Even if you get approached by the CEO, bring the task to the CTO/project lead/team lead before even considering doing it. Your superiors are usually closer to the person making unreasonable or simply out-of-schedule demands, and can nip it in the bud. Fail to resist once, and you set an unhealthy precedent.
Even if non technical people do somehow breach the barrier, make sure you’re tolerant and calm towards them. We all know how utterly frustrating it can be when a marketing person keeps calling a web page a slide, or when a logistics person can’t describe an interface in words you’d like them to use and instead compares everything in life to Excel stylesheets, but tolerantly listening and decoding their wishes means you can a) get rid of them faster and b) describe their desires to the lead/filter, so they can approach them, explain things, and maybe formulate a task if it truly is urgent.
An enormous help is making sure there is at least some work hours overlap. Setting up your work time so you can have an overlap of at least 2 working hours with the rest of the team and especially the lead is of utmost importance. An overlap in work hours allows you to catch up in real-time, and lets you perform another incredibly important aspect: video and voice calls. If a picture is worth a thousand words, a call is worth a thousand emails. One call can both help you report on your day, dig deeper into unclear tasks and requests, build a better itinerary, register complaints and it has the added benefit of improving your English.
Inorganic Solutions
Under inorganic solutions, there are several applications and web services I’d like to mention. The list is by no means exhaustive, but I’ve used most if not all of them at times, and I don’t recommend something I don’t actually stand behind – rest assured that all these do what they’re supposed to do, and do it well.
Trello is one of the main tools we use at SitePoint. It’s more non-developer oriented, more appropriate for editors and managers, but its excellent todo-ish card layout and markdown support make all tasks easily describable and clearly visible. If you communicate with non technical personnel on a regular basis or like to throw ideas around with teammembers, Trello is a good choice. There’s a free option, so give it a go.
Basecamp is a popular alternative to Trello, and is basically a glorified team-enhanced to-do list. Like Trello, it supports nesting, discussions and file uploads. It’s not free, though.
Google Apps can host your entire company’s email folio and follow it up with closed-door Google Docs and Google Drive, as well as group messaging, Google Groups, company calendar and much more. Google Apps are an entire suite of applications I wish more companies used. What’s more, Google Apps for Business supports Hangouts, so you can communicate via IM with your team, and even send messages to and from your mobile phone. In fact, Hangouts even goes so far as allowing you to join a video call from two locations – for example, if you’re getting a video call while you’re 5 minutes away from the office, you can answer it and talk on your phone. As soon as you reach your computer, simply hitting “Join this call” will open a stream on the computer as well, and you can hang up on your phone (or leave it on and have multiple camera angles of yourself). It’s all extremely fluid, and makes for a truly professional communication environment.
FlySpray is a super simple web based open source bug tracking system that can help you handle the simple bugs in day to day work. In my previous company, we used it as a front – we let the non technical people submit bugs and requests there, and then a filter person would weed out the nonsense and describe the proper bugs into more detail. This made sure we never got an incomplete report, which made reproduction and fixing that much faster.
Github is an online social coding network. It’s a hub of open source repositories (or closed source if you pay) where everyone in a team can easily collaborate, without the pain of manually setting up a repo on your own servers. BitBucket is a viable alternative, and offers free private repos, as opposed to Github.
Atlassian, the makers of BitBucket, also have various other excellent team collaboration tools like Confluence and JIRA – both allowing you to work with your team in real time and use a single point of data collection. Jetbrains also offers a good set: TeamCity (free professional edition) for continuous integration and YouTrack (unlimited 60 day trial, or 10 user free pack) for issue, request and bug tracking.
If you do Agile Development (more on that in a future article), the best tools for the money are said to be PivotalTracker and GreenHopper (a JIRA Agile plugin) these days. Both tools have some free plans you can try out, but we’ll do a more in-depth analysis soon.
Last but not least, if all you need is a good team based todo list, I can’t recommend Wedoist enough – being very similar to Todoist (which I use daily), the interface is streamlined and focused on the tasks at hand. It’s everything you’ve ever seen in all the other Todo apps, but much improved.
If you’re the member of a dev team, I recommend a healthy mix of Github and TeamCity, and Trello for discussions. If you’re in a managerial position and decide on projects and courses to take, I wholeheartedly recommend Google Apps. If you’re in a flexible remote team, use Wedoist and see how it suits you. If you practice SCRUM, add PivotalTracker to the mix.
Conclusion
This article offered some practical solutions for improving teamwork and productivity in a team. In a follow-up article, we’ll be covering practical team based tools in greater detail.
Do you have a favorite collaboration tool? What approaches does your team use to stay afloat in the ocean of problems? Let me know in the comments below, or on Google+.
Frequently Asked Questions (FAQs) about Becoming a PHP Professional and Practical Teamwork
What are the key skills required to become a PHP professional?
To become a PHP professional, you need to have a strong understanding of PHP programming language. This includes knowledge of PHP syntax, data types, variables, constants, expressions, operators, control structures, and functions. Additionally, you should be familiar with object-oriented programming (OOP) concepts, database management, and web development technologies like HTML, CSS, and JavaScript. Experience with PHP frameworks like Laravel or Symfony can also be beneficial.
How can I improve my teamwork skills in a PHP development environment?
Teamwork is crucial in a PHP development environment. You can improve your teamwork skills by actively participating in team meetings, sharing your ideas and feedback, and collaborating with your team members on various projects. Using version control systems like Git can also help you work more effectively with your team. Additionally, you should be open to learning from your team members and be willing to help them when they need it.
What are some common challenges in PHP team development and how can they be addressed?
Some common challenges in PHP team development include communication issues, conflicting coding styles, and lack of clear roles and responsibilities. These challenges can be addressed by establishing clear communication channels, agreeing on a common coding style, and defining roles and responsibilities at the beginning of the project.
How can I effectively use PHP in a team setting?
In a team setting, you can effectively use PHP by following best practices for PHP development. This includes writing clean and readable code, using a consistent coding style, and documenting your code properly. You should also use a version control system to manage your code and collaborate with your team members.
What are some resources for learning more about PHP and teamwork?
There are many resources available for learning more about PHP and teamwork. These include online tutorials, books, and courses. Websites like StackOverflow and PHP.net can also be helpful for learning more about PHP. For improving your teamwork skills, you can read books on team management and participate in team-building activities.
How can I contribute to a PHP project as a team member?
As a team member, you can contribute to a PHP project by writing code, reviewing code written by others, testing the application, and providing feedback. You should also communicate effectively with your team members and be willing to help them when they need it.
What is the role of a PHP professional in a team?
A PHP professional in a team is responsible for writing PHP code, debugging and testing the application, and collaborating with other team members. They may also be involved in designing the application architecture and making technical decisions.
How can I manage a PHP team effectively?
To manage a PHP team effectively, you need to have strong leadership skills, good communication skills, and a deep understanding of PHP development. You should also be able to delegate tasks effectively, provide constructive feedback, and motivate your team members.
What are some best practices for PHP team development?
Some best practices for PHP team development include using a version control system, following a consistent coding style, writing clean and readable code, and documenting your code properly. You should also communicate effectively with your team members and provide constructive feedback.
How can I become a better PHP professional?
To become a better PHP professional, you should continuously learn and improve your PHP skills. This includes learning new PHP frameworks, keeping up with the latest PHP trends, and practicing your coding skills. You should also work on real-world projects to gain practical experience.
Bruno is a blockchain developer and technical educator at the Web3 Foundation, the foundation that's building the next generation of the free people's internet. He runs two newsletters you should subscribe to if you're interested in Web3.0: Dot Leap covers ecosystem and tech development of Web3, and NFT Review covers the evolution of the non-fungible token (digital collectibles) ecosystem inside this emerging new web. His current passion project is RMRK.app, the most advanced NFT system in the world, which allows NFTs to own other NFTs, NFTs to react to emotion, NFTs to be governed democratically, and NFTs to be multiple things at once.