Return On Investment (ROI) as a community-involved software developer
I have been involved in "extra-curricular" activities as a software developer since Fall 2014. These activities have included going to tech Meetups, leading tech Meetups, presenting at Meetups, writing blog posts, contributing to open-source projects, being mentored by someone in the community, mentoring someone in the community, building GitHub projects, conference speaking, attending conferences, and just talking to fellow software developers that I don't work with (fancily phrased as "getting involved in the local software developer community").
Some of those activities above have helped me in my career, some have not. As time goes on, I think more and more of my time as an investment in something, and I want return on investment in what I do. So the question: "what should you do outside of work as a software developer?"
A while ago I was sent this blog post: Conference Speaking Isn’t Good for Your Career Until You Make it Good. That blog post rung a lot of bells with me.
When I first got involved in "the community", the people who sold it to me said all sorts of things like "my career really started when I got involved with the community" or "getting involved with the community has gotten me to where I am today". These sales pitches sound great and inspiring when they come from someone that I admire, primarily because I know of people that admire them and hold them up as great developers and examples.
What these sales pitches failed to really enumerate, is how "the community" helps, what specifically to do to achieve a particular goal, why to go for a particular goal, and when to do something. I admit that these are all hard things to explain and are very specific to each person. Further, a lot of advice is dependent on market timing, which is extremely hard to predict. (Your market is software developers consuming content.)
I'm going to go ahead and agree with Erik Dietrich from the blog above, that conference speaking is a loss leader. Then I'm going to go further here, and claim that community involvement as a software developer is generally a loss leader as a whole.
What is the Best Career Gains?
Saying that community involvement as a loss leader helps the career, assumes that indirect gains are made in the career because of this involvement. I'm going to say it's indirect because it's difficult to measure. Going to a store and buying 50 other things along with the one loss leader is easily measurable on the same sales transaction. Measuring what benefits come of community involvement is as difficult as measuring interactions between people.
It's very easy to make the accidental assumption that the gains is measured by the most financial success, the most money. This isn't necessarily true, but it's often a start. Financial compensation is probably the most objective measurement, and one often boasted about.
Financial success can be an useful measurement, especially during stages of personal growth. However, each local market has some local maximum in what the local market pays, and at some point more career gains doesn't mean much more money, if any. Though this might be completely untrue with the rising prevalence of remote work providing access to talent, wherever that talent may be.
At some point, we don't need more money. We can meet our expenses, and we reach some level on Maslow's hierarchy of needs where we crave the next level of that pyramid. This is identifiable when someone talks about a job in terms like this: "well, it's a bit less money, but..." That could be followed by less stress, less of a commute, neater technology, or something that's worth giving up compensation for. It doesn't even have to be a pay-cut that they're giving up, it could be a horizontal pay change.
So what do we get out of community involvement that's so valuable? If it's not always money, what do we get?
Relationships are the most valuable thing that we get out of community involvement.
Relationships generate career opportunities, job security, fame, and fortune. Just as I'd take it as common-sense that each of our jobs is improved greatly by being on good terms with our supervisors, so does our place in the job market benefit from relationships in the community.
If you didn't catch it in my statement above, the software developer job market and the software developer community are close to the same thing. Those same software developers involved in the community, could be your competition in the job market, or the hiring manager, or a reference for a job, or someone who you can be the hiring manager or reference for.
The Revised Premise
I'm going to revise my premise that community involvement is a loss leader by changing the goal to relationships. Community involvement generally increases and betters relationships with software developers.
Let's take a detour on the topic quickly and solidify one "gain" from relationships in the community: If I lost my job today for some reason, I could probably have a job again within a week with relative ease. Because of community involvement, I have minimized the possible loss for a worst case scenario.
That is almost verbatim a goal as as stated by Minimax. (forgive me for the sin of quoting wikipedia)
Minimax (sometimes MinMax or MM) is a decision rule used in artificial intelligence, decision theory, game theory, statistics and philosophy for minimizing the possible loss for a worst case (maximum loss) scenario. When dealing with gains, it is referred to as "maximin"—to maximize the minimum gain. Originally formulated for two-player zero-sum game theory, covering both the cases where players take alternate moves and those where they make simultaneous moves, it has also been extended to more complex games and to general decision-making in the presence of uncertainty.
The point is that relationships are insurance against the worst-case scenarios, and a chance to make best-case scenarios even better.
Are community relationships personal?
It's far too easy to dismiss community relationships as being purely professional relationships. Purely professional relationships don't have nearly as much impact as personal relationships. We're all people, and I don't have any good reason to remain on only professional terms with people that have a lot of the same interests as I do.
I suppose this question is really up to you, are you interested purely in advancement or do you care about the people too?
What should you do outside of work as a software developer?
I've been dodging this question for a while now on this blog post, and now I'm going to throw it back in your face and say that I don't know.
Software development and associated activities is only one aspect of a well-rounded person.
Everyone has friends and family that aren't in the software game, go spend time with them! I like many things outside of software development, most notably board games in 2018. Speaking of, I'm looking for someone willing to spend 10 hours with me to learn and to play "War of the Ring, 2nd edition".
I'm not going to tell you what to do outside of work, go be yourselves.
Community Involvement by activity
Having just told you to go be yourselves, I'm now going to tell how each activity has changed my career:
Being mentored by someone in the community
This has happened several times for me and I can't tell enough how great this has been for me. The words of experience are not to be dismissed. Make time for this if mentors are available. Forget everything else, this is the most important.
Being mentored can be as in-depth as a honest and frank discussion about your current problems that the more experience person listens to and offers words of wisdom, or it could just be an in-passing conversation. Often, the people mentoring you aren't necessarily aware that they are because it's an informal discussion.
Talk to people with more experience than you. It's okay not to know as much as them, don't try to swagger and puff yourself up to make yourself look more important than you are (I've done that before).
Mentoring someone in the community
I'm still not entirely sure if I've done this or not. I've talked to people with less experience than I and they've thanked me later for what I said. I'm glad they've got value, but I still harbor doubts that I've actually helped anybody.
From a callous and purely self-serving viewpoint, I've not gotten any financial value from this and I'm unlikely to. I hope that our relationships have improved because I've given relevant info and advice.
Also, this is on a direct one-to-one basis, so only one person is being reached at a time by this activity, so from a community involvement perspective, it's not very efficient. Best I can hope for is that I made a big difference to that one person, and that's all I could ask for: helping one person in and of itself is a worthy goal.
This is a varied activity: leading, attending, and presenting.
Presenting at a tech meetup is a fantastic time to present your knowledge and skills and viewpoint to the local software community. Not to mention, you get a semi-captive audience for your favorite topics, how can you beat that? Building relationships from this is easy, because people will want to talk to you afterwards whether to thank you, to say good job, or to argue why you're wrong.
Attending a tech meetup is entirely up to your social skills, you'll probably have to be the one to walk over and introduce yourself to someone.
Leading a tech meetup is about as interesting a chance as you can get to repeatably talk to people. I elaborate a lot more on my first attempt at running a tech meetup here.
It's cliché to say, but it's true that you reap benefits here in proportion to what you sow. If I may make a financial comparison, investing your time into a meetup is akin to Value Investing. It's not typically the coolest thing to do or usually have immediate return, it requires dilegence, consistency, patience, and resilience to realize value over-time.
I can certainly recommend attending an occasional tech meetup as being worth some time. Leading or presenting are the next levels above that and you need to measure those for yourself. All I can say, is that I met my current employer at a tech Meetup, so it's certainly helped me.
This is such a weird bag of items for me, and is very much tailored to what my experience in this has been. Let's start with job seeking:
A common reason for open-source work is to show proficiency in an area of tech that your past jobs may not illustrate. The reality for me, was that most places didn't care about that or didn't count open-source as actual experience with something.
On the flip-side for the companies that do care about open-source contributions: An interesting trend in the job market I've seen, is the rise of jobs requiring open-source contributions in a specific project or tool. First time I saw this way back when, it still looked like a neat job because I used that open-source project all the time, and so I pulled up the open-source git repository and thought "cool, a contribution or two and I can apply for this job". I spent maybe three hours on an issue, before giving up because someone beat me to the Pull-Request.
I started thinking about job requirements involving open-source contributions and decided they weren't going to be my first resort because I couldn't get the idea out of my head that these were essentially unpaid take-home projects for software developers that directly give the hiring company business value regardless of whether they hire you. I decided that these job postings weren't fully viable for anyone not fully immersed in contributing to the core repository, regardless of how familiar the developer is with the use of that project/tool.
I know arguments could be made "open-source for the sake of open-source" and "it's not for the company", but emotionally to me it's giving value to the company for free regardless of whether they hire me. To be more objective: any time spent on activities solely around one job application, is time not spent on another company's job application. Gotta be efficient.
I don't have an answer on whether open-source contributions as a job prerequisite is a good thing, but I'm pretty sure it's become more common with the recent mainstream in-vogue commonness of open-source by big corporations.
Now let's ignore job seeking:
I have several open-source projects on GitHub myself, I've contributed to others, and I enjoy it. However, this is time spent on code and if you don't seek interactions from these, you might not build any relationships from them. So ROI on this varies wildly based on the project.
Do open-source if you want to. I enjoy it, but it's not contributed greatly to me getting any job that I know of.
This is entirely covered by this aforementioned most excellent blog post. Though I only recommend if you've already done presenting at tech Meetups as a warm-up.
Get the hotel next to the conference center, hang out with people afterwards, talk to the speakers after presentations, ambush the speakers in the hallway with questions, talk to other people in the audience, sit next to other people besides coworkers, GO TALK TO PEOPLE!!!! I love software conferences and heartily recommend losing a day or two to these. I know of several people who have gotten jobs at these before.
Writing blog posts
Blog posts are extremely efficient in that they can reach the widest audience with the least effort. Once you write a blog post it can be referenced for years.
To borrow someone else's perspective, you should read the positives as outlined by Eric Anderson, who runs a most excellent blog on what he learns. He's been blogging for years now and is a most excellent person to follow, his return-on-investment in relationships from his blog is excellent.
Most of my positive points are the same as last year. I guess I shouldn’t be surprised as these are the reasons I spend my free time working on the blog.
- Driver for learning new things
- Opportunity to use new/different technology outside of my normal work
- Helping others learn new concepts
- Helping others overcome problems
- Made my first contributions to open source
- Comments from readers letting me know posts were helpful
- No big hosting issues this year (thank you NodeHost!)
Again most of the challenges are in line with what they were last year. I guess I should take that as a red flag and focus on solving some of my challenges instead of living with them.
- Learning new things on a deadline
- Self-applied pressure to meet my goal of a post a week (increasing my stress level)
- Not focusing on stats, shares, comment, etc.
- Picking the right things to learn
- Time requirements taking away from other projects I would like to do
Eric states how it is more clearly than I would.
Return On Investment (ROI)
The ultimate summary of how to get Return On Investment from community activities as a software developer, is to mix and match any of the above when it's the right time to do so. No one thing is likely to give the highest return. Being a well-rounded community-involved software developer with several options in your portfolio is the most versatile position.
Community involvement has helped me as a software developer. It's mostly up to each person's level of effort, on whether it helps them.