Clear Communication is the Key

communication error
I  joined the Linux Foundation and many other open source professionals at the Open Source Leadership Summit OSLS in Squaw Valley this week. It was full of great and interesting people who make the open source community live and thrive. I can’t mention everyone, so I will just call out two of the exceptional people, Sarah Novotny and Jono Bacon. Both Sarah and Jono have a track record of consistent community leadership. Both of them spoke at the OSLS. I would like to re-emphasize a common open source community theme they hit on.

Clear Communication Leads to Strong Communities

The community supporting the projects needs to understand where they are headed. The practice of “extreme clarity” in all aspects of the community activities, builds strong communities. For example, as commercial products are relying on the projects for feature development and bug fixes, clear communication on the product strategy helps everyone considerably. Transparency and good communication between project and product teams leads to successful outcomes. This obviously makes sense in the private development of products. When combining upstream and downstream work, it is even more critical.

 

Failures are a common occurrence. When missing a development deadlines, how is it handled? The community must meet the challenge head on and discuss the problem transparently and publicly. Not communicating well or ignoring the problem leads to distrust of the release schedule and project strategy. Not every problem needs a full debate, but the process of discussion, resolution, and documentation, leads to broad acceptance of outcomes.

 

The community processes themselves must not be taken for granted. The people involved in the projects, governance, and products with evolve over time. By holding consistent, transparent reviews of the community processes, the communication will continue to be strong. It is often taken for granted how the community functions. It shouldn’t be. New contributors need to understand why and how the community mechanics work. They need to be able to debate their views on how to improve the process of contribution.

 

To conclude my point here, clear communication is a key attribute of successful communities. Consistent contribution, as Linus Torvalds spoke about at OSLS, is critical for successful projects. But without clear communication, consistent contribution cannot be maintained.

How to use Public Projects to Build Products

Lanai Rock with glass

Project to Product

I want to focus on one specific aspect of project to product development from the Open Source First article. Coordinating upstream (publicly licensed) and downstream (private non-licensed) development work. In any organization that is developing and supporting software, there are some number of engineers that work on public projects. It is a common problem that the Development Managers and the Scrum Masters do a poor job of tracking that public work. Let’s assume that the Development Manager is aware and supports the public development work.

Support the Developer

What typically happens is that upper management is not aware of what the upstream work purpose is and its importance to supporting the overall development strategy. What likely started as support or even direction from the Development Manager to work on the public project evolves into a fog of light understanding.

Many months later, when performance reviews and head count updates come around, typically the upstream developer gets lets left out, as the public work is not part of what upper management understands. This leads to either dropping the upstream work, alienating one of your likely best developers, and/or the upstream work continues, but with zero Development Manager insight. In some cases all three things happen, in which case, you now have a increasingly separated, forked development effort, with a increasing annoyed developer, that is going to be putting in more and more time into the public projects. Not a good workplace situation for the developer or the manager.

Treat Public Projects Like an Company

It takes more work, but there is a proven solution. Treat the public projects like another engineering organization. If you are going to work with another engineering team, you expect to have a clear understanding of responsibilities and timelines. You need to have the exact same expections when working with a public project.

Right at the beginning, when the developer has plans to work upstream, set out responsibilities and timelines. This is just as much to protect the developer as is it is the company. Define what the public work deliverable will be and when it will be delivered. Make sure your Product Managers understand how the public work contributes to delivering the product. Make sure the Scrum Master works with the upstream developer just like the rest of the downstream developers. The upstream developer is still part of the team. As the upstream work starts to take shape, get the code into a testable branch on your software pipeline. Make sure you have quality unit and build tests to verify the upstream work, so it can be more easily merged into your code base trunk when the time comes.

Track all your development work and report on progress. Highlight the upstream and downstream work. Update leadership on the upstream progress. Keep up to date with the public projects release schedule and strategy. Publish both your private release schedule along side the public projects release schedule.

Make It Happen

This is just the broad strokes. You will need to take this and put in specifics for your implementation. Organization structure and tools vary greatly, but hold to the basic tenants outlined above.

Get To Know Your Future Self

I get nervous before every job interview. Most of us do whatever we can to avoid getting in the situation of having a job interview. That generally means avoiding career planning as well. The messy truth is that we put off uncomfortable activities. I have put together a simple step by step plan that can help you make working on your career a positive experience. We all need some help with learning and growing. Your career is no different.

We are developing your career understanding by creating a plan. This plan is for increasing your personal capabilities to make your career goals happen. To create a truly effective plan, you need to pick a mentor to work with. This mentor can be a wife, boyfriend, mother, co-worker, or boss. The mentor you choose needs to work with you on creating your plan. It is helpful, but not mandatory for your mentor to be in the same career path. You need your mentor to be slightly senior to you skill wise, and be available over the next 3 to 12 months to work with you. I have practiced different forms of these steps below over the years at many companies and situations. As a result, I have a list of ten mentors that I ask for advice and council. You just need one.

Let’s dig into who you are and what you want to develop into. Follow the steps below to get to know your future self.

Create a long term career goal

  • We need to figure out what do you want to be doing in three years. Your goal need to be attainable, but a stretch to accomplish. It can be a skill like software development, managing people, or leading organizational change. Or it can be a specific role like Engineering VP, Senior Project Manager, or OpenStack open source developer.
  • What skills do you excel at? What skills do you fall short? As you are reviewing your skills, you may find things that must be fixed immediately, others can be areas to be developed over time, and still others you can ignore. Are any of the areas you need to improve on can be classified as character flaws? For example, if you have a habit of lying to your co-workers, that is a problem that must be fixed quickly. Your character is the core of your working career. If you have some software development skills to improve and you are a software developer, then you need to improve this skill over time as your technical skills are important to your position. If you are not very good at following up on the details of a large plan, you can augment your team to fill the skill gap. You can ignore the flaw, because you can correct the gap with your team.
  • You should now have a long term career goal and short list of attributes labeled good, improve, and ignore.

We have a rough career strategy at this point and a mentor to lean on. You know what you want your future you to be. Congratulations, most people do not get this far.

Company long term goals

  • Before we jump into your career development steps, you need to understand your organization business objectives. Where is your organization going to be over the few years? What is the business strategy to get there? If you are not sure or do not know, then you need to figure it out.
  • Ask your mentor for help. Aligning your goals with your organization is critical to figuring out where and how you fit.

Your short term goals

  • Next, by brainstorming with your mentor, we create a few one year goals. These should be steps towards accomplishing your long term goal of what you want to be doing in three years. Utilize the goal attributes of specific measurable, attainable, relevant, and time-bound. See https://en.m.wikipedia.org/wiki/SMART_criteria

Your activities to complete goals

  • We will need to create a plan for accomplishing each goal. You will learn more from mistakes and failures while doing what you are learning rather than reading or watching. So I would lean heavily on activities that get you directly involved in doing something productive. Document what resources you need Include some thoughtful details on how you can be successful. Come up with alternatives if you have them. For example, with a 1 year goal learning multi-threaded python software development, aligns with company objective of 99.999% production uptime, then document (3) multi-month activities, each with a timeline, that will get you to a good proficiency level within a year. Taking a month long university python development extension course, working with python test driven development tutorials, and working on an open source python project feature would be good activities.

Socialize

  • Now you have a thought out plan that you have co-developed with your mentor. It is time to socialize the plan with your manager. Make adjustments depending on your manager’s feedback. Be thoughtful on what your manager is telling you. Does your manager understand and support your career goals? It shouldn’t be too different that what you expected. If there are large differences between your goals and your manager’s expectations for you, then you need to double check with your mentor if you are being realistic with your goals. If you can not reconcile your goals with your organization, then you need to start thinking about a transfer. Talk it over with your mentor. Reach out to your Human Resources department to start looking for where your career job opportunities are. Take a look at linkedin jobs https://www.linkedin.com/jobs/view-all. It is likely that a job opening already exists for the career you’re aiming for. Before you make any job changes, talk to a few hiring managers. Ask them questions before you decide to make a change. You may find that the grass isn’t greener over there.

Implement

  • After you have fine tuned your career plan, it is time to make it happen. Pick the easiest goal off the plan and start working with your mentor and manager to accomplish your dreams.

Communicate

  • Have regular meetings with your mentor and manager. Gauge your progress against what you expected. Make adjustments in your plans as necessary. Keep your eye on your long term career goal.

As you get about halfway through the year, review your career plans. Make adjustments. Start planning your next year of short term goals.

Extra Credit

  • Your resume is very similar to a career plan. A resume is all about what you have done, but it tells the story of your career. If you understand your career goal, then you should be able to glance at your resume to know if you are on track to success. Having your resume up to date is a great confidence builder. Nothing says you are ready for the future like a ready resume.

Transforming with an Open Garden

Chateau du Versailles, walk towards the Summer Palace

I was invited to speak at one of the TODO meetings, 17 Jan 2017, at the Yahoo Sunnyvale offices. My talk was centered around Open Source First as a strategy using the Open Garden Development and Project to Product concepts.

What is the TODO group

The primary purpose of the TODO group is to bring together companies who run open source programs. Open source leaders, as a community, do not talk amongst ourselves very often. We deal with lawyers, security, and technology products, so being shy comes as no surprise. Henceforth to combat the lack of communication, the TODO group was formed to help improve the shared knowledge. Generously, the Linux Foundation supports the TODO group as one of the Linux Foundation Collaborative Projects.

Open Garden as part of Open Source First

My talk highlighted the accomplishments of Walmart as a company and OpenStack as an open source software development community. I want the success of OpenStack as software development community to work at Walmart. Therefore, I have created an strategy for success called Open Source First to work on making this happen. To begin with, we have started with the Open Garden Development and Project to Product parts of the plan. Put simply, we are improving collaboration through better communication and creating a better workflow from feature development to product implementation. For your review, find the talk slides are below for more details. For more information on the Linux TODO group visit http://todogroup.org/.

#UPDATE 08 Feb 2017: I rewrote the first paragraph with better verbiage and added a second paragraph with details on the content of the talk

Public Product Management Transforms Private at Walmart

For those of you that know me,

know that I am more a of engineer than a product guy. Even so, I was hired on to transform the Walmart Platform Products using my engineering and open source experience as the Walmart Platform Product Director. It’s been very interesting so far. Not without some bumps and bruises along the way. I am happy to say that we are in our 5th month running an internal Platform Product Guild, largely based on the success we the OpenStack community have had with the OpenStack Product working group. We have development teams publishing Product Roadmaps that we regularly review across product teams and with customers. We are directing customer and engineering feature requests into our Product Roadmaps and product development cycles. We still a lot of quality to improve on, but we have made great progress so far. I am looking forward into 2017 to include more open source behaviors in the product development processes at Walmart. Stay tuned for more details as I can share them.