English Original: Coding culture:how to Build Better products by Building stronger Teams
Translation/plexus
Software developers often spend a lot of time and effort on how to build the best products. We often struggle with what kind of web framework should we use, is it a nosql database or a SQL database? However, while these issues are important, developers often overlook one aspect of the software development process that is equally important to these issues-culture. This article will share with readers the experience of how to maintain a strong culture of innovation and collaboration in the Atlanssian company.
The product is constantly evolving. In the next few years, a product that you have poured blood and sweat and tears may cease to exist. However, if you can focus on creating a strong team and coding culture at the same time, you can always be prepared to seize the opportunities that arise (overcoming obstacles). Moreover, the development of a strong culture requires a consensus on the positions represented by the team, and this cohesion is reflected in the products that the team is building. Great culture contributes to great products.
So what is "great culture"? Culturally visible external signs-free food, free drinks, yoga classes, Aeron computer chairs, video games, Nerf toy guns-are often mistakenly equated with culture. Indeed, many companies, especially technology companies, offer these great benefits, but this has nothing to do with culture. Culture is how we communicate, work, organize, and woe. Culture cannot be accurately described, but it can make employees happier and more productive. If employees are afraid of failure, the company is hierarchical, and employers make profits more important than their employees, even if there is more free food and public allowances.
Today's workplace is no longer by the nine-to-five, punch-in-and-run, pipeline-style mentality dominated. For knowledge workers, such as software developers, the value of output is measured by creativity and quality, not by capacity or time. Today, we are free to choose whether to work in the office or work from home or work in a hotel room whenever necessary. This creates countless exciting opportunities to develop a culture that will benefit all employees.
Innovation culture
There is a familiar story in the tech industry that small innovators will lose their ability to innovate as they grow in size. Indeed, large organizations are more structured and inflexible than start-ups, which can lead to difficulties in nurturing groundbreaking ideas and surfacing them. One reason why culture is so important is that no matter how large a company is, it can help companies keep innovating. Creating an innovative cultural atmosphere not just saying, "All right, guys, it's time to innovate." "or open up a dedicated" innovation department "so simple. We cannot command innovation, nor can we isolate innovation in an isolated group.
In my personal experience, the best way to encourage people to innovate is to give them plenty of time to start thinking and try to realize these ideas. At Atlassian, we bring all our employees together every quarter to launch a 24-hour hackathon known as "Shipit Day". All people who have good ideas about how to improve their departments and products can join Shipit day. Surround the ideas that have the most impact potential, form multiple teams (or you can fight alone), then start Shipit Day at Thursday Three o'clock in the afternoon. In addition to Friday three o'clock in the afternoon there must be no deliverables, no other rules. This is a global Atlassian office activity, and everyone will eventually vote to elect a global winner.
The achievements in 24 hours are amazing. Many of the great things that come from Shipit Day are eventually incorporated into our products. In addition, these activities can make people happy, because they have a way to realize the idea of the channel. Shipit Day motivates every employee in the company to constantly push themselves and think about solving problems in different ways.
Happy culture
One of the heavyweight studies that emerged last year confirms our previous perceptual knowledge that happier employees are more productive and often make companies more profitable and fast-growing. Shipit Day becomes a part of people's happiness not only because they can bring their ideas to life, but also because it keeps people together. In a happy team, employees understand each other, respect each other and enjoy the time together. Employers can develop a happy working atmosphere by opening up dedicated social hours that allow employees to rest and relax.
Corporate Happy hours, summer outdoor parties and themed holiday events are great ways to bring together a wide range of employees from different departments. It's also a good idea to celebrate the team's victory, for example, by hosting a release party because it's important to recognize the good work. It's sweeter to share the victory with others. In addition, activities such as rafting or rock climbing can be organised, and employees are able to work together and gain a better understanding of the pros and cons of their colleagues. Such activities can enhance the relationships between the employees who work together and make connections between employees who do not have too many opportunities to communicate. Being honest and interacting with each other helps people feel more comfortable, while also highlighting the feeling of being a team, which helps to avoid negative attitudes or recriminations.
At present, many companies are already doing this kind of activity, and think to create a happy cultural atmosphere, this is all they need to do all the work. But that's not true.
In order to ensure that employees are able to work happily, the manager needs to establish a quick and convenient inspection mechanism to quickly get the quick feedback from the staff about the current mode of work and the work improvement advice. Atlassian built an ipad app called Moodapp, which is placed at every exit of the office so that when employees leave, they can share their feelings, feel their manager's support, and so on. We found that while more than 90% per cent of employees were more satisfied with their current work, about 30% of respondents thought that they had not been recognized for their excellent completion of certain tasks. We inform team leaders about this ratio and launch a campaign to promote the Kudos program: It's easy to get employees to appreciate each other's ways of working. Employees only need to fill out a document at the internal service desk. A few days later, an approved employee will be able to get a small gift card with an Amazon voucher or movie ticket. While the number of honorary documents increased, the number of employees who felt that their work was not recognized fell to 10%. Spotify also did a similar job after learning that 91% of employees felt happy. Although 91% is already a fairly good percentage, Spotify still wants to know why the remaining 9% of employees are unhappy. They talked to the employees and made some minor adjustments, which eventually rose to 94% per cent.
Of course, it's impossible for everyone to keep happy. A certain period of time may be more stressful than another period of time, personal problems outside of work can occur at any time, and there may be events beyond our control, such as a disk corruption on a production server that causes hundreds of customer service outages. Ups and downs are unavoidable, but by building a strong team, employees can share the pain when they encounter a bad situation.
A culture driven by values
Culture is not only a matter of organizational concern, but also the internal team should consider cultural issues. A strong cultural atmosphere is based on strong values across the organization level. Values can guide culture. Atlassian has built its culture around five strong values, such as ' Don't #@!% customers. ' For the engineering team, that means everyone needs to be able to understand the customer.
It's a cliché, but it's still worth repeating. Everyone should know the customer, and the customer should also participate in the product development process. We can do this through video interviews, new feature requests in the voting system, story maps, and even the role of the bathroom post user in the office. Realizing that the customer is the center of the team's operations can remind all members of the reason and goal of building the product. This ensures that employees understand the issues they are dealing with and that they understand the functions directly related to the product.
Customer awareness can also help the team maintain a passion for the product. In addition to enthusiasm, another important engineering value (engineering value) is the pursuit of excellence. Crappy code is always unacceptable, even for time reasons. Create an environment that allows the developer or team to fully estimate the project cycle, since the assault is not a good thing, and it is likely that a rework will be required.
Another value of Atlassian is ' desire to change, first change yourself ', the implication of which is that engineers should constantly look for better ways to do things. Remember that only changes are immutable, and yesterday's best practices do not apply today. Teams should be happy to try new approaches or use different technologies, but don't fall into the trap of ' implementing the latest framework ' because they have the ability to do so. In addition, beware of the arrogant people in the team who may be doing something that goes beyond the set goals or that is detrimental to the entire team or product. Ensure that all people are able to work together and achieve their goals. At the same time, this needs to be balanced with the needs of the architecture adjustment. If you are always tweaking the schema without publishing any products, this is no benefit to anyone. Do not over-design the product. We need a good enough product, but we don't need a flawless product. Publish available versions, get feedback, and continuously optimize your products. Balance the enthusiasm of your code with the needs of your users.
Engineers are using these values to build daily-use software for customers, and it's great to show their work to customers when the release is released. However, not all departments in the organization have such privileges. For example, the service department can track the service process and celebrate it based on the number of support cases processed, but it's not as satisfying as releasing a product that you build yourself. A few years ago, our service team decided to interpret the values of ' Don't #@!% customers ' from their perspective and make posters on the road to getting into the office every day. The poster contains slogans like "Look forward to every customer", "solve them when the problem is small", "Keep learning" and "let the customer admire". This fosters a common sense of mission and enables the support team to recognise the "cultural rock star" that embraces these values and acts according to these values.
A culture of openness and transparency
The company is naturally divided into multiple teams, and culture needs to create a team environment: 1 is efficient and cohesive, while 2) communicates smoothly with other teams. We're trying to keep the average size of the small team at 4-8 people. In teams of this size, there is no need for complex communication tools, and everyone can understand what their colleagues are doing. The connection between them is also relatively close.
However, as businesses grow larger, these teams and departments are often split into multiple, hard-to-break silos. Part of building a strong organizational culture is to try to keep the boundaries between groups as low as possible, so that people can learn from each other and help each other when they need it. It is important to emphasize that, regardless of the size of the organization, it is essential that all personnel work towards the same goal. For example, developers may feel frustrated because they think the legal department doesn't allow them to use an open-source library, just because it's easier to say ' no ' than to find a solution. People in the legal department may think that developers do not understand the legal issues associated with using a particular software license.
The best way to get across these islands is to connect employees from different departments. The activities mentioned above are part of this effort. It also allows new employees to write an introductory blog about their personal information, as well as a robust and easy-to-share platform for collaboration. Through blogs or announcements, employees should also be able to keep abreast of what is happening in other departments. For example, the news that the design team won the jackpot was shared with the entire organization. Share failures and initiate discussions-you never know who is going to contribute valuable ideas. Transparency is the key to keeping culture alive.
We'll keep track of all the content we want to discuss or keep on the collaboration platform confluence. We discuss ideas, turn ideas into functions, and work together to develop these features. This is better than the way the telephone communicates, the content discussed in the telephone communication can not be automatically documented, and better than the way e-mail, the discussion content can easily be drowned out. Chatting is also a very good means. Through the team communication platform Hipchat, chat has become our nervous system. Each team has its own hipchat chat room, the chat record can be saved in time, if a member is traveling, in a long meeting or want to focus more, you can choose to turn off the notification, later to view the previous chat record. We also connect chat with other systems. For example, if a build fails, we receive a chat notification and can initiate a discussion immediately. In addition to the chat rooms within each team, there are cross-departmental chat rooms that allow employees in different departments in the organization to connect. For example, employees of the legal department and employees of the HR department can join a football-themed chat room to discuss a qualifying program or review a professional game on weekends.
Transparency and communication are especially necessary for distributed teams, which has become the norm. These chat rooms can connect people in different time zones, let them agree, and can discuss each other. Chat rooms can also eliminate hierarchies within an organization. Any employee can comment on a blog published by the CFO, and vice versa. In these fluent communication, there are many ideas that may be very great, but it is also important to keep all conversations respectful and courteous.
Cultural scale (scaling culture)
As the company grows in size, it is becoming increasingly challenging to spread and maintain the cultural atmosphere throughout the organization. When I joined Atlassian before 3.5, there were about 350 people in the whole company, and now there are more than 1300 people. We understand that our culture will change as the company grows, but we know that our values will help keep the culture intact if we act properly and maintain our employees ' sense of responsibility.
We achieve cultural scale by creating a team of small, cross-functional programmers, including designers and QA personnel, who can move to another team that needs him or vice versa if the designer is no longer needed in the next sprint. Another challenge is to organize multiple teams to serve the same product. I've seen a few companies solve this problem by creating multiple teams, such as front-end teams, performance teams, and database teams. In my experience, this creates collaboration issues, because a feature or user story may span all teams.
We found that the way each team was responsible for a particular scenario worked well. For example, our confluence product has an "easy to get Started" team that focuses on how to bring users into the platform. Then we have a corporate team that is primarily responsible for large customers, not just in terms of performance, but also on how to show 1000 users on the admin screen. These teams work independently and are able to support each other when needed. Each team determines the solution to the problem and the personal tools to use. We call this approach "activism (do-ocracy)", where each team has the authority to adopt the work best suited to them.
As each team is independent, we also encourage the team to seek support from other teams when needed, and share with other teams the good ideas and features they can implement. If the easy start team says, "We plan to build a new Confluence page layout by function," we'll share this idea with all the other teams. Other teams may say, "from an enterprise point of view, you may need to pay attention to this or that point." "Everything will be discussed, which will create an environment of collective ownership." Collectivism requires transparency. To achieve this goal at the code level, we will do code reviews in stash and BitBucket. But sometimes it's hard to find the most appropriate code to change reviewers. Therefore, we have also written a free stash plugin stash reviewer Recommender (Reviewer suggester), based on whether the document has been modified before or is the original author of the document, the reviewer recommended. They are the best candidates to review the changes because they know the code the most. We have found that this approach is very scalable and allows organizations to be more flat, leading to more innovation.
Pick the right person
If you can't hire people who are suitable for your company or team, you will end up fall short even if you try your best to cultivate a culture. In terms of hiring people, you can find fault and refuse to compromise. Choosing the right person to help protect the culture of hard-to-create environments. Atlassian before finalizing a candidate, it will undergo screening questions, online coding tests and multiple on-site interviews. Each candidate needs to have the right skills and be compatible with corporate values and other employees.
In other words, you should not hire employees who are only fit for a particular pattern. When I say you don't want a bunch of brother programmers, it's best to trust me, and if you only hire your friends, that's a very good thing to happen. Your culture and productivity will grow with diversity. If the new influence is not to be refreshed, culture will die sooner or later. Hire women, hire people of different ages, backgrounds, different education and work experience, different races, and make sure they are welcome. We achieve this by assigning a partner to each new employee-to introduce him to the surrounding, to help them in important areas, and to let them know about the weekly party. Our San Francisco office has a "beer bike" activity, and every Friday new employees ride bicycles, carry beer and distribute beer for everyone as a way to introduce themselves and promote communication. We also organise a four-week training camp where senior staff are trained to learn about new hires, and new hires can choose from different courses.
Recall the beginning of the article we mentioned--where does the great culture come from? As we've explored here, culture comes from allowing employees to thrive on their creativity, coming together for fun. A shared value system from a focused development that allows everyone to work for their goals and to communicate openly. Culture is about strengthening transparency and integrity, respecting autonomy and encouraging cooperation. Culture is about preserving the culture by hiring people who can keep the culture, no matter how big the organization grows. Culture is the cornerstone of all other growth-so make sure your organization has a strong text
Cultural code (Coding culture)