Discussing Team Compensation and Possible Refinements

Introduction

For a while, team compensation has been a sensitive topic at OpenCraft. Accordingly, it’s been a difficult topic to bring up and participate in.

Previous discussions have taken place at OpenCraft regarding raises, hourly rates and compensation. The latest discussion played a large role in openly defining the Team Compensation process in the handbook.

According to the handbook, team compensation is a sensitive topic which might result in a lot of friction when it is coupled with self worth and comparable work. Regardless of the approaches available across different companies to address these issues, unfortunately, making someone feel undervalued is inevitable.

Some of the companies, such as GitLab, rely on a salary calculator based on location in an attempt to solve the inequality issue. The handbook makes it clear that OpenCraft hardly considers location a fair criteria. According to the handbook, it shouldn’t matter where members are located if they are able to produce the same quality of work.

Another option some companies attempt to utilize is setting a unique salary for everyone. Unique salaries bring their own challenges because they require either eliminating the company’s competitiveness on the international market or underpaying team members from certain parts of the world depending on which salary is chosen.

Accordingly, OpenCraft has attempted to strike a balance by adding a minimum hourly rate and team-wide raises.

A minimum hourly rate at OpenCraft helps ensure that even members who low-ball themselves get the chance to live comfortably. The minimum hourly rate is available for core members only, to ensure they are fairly compensated.

In addition, OpenCraft offers team-wide raises where hourly rates are bumped by a percentage amount by the end of each year, based on the overall company results. This enforces a collaborative atmosphere where members are rewarded for staying with the team longer.

By not individually negotiating rates, and directly accepting or rejecting initially proposed rates, OpenCraft attempts to eliminate the unfair advantage some people might have over others when it comes to negotiating.

OpenCraft allows discussing such sensitive topics and finding appropriate solutions, as the one in place, because of its core values. OpenCraft highly values openness, quality, commitment, and empathy , and does a good job at including them in most processes created.

According to Xavier Antoviaque, OpenCraft’s CEO, “OpenCraft is like an open source project - when something with it doesn’t work well for you, patches to fix it are not only possible, but welcomed”.

Due to OpenCraft welcoming change and the Developer Advocate role being in discussion, I considered demonstrating the main responsibility of the role by discussing one of the highly avoided topics at OpenCraft at a depth that has not been done on the forum before.

The team compensation process hasn’t been working well for me and some other members. This process lead to me reconsidering my future at OpenCraft, a company which I adore. In hopes of having the team compensation process better aligns with the developers’ success at OpenCraft and the future of OpenCraft, I’m hoping to contribute some of my ideas to the friction I had with it.

According to OpenCraft, choosing the hourly rate should factor in for vacations, sick days, and some additional costs. The current minimum hourly rate, although generous, becomes insufficient when those costs are considered. Therefore, a specific calculation is done in hopes of justifying raising the minimum hourly rate.

Moreover, team-wide raises encourage members to stay at OpenCraft. Even though the intentions behind team-wide raises is wonderful, it requires further refinement. In hopes of making it possible for developers to progress at a faster rate than switching companies, the idea of a 1 year contract life-span is suggested.

Minimum Hourly Rates

In a perfect world, an optimal month of work is a month consisting of 22 business days where the member fulfills their whole commitment (ie. 132 hours or 176 hours — depending on the member’s weekly commitment).

With a whole year of optimal months , this accounts for between 39,600 euros and 52,800 euros per year while making the minimum hourly rate.

Unfortunately, optimal months of work are rarely the case, because humans are not perfect and are susceptible to life’s mess and chaos. Therefore, according to the handbook, when choosing the hourly rate, one should account for the following costs as well: “taxes, vacation and benefits, and insurance for sickness or unemployment”.

If one accounts for sick days, vacations, public holidays, and weekends, they are left with an average of 227 days of work, instead of the optimal year consisting of 260.

This was calculated by following the following steps, which you can skip if you’re not interested:

  • 245 is the average number of business days in a year, excluding weekends and public holidays, for the past 10 years (can be calculated using timeanddate).

  • Although, according to IAmExpat, sick leave in Germany is granted up to 6 weeks, that number seems pretty high for a remote job. Meanwhile, according to Indeed, full-time employees in the private sector are given an average of 7 days of sick leave in the United States of America.

    238 days of actual work remain after taking 7 days of sick leave into consideration.

  • According to Global Workspace Insider, employees working five days a week are entitled to 20 days of paid vacation; this number seems a little bit high given the remote worker’s freedom in traveling while continuing to work. Meanwhile, in the United States of America, full-time employees receive 11 of paid vacation, according to Indeed.

    227 days of actual work remain after taking 11 days of paid vacation into consideration.

Hence, OpenCraft members earning the minimum hourly rate end up making between 34,050 euros per year and 45,400 euros per year by working 227 days, as long as they work 6 to 8 hours consistently for all 227 days.

After taxes, the minimum hourly rate no longer remains sufficient when accounting for the costs of insurance for sickness or unemployment. Assuming the tax rate is 10%, these members remain with income ranging between 30,645 euros to 40,860 euros. This accounts for approximately 2,554 euros to 3,405 euros per month.

For a family, the remaining amount would most likely go mainly towards different expenses, while saving a minor amount. For individuals, the remaining amount can provide a good-quality life.

According to OpenCraft’s values, by recruiting a team of senior professionals, they can ensure quality. Thanks to the high quality results produced by its team, OpenCraft can charge, at this time, 180 euros per hour for its services.

OpenCraft, with the quality of its services, has a vision of contributing to education and different communities. In addition, OpenCraft has a vision of growing “in a way that provides a nice lifestyle (remote work, flexible hours, expertise and growth) for everyone on the team”.

OpenCraft cares a lot about its developers and sets them as one of their main priorities. Thanks to that mentality, OpenCraft has managed to increase the hourly rates for its services.

Due to this large amount of growth, the minimum hourly rate forms 13.8% of what OpenCraft charges for its services.

Having the minimum hourly rate be set with respect to what OpenCraft charges for its services would play a huge role in improving the quality of life for members making the minimum hourly rate and providing them with a nice lifestyle.

It’s usual for companies to charge much more, per hour; companies have different expenses which need to be accounted for. Two of the main expenses that need to be accounted for at OpenCraft are sustainability, internal work unrelated to client projects, and a rainy day fund, in case client work halts.

However, by doing some calculation, we can attempt to reach a different minimum hourly rate which would improve the members’ lifestyle and ensure that a large of the remaining amount goes towards OpenCraft’s expenses.

Yearly income for Software Engineers is different based on locations. Location is definitely not a fair criteria in specifying a members’ yearly income, as OpenCraft acknowledges in its handbook.

Accordingly, since OpenCraft is based in Berlin, Germany, I chose to compare the yearly income an OpenCraft member making the minimum hourly rate generates with the 25th percentile of salaries for Software Engineers located there.

This comparison is in hopes of providing OpenCraft members, making the minimum hourly rate, with the value of the 25th percentile of salaries for Software Engineers in Berlin, Germany.

According to levels.fyi, the 25th percentile makes 70,550 euros per year in Berlin, Germany.

OpenCraft members earning the minimum hourly rate, at the moment, make between 48% to 64% of what Software Engineers in Germany make. For an OpenCraft member to make 70,550 euros per year, while maintaining a healthy work-life balance by working the minimum full-time requirement of 30 hours per week, the OpenCraft member would have to make 52 euros per hour (70,550 / (227 * 6) ~= 52).

Accordingly, I’m hoping that OpenCraft would increase the minimum hourly rate to form 25% to 30% of what it charges for its services. At the moment, this would range between 45 to 54 euros per hour.

According to OpenCraft’s vision, they “aren’t focused on hyper-growth and profits, but try to grow in a way that provides a nice lifestyle (remote work, flexible hours, expertise and growth) for everyone on the team”.

Hence, I believe that having the minimum hourly rate be a percentage of what OpenCraft charges by the hour is something OpenCraft might possibly consider. In case OpenCraft chooses to move forward in such a direction, I trust that OpenCraft would choose the best percentage which would most benefit its developers while stunting its own growth.

Team-Wide Raises

In theory, team-wide raises are there to reward members for sticking with OpenCraft for a long time. Personally, I admire the intentions behind having team-wide raises.

Having team wide raises makes people more conscious about the whole team and its success, as well as theirs. Accordingly, it encourages a collaborative atmosphere, which aligns perfectly with OpenCraft’s different cell processes.

However, growing at OpenCraft, through team-wide raises, is extremely difficult, especially if members start with the minimum hourly rate.

In a perfect world, where team-wide raises, every year, are 10%, an OpenCraft member, earning the minimum hourly rate, needs 8 years to reach the 25th percentile of salaries in Germany, 70,550 euros per year.

This comparison is again being done in hopes of providing OpenCraft members, making the minimum hourly rate, with the value of the 25th percentile of salaries for Software Engineers in Berlin, Germany.

Instead of spending 8 years at OpenCraft, the very same engineer can, instead, transition, after 1 or 2 years at OpenCraft to a different company which pays the needed rates. After another year or two, the same engineer can apply back to OpenCraft at an even higher rate.

Therefore, In 2 to 4 years, the engineer can make more progress than they would’ve at OpenCraft even after staying with the company for 8 years.

Team-wide raises are much like earning interest rates at a bank. You will barely get anything out of it, unless you already have high hourly rates. Team wide raises are mainly effective for members who have an hourly rate of 50 euros or more. Only then would team-wide raises of 10%, which aren’t always the case, be significant for those members.

Therefore, for an OpenCraft member starting off at the minimum hourly rate, it becomes more efficient for them to leave OpenCraft for a couple of years, and re-apply the proper rates. Unfortunately, this highly contradicts with the team-wide raises’s intentions of “rewarding those who choose to stay in the team”.

This makes it less encouraging for members who start off with the minimum hourly rate to stick around for a while.

OpenCraft, for members who have good hourly rates, is a wonderful place to work and grow. However, for those making the current minimum hourly rate, that is not the case. After all, since there is no hierarchy in OpenCraft, the only senses of progression a person can have are learning and compensation.

Personally, I do want to continue at OpenCraft, even with the absence of hierarchy. I love the amount of open source work and community reach OpenCraft provides. However, I’m not satisfied with the current minimum hourly rate.

When I first joined OpenCraft, I set specified 15 euros an hour for the hourly rate. I was ecstatic when I was informed that the minimum hourly rate at OpenCraft is 25 euros an hour. I was receiving more than I ever needed, because I was a single person without any responsibilities.

Yet, life changes; it’s full with unexpected challenges. The amount I considered to be more than sufficient when I first joined OpenCraft is no longer sufficient now. The inflation at Lebanon almost nullified my father’s only income and froze all his savings, and I had to be responsible of providing for the whole family. This has been the case for the past many months. The situation resulted in my burn-out which in turn depleted my savings and resulted in an even worse burn-out.

Although I can seek other jobs in order to find the hourly rate that would be sufficient for my current situation, I do wish to continue working at OpenCraft for the reasons I mentioned before, and more… At the same time, it’s inconvenient for me to spend 8 to 10 years to reach an hourly rate which would be sufficient for my current situation; waiting that many years would feel more like a punishment than a reward. Waiting that many years in my current situation would delay my future because I’d be idle on survival mode for years.

The contract is “unlimited by time”. I know a lot of members, like myself, who love their jobs at OpenCraft. However, in the case of similar circumstances, when given the option of making twice as much, a member would be obliged to leave OpenCraft for a job they might not even want to be doing.

At the moment, there are no processes in place to help developers adjust to life situations, which are out of their control, without switching jobs.

However, if contracts were made to be binding only for a specific amount of time, preferably a single year, members would have the chance to either renew their contract, as is, or adjust their hourly rate without having to switch jobs.

OpenCraft, in its handbook, already gives a good idea regarding how negotiating hourly rates is not fair among members. To avoid negotiations, OpenCraft simply hires candidates with the rate they set, or reject them.

A similar approach can be taken when adjusting hourly rates on a contract with a single year life-span.

This would provide members with the chance to re-consider their hourly rate at OpenCraft, on a yearly basis without any justification. The member can either choose to re-price themselves or qualify for team-wide raises. OpenCraft can, then, choose to accept this request and adjust the hourly rate. But, if OpenCraft denies the request, the member would have to submit their one month notice.

By including this option, members would have the chance to adjust their stay at OpenCraft based on their life circumstances. This would help encourage members who love working at OpenCraft to continue doing so. Simultaneously, OpenCraft would ensure that members rely on team-wide raises, unless life circumstances dictate otherwise.

In addition, such an approach would align with OpenCraft’s value of empathy. It would also help highlight OpenCraft’s own commitment, another core value, towards its members.

Conclusion

OpenCraft, while holding onto its core values, does a wonderful job at discussing different topics related to its success and its developers’ success openly. Yet, OpenCraft considers its own processes to be “in-development”, encouraging different members to contribute their ideas to help reach a consensus among all.

Some topics are sensitive, while others are easier to discuss. Although there has been many attempts to discuss the sensitive topic of team compensation, some of the issues with the team compensation haven’t been openly discussed.

As an OpenCraft member, I have some friction with the minimum hourly rates and the team-wide raises which affect my future at OpenCraft. By discussing the friction I’ve had, openly, I’m hoping some refinement would be done to the process.

Having minimum hourly rates with respect to how much OpenCraft charges for its service and limited life-span contracts would help provide even more success for members within OpenCraft.

OpenCraft is a community and a team of wonderful members, and ensuring the future of these members within OpenCraft, regardless of their varying circumstances, would play a huge role at holding onto these members even longer.


Tickets to log time

9 Likes

@nizar thanks for writing this up! I just want to add my support to everything you said - I agree 100%, and your calculations line up with similar calculations I’ve done in the past. Although I wasn’t aware of the minimum hourly rate; this was previously not published.

I’m in a very similar situation, so you’re not alone.

On this point, I’m not sure it’s true. Members have access to sustainability metrics, but can’t see how that directly translates to how much the team wide raise will be. The teamwide raise isn’t even guaranteed - according to the handbook:

with annual raises often in the 5-10% range (though some years it can also be 0% when the results aren’t good).

So it’s quite possible to do excellent work for some years and not receive any raise. For example, if one joined in mid 2015, by mid 2017 they would have worked for 2 years and not received a raise (reference post)

5 Likes

@nizar This post couldn’t have come at a better time.
I often feel conflicted in starting up a discussion related to this because it always felt like a taboo.
Once in mattermost I’ve seen a public callout to a core team member that asked for a raise (during their yearly 121 - I have the link, but I’m not posting it here) linking to a forum post, and I didn’t want to go through that if I ended up asking for one. :frowning:

:+1: - totally agreed:
Back in the start of the year, when I was running a lot of epics and learning a lot, work-life balance sucked but learning was just too rewarding for me to care about anything else.

Now that we’re facing daunting times, stress is at an all-time high, and most of the work is not actually work (instead is metawork) I find myself asking if it’s really worth it: both as in the “amount of value I’m producing” (value as in useful things for the clients and community) and compensation (being paid to do metawork hourly - metawork means more stress - more stress lowers the amount of hours I’m working and consequently my pay).

I was thinking about this recently and it doesn’t really match up to the company values.
:+1: - I support the idea of allowing people to ask for a better rate after some time.

For me, this was my first actual remote job, and back then I didn’t know how to put a price on my hours. The minimal salary rate bumps were a pleasant surprise, but from now onwards the raises will be predictable and not on par with what I had in mind for career growth (I expected to be able to ask for raises and negotiate - even though I’m not really good with these things - I’d go for showing that I’m good at what I do and then ask for a raise based on it).

I’m in the same situation as well, sadly. :frowning_face:


@nizar Thanks for starting this discussion, I’m not sure I would have the courage to given the current stress situation.

5 Likes

Thanks for writing this up, @nizar . I had a feeling many of the team members were having an issue with this-- for a lot of team members this is their first fully remote contracting job and it’s difficult to price in things like off-time and other expenses when one is used to salary with benefits.

I’m not sure I follow this. Could you step through the renewal step by step, first from the perspective of the team member, then from the standpoint of OpenCraft? I want to make sure things like the fact that contracts would be renewing at different dates and how information about the raises being available to people at different times would work.

We definitely want OpenCraft to be charging significantly more than we’re billed out so that we can do our unbilled work-- automation, community contributions, loss on newcomers that don’t write good enough code that requires rewriting, and paying team members whose actions aren’t directly billable, and what have you, as well as meet company expenses like infrastructure, as you note, but we also want to make sure we each are getting an amount that works for us. So setting up the nature of this negotiation in such a way that it doesn’t throw things too far out of balance is going to be key.

Just for the sake of completeness, I’m going to mention a couple of other things that are worth reviewing (and verify this is still what we want):

  1. We’re not currently doing ‘salary plus benefits.’ It is more possible to do this now than ever-- several startups have come out that can structure benefits regimes for remote workers across international lines.
    • Most salary agreements consider you ‘fully employed’ which has consequences for things like personal projects. Since your compensation isn’t tied to hours, it’s arguable that any work you’re producing belongs to the company.
    • It ties benefits specifically to your employment, so that means many things you may want to continue even if you leave OpenCraft would suddenly be dropped (such as, say, medical benefits in the US)
    • If you want DIFFERENT benefits-- like, say, if you’d prefer to take fewer vacation days and more cash, or less cash and more days off, you don’t have that kind of flexibility.
    • Keeping it hourly does require more thoughtful negotiation and OpenCraft/Xavier will have more experience doing this than most (or all) individual developers. So one thing I’ve suggested is creating some kind of tool for helping applicants determine what their rate should be, like maybe a Google Sheet template where they can see several proposed line items and figure out their monthly expenses, how many days off they’d like, tax rates, etc, and then see what the output rate would likely be.
  2. For team members whose compensation isn’t directly tied to hourly billing (such as myself) we still bill to OpenCraft hourly.
    • This is good in that it brings predictability. OpenCraft and its meta-team members can know what they’re likely to pull in or pay out on any given month.
    • This is potentially bad if we look at alternative schemas like sales commissions. I could, in theory, make a whole lot more money if contract sales paid me a percentage of the final deal.
    • Switching to commission-based payment for someone like myself has the side effect of incentivizing me to sell when we don’t have capacity, or else leave if I can’t sell. Right now I’m given a pretty good rate and have incentive to help improve processes rather than try to keep selling when we have little room to sell. I don’t think I’d be paid at my current rate as ‘base pay’ if I were taking commissions, which would put me in a bad spot on times when sales can’t be made.
    • I really like working at OpenCraft. I like the people, and the philosophy, and the fact it’s truly fully remote. So these factors balance out for me what I could be getting on commissions, at least for the moment.
    • There may be other compensation regimes that work best for team members like Gabriel, who does administrative work. I’m not familiar with them, but they may have their own pros and cons.

Anyway, just wanted to review those items for the sake of completeness, and as food for thought.

2 Likes

Thanks for taking time to properly bring up this topic, @nizar. It’s true that we don’t often discuss compensation, it’s somewhat of a taboo discussion.

My two cents so far, from my personal experience and from discussions I’ve had with other team members over the years:

  • Annual raises should include people who joined “recently” i.e. < 1 year. It must be frustrating for someone who joined in February 2020 to not get the January 2021 raise, which means 23 months at the same rate. We could apply a raise % that is proportional to the number of months they’ve been with us? i.e. if the raise is 10% and the person has been with us for 6 months, they get 5% on the first year instead of 0%. Or even simpler: everybody gets the full raise, yay!
  • We make the assumption that applicants are experienced contractors (and know their market value), but they’re often not. The burden is on them to figure out what an appropriate rate is. Thankfully we’re more explicit about including benefits, vacation, etc. in our ads now, but many team members suffer from lowballing themselves in the beginning. I think people will always have a tendency to lowball themselves since we don’t communicate any numbers. @Fox’s idea of a tool to help applicants determine their rate could definitely help.
  • I think we should give newcomers the minimum rate, even during the trial. If they ask for less, when we draft the contract we set the minimum rate. The cost of doing this would be negligible, but we’re increasing the chances that the newcomer feels properly rewarded for their work.
  • I’ve once tried to negotiate a raise because I thought my “position” and responsibilities were much more involved than what I was doing initially. The answer was “no”, because it did not respect our current process. What I did is I started doing external consulting work at a higher rate, reduced my hours a little, and adjusted my responsibilities at OpenCraft. This in-between solution currently satisfies me, but I would agree that “career growth” as in “moving between positions” is non-existent at OpenCraft, at least compared to what we usually see elsewhere. But if this in the DNA of the company, you either fit in or you don’t I guess. Some people have been at OC for a long time!
  • Maybe we should hire an HR consultant about this? They can do an assessment and recommend some things, and we’re free to apply them or not.
3 Likes

Yeah, it is definitely difficult. As @gabriel mentioned though, things are more explicit now as well, but were not before.

Sure thing :+1:

Let’s say I’m an OpenCraft member who has joined on November 01, 2020. The initially set rate is no longer sufficient because my life circumstances have changed.

Today is September 27, 2021. Although I would like re-price myself so that my rate is sufficient with the current life circumstances, I’m not able to yet because my contract is still valid.

Based on the current sprints in Serenity, there’s a sprint that starts on November 19 and ends on November 1. During the sprint before that, starting on November 5 and ending on November 18, I’d have a ticket where I have two options (in case I don’t want to terminate my contract):

  • Extend my contract for another year
  • Update the rate on my contract

If I choose to extend my contract, as is, the current process of team-wide raises remains the same. At the end of the year, I receive a team-wide raise alongside the rest of the team.

Meanwhile, if I choose to update the rate on my contract, I notify OpenCraft of the new rate I desire.

OpenCraft, then, reviews the rate specified. Since OpenCraft is not a fan of negotiations, the rate specified does not need any justification.

OpenCraft, similarly to when accepting or rejecting new applicants based on whether their chosen rate is appropriate, can either accept the update rate or notify the member that the specified rate is not considered appropriate.

In order to prevent “brute-forcing” your rate, once OpenCraft rejects the newly requested rate, you’re required to terminate your contract (within the contract termination rules/process).

By following such a procedure, we can ensure that members rely on team-wide raises instead of “updating their pricing by 5 euros each year”.

However, members who need to re-price themselves, due to life circumstances or whatever other reason, would have the chance to, at the risk of losing their job if the requested rate is not within reason.

Having such a strict process ensures that OpenCraft’s preferred method, of team raises, is applied. However, the very existence of such a process provides additional freedom which did not exist before and is needed.

Of course, the unbilled work is a massive part of the different expenses OpenCraft has.

Yes, indeed. This is my intention behind having something very strict, yet its mere existence provides commitment towards members who would like to remain at OpenCraft and empathy towards their personal situations, which are two core values of OpenCraft’s.

I see a lot of value in the way things are, being paid by the hour. It provides a lot of flexibility! It’s one of the best things about OpenCraft.
I know a lot of members have trouble with it, but once it’s documented in a way to ensure the developer’s success with it, things will change.

What I’m asking for is that members, making the minimum hourly rate, working consistently for 227 days in a year, have the same potential as other software engineers.

Regarding how that potential isn’t met by the current hourly rate, I’m hoping that my breakdown of the minimum hourly rate can provide insight. If it doesn’t, I’m happy to share a real-life example.

When I first joined OpenCraft, the handbook had no mention of the team compensation and the costs I should account for when setting those hourly rates.

Although they have been added to ensure the future’s developer success with the process, I wasn’t given such an opportunity, to choose an hourly rate with that insight in mind.

Although what you suggested sounds awesome, if future enhancements are made to the process, there should be measures that help previous members utilize it as well.

It’s not fair to implement it only for “newcomers”, and not backport it to existing members.

My goal isn’t to get rich off of OpenCraft, and I’m sure yours isn’t either.

All I want is space to breathe. I have no interest in being an entrepreneur or having my own company. And I’m sure that the current situation in Lebanon will eventually end.
I don’t want to remain in “survival mode” until it does.

I don’t want to lose a great job because of bad timing or bad circumstances.

One of the reasons I’m suggesting the Developer Advocate role is to transition into a non cell role and have the opportunity to change things for the better. But, I also don’t want other members to suffer from what I went through.

I always look forward to your comments on everything I do.
And I really appreciate your thorough comment!

I really hope my tone is refined in this comment, but if it isn’t I just want to clarify that the frustration isn’t a result of your comment or this topic.

1 Like

OK. This makes sense to me and I think it’s a great idea. It resolves the biggest concern I had with the process in that it doesn’t make it cheap to renegotiate. It has risk, but risk which is clearly worth it if your life circumstances have changed (after all, your only alternatives in that case are to suffer compensation you can barely survive on or else find new work anyhow). That allows us to have the chance of keeping those members who might otherwise feel forced to leave without making it easy to game the system.

This is also my preference.

Agreed. I do think we should have the tool and we should also implement something like you suggest.

You might be aware that I have my own business alongside my work at OpenCraft-- if I’m getting rich from anywhere, I’d prefer it be there :P But no, my present goal with OpenCraft is to have consistent steady income while doing something I enjoy alongside my other ventures which currently do not pay me. So yeah, not trying to get rich here, but I do want to make sure the team is stable and people feel they’re getting paid fairly.

I think you’d be a great fit for this role and I’m excited to see what you do with it! This is already a great start.

:) Understood! And thank you.

2 Likes

Yeah! I wish it weren’t. I don’t feel like it’s a taboo personally; might be because I sometimes have no filter :see_no_evil:

This is a fairly difficult topic.

Although monthly raises would be awesome, especially if they would reward members who have been with OpenCraft for longer, even more. However, I’m not 100% sure how appropriate that would be for OpenCraft. I have some ideas for a middle-ground such as rewarding those who have been with OpenCraft from 6 to 12 months instead of a strict year.

However, I don’t think I can say much in that regards until I hear more about it from other members of the management team, because I have no counter-argument in mind to be able to assist in formulating a more detailed suggestion.

Yes, that’s insanely accurate.

Yes, that’s one of the main issues at the moment. The solutions being created to address issues aren’t being applied as well for previous members.

I agree, there’s a lot of benefit in it. However, we should ensure that members making the minimum hourly rate should also have the chance to utilize such a tool and adjust their rates accordingly.

I wanted to bring that up, but I thought of the advantages of not adjusting the minimum rate until being confirmed as a core member. It would provide OpenCraft with more newcomers on the long run.

However, if it really would be negligible, it would definitely be nice to have.

I would really love the opportunity to solely focus on my career at OpenCraft, not in hopes of always growing in regards of my hourly rate. I eventually expect myself to “plateau” and no longer increase; however, that isn’t the case with the current minimum hourly rate.

So, I’m hoping this discussion raises the importance of having the option to reach such a “plateau” without having to spend 8 to 10 years at OpenCraft to reach it.

That would be a nice idea. I do want to see how this conversation ends though, first.

Xavier mentioned in a previous forum thread that OpenCraft is like an open source repository where there’ll always be issues and changes to resolve them.

I feel like with healthy communication, we can achieve results without an HR consultant. I could’ve waited until I transition into the Developer Advocate role before bringing such a topic up. But, I have high hopes that the weak points with the current process would be acknowledged.

I don’t expect things to be resolved easily or quickly. But, with more of this healthy communication, I’m sure we can progress and reach solutions which would align with the members’ success and OpenCraft’s.

3 Likes

While I sympathise with many of the points outlined in this thread so far, I have a problem with this particular one:

  1. It provides for a worse-of-both-worlds outcome if both OpenCraft and the contractor actually wish the contract to continue.
  2. It’s too prescriptive. OpenCraft needs less rules, not more.
  3. There is no need for it. If you’re unhappy with your pay, you can always leave for a higher paying client (which should be easy right about now). Then, if later you want to come back, you’ll be able to renegotiate.

This is not to say that I agree with the current “rates are non-negotiable” stance. It’s also worse-of-both-worlds in a certain way, because in a competitive job market such as the current one, OpenCraft will inevitably end up losing good people (as it already has!).

How about we just lose both negotiation clauses and let the market decide? If you want a raise, just ask for it. Either you’ll get it or not. If you do, great! If you don’t, you need more money, and you’re good at what you do, you shouldn’t have too much trouble finding more money elsewhere.

2 Likes

I agree with all of those points. However, I want to try my best to keep the job I like and help others keep theirs, in case they are in a similar situation.

I can’t convince Xavier to remove the rule about negotiations altogether right now. I can’t go from 0 to 100 in a single forum post. I also can’t convince Xavier to allow renegotiating contracts once every year, or even more frequently, at the moment.

I understand the rules set to protect OpenCraft, even though they are too restricting. Agreeing with the existing rules is a whole different topic, but I do understand his point of view.

What I can do is make small motions towards the right direction.

This time, I’m trying to find a way to enable developers to have the freedom of repricing themselves without leaving the team, with the risk of leaving.

With determination and communication, we can achieve better results. However, it’s a process. It’s going to take some time, but the current changes would help deliver results and make progress.

If we were to try to discuss changing the whole process, the discussion itself and then changing things would take too much time.

I hope this provides a better idea as to why I suggested such an idea, despite its restrictions.

We don’t do ongoing market negotiations because they necessarily mean that we will be in some degree of competition with each other on rates. The current ‘non-negotiation’ method means we’re effectively never in competition with each other on compensation-- there is not a scenario where raising one of us means preventing the raising of another, or where Xavier (or OpenCraft, if we decide to do some committee-based compensation thing) has to say ‘yes’ to one of us and ‘no’ to another. I went over this in a good bit of detail here.

I would not recommend changing the ‘across-the-board’ raises at OpenCraft, or falling back to individual negotiations. @nizar 's suggestion is something I’d like to try-- allowing for a team member to renegotiate higher at the end of their yearly contract, while retaining the same straightforward ‘no-negotiation’ rules as before.

On reflection, there’d still be (in my opinion) a pretty obvious saavy solution you could have if you were in this situation, deciding to renegotiate. You’d just ask other team members what they’re getting. If they’re game to tell you (which they may not be, but, hey, they might-- and you’d only need the answer of one person rated higher than you to know you can go ‘at least that high’ minus any percentage raises they may have had) you might be able to infer what their rate is and try to get one that’s in line with them. If enough people were game for this, you might have a situation where everyone ends up with the same (or near same) rate anyway, at the higher end of OpenCraft’s bound. I’m not sure how you fix that.

@nizar It may be that there are resources online talking about alternative compensation structures worth exploring. I’d especially look for methods used by organizations which attempt to stay flat. There may be some ideas worth exploring that we haven’t looked at yet.

2 Likes

I agree with @adolfo, this part makes me uncomfortable:

While I understand the reasoning behind the suggestion, it feels like a bit of an overkill. I don’t know about others, but it would make me feel like unless I’m facing a life-changing financial situation, I shouldn’t bring up negotiating my rate even if I’m not happy with the team-wide raise, because that would mean losing my job. No matter how good we are at what we do, the idea of losing your job is always going to be stressful.

We may not have an option to re-negotiate our rates at present, but bringing it up definitely doesn’t feel threatening now!

Putting in “strict processes” shows a mistrust in individuals and that’s quite opposite to OpenCraft’s values. I also personally feel secure knowing that my contract is “unlimited by time” - it brings a certain level of assurance to me, at par with being a “full-time employee” in any other company, and that wouldn’t exist if it were limited to one-year period.

I’m not against people re-negotiating their rates, I just don’t think it needs to be so rigid (current company stance included). Alternatively, we can have a yearly check-in with everyone about it. This could happen just after team-raises are announced and could even be automated. Everyone could have a choice - either continue with the revised rate, or explain why they’re unhappy with their rates and what would be their preferred rate. The final decision to accept or deny such requests would remain with OpenCraft.

+1 for this :+1: .This definitely would have helped me when I joined.

2 Likes

Hmmm. When you frame it this way, I feel less confident about the approach suggested.

What if, instead:

  1. We kept contracts ‘unlimited by time’
  2. We built the rate tool
  3. We gave current core members a one-time opportunity to readjust their current rate with the tool
  4. We make sure newcomers get the tool as part of their interview process
  5. We maybe keep the current policy of no renegotiation for now. While it would mean that sometimes someone might be more incentivized to leave and come back later, it should be much more rare now that everyone has access to that tooling.
3 Likes

I’m sure there is @Fox, but I currently don’t have enough time in my sprint to do such readings.

My intention with targeting this topic the way I did isn’t to change the process, but to ensure the developer’s success in the light of the current process.

I have plans to later on discuss the whole process, but until I can read about other processes used by similar companies, I would prefer not to start this topic just yet.

I understand that a lot of people don’t agree with my suggestion because they think the whole process should be refined, not just small points about it.
But I hope they can notice that I’m trying to make a change that can be applied, as soon as possible, which the team can benefit from. Once this “patch” has been added, our breath would be prolonged and we would be able to explore a solution which would require more patience.

I understand that, and it makes me uncomfortable in some situations as well.

In most cases, though, especially after contributing significantly to OpenCraft, updated rates are most likely to be accepted. The more time you spend at OpenCraft, the less likely OpenCraft will choose to let you go over a disagreement in hourly rates, given that they are reasonable.

This rule is not set to make members afraid of choosing their rates. I understand it does, though; I’m not trying to invalidate how others feel about it.

It’s set to convince management that we’re still considering their benefit alongside the members’, and not the members’ benefit alone.

For these reasons, it’s more of a formality.

You can’t even bring it up, right now, though. My intention is not to make it threatening. But I can’t expect management to change their whole processes at once. Change is often two steps forward and one step back.

I understand that, but to move from “no existing process”, which protects OpenCraft, to a new process, we need to find a middle ground between what we want and what OpenCraft already has implemented.

The middle ground I reached was a “strict process”.

Later on, such a “strict process” would be what’s available at OpenCraft, and then the middle ground would be a more flexible process.

I understand that a “strict process” is not a solution, and it isn’t. It’s just a patch, while we build a better solution.

One of the main reasons team-wide raises is discussed in the handbook is so people don’t increment their rates by 5 every year. This is the counter-argument for such an argument.

I can see the advantages of that counter-argument, from OpenCraft’s perspective. So for now, I chose not to bring such a suggestion up in my post because I don’t have a good-enough refutation for it.

But hopefully, with enough time, someone on the team can build a good one.

I’ll be honest, this is something that I did not account for. My bad!

You’re 100% right, having an “unlimited by time” contract is beneficial for the whole team.
You’re right, contracts should remain unlimited by time.

I shouldn’t have mixed up needing to update hourly rates with the lifespan of the contracts.

Yes, that definitely needs to remain the same.

Ideally, members should have the opportunity to do so on a periodic basis.
People in other companies aim to utilize hierarchy to improve certain circumstances.

Since OpenCraft is flat, it would be nice to have the option to update the pricing without leaving OpenCraft.


As a member, I want to have the ability to update my hourly rate on periodic basis, preferably on a year, which OpenCraft can approve or decline. I also want don’t want to risk terminating my contract after a single denied “request”.

But as OpenCraft, I don’t really want members to “binary-search” their way into an appropriate hourly rate…

What do you think about having the contract terminated after 2 consecutive years of denied requests, given that the requests are done on a yearly basis?

Would that be more reasonable for members and OpenCraft? Would it also help prevent “binary-searching” your way to an appropriate hourly rate?

That way members who got their request denied year 202X can choose to update their rate in the year (202X + 2) without risking losing their job.

Let me know please…

1 Like

This pretty much summarizes what I think we should do. Obviously, one of the central issues in this thread is that multiple team members have lowballed themselves and are now unhappy with how much they’re getting paid (and my guess is that those people are paid either at the minimum rate or close to it). We could give core members a one-time opportunity to readjust their rate as @Fox suggested, but we could also raise the minimum rate significantly as @nizar suggested (which avoids individual negotiation, and newcomers would get the raise too → otherwise the same problem might happen again in a year). I doubt we can afford the numbers suggested by @nizar, but I’m in favor of raising the minimum rate, team-wide.

I’m personally ok with raising the minimum rate significantly (+€10 or +€15) even if this will affect our raise next year. I’d rather get a smaller raise and see my teammates happy :slight_smile:

4 Likes

Another issue is that members may have set a rate that was appropriate at the time, but due to changed circumstances they may wish to renegotiate. I’m sure opencraft agrees that renegotiation is better than losing team members simply because they wanted a raise.

Personally, I’m absolutely against the “no renegotiation” policy. In fact the whole combination of:

  • not publishing any numbers (averages, rate ranges, minimums, maximums).
  • the comments on the application form: rates will not be negotiated, a rate above the unpublished maximum will cause the application to be thrown out
  • no re-negotiations ever officially allowed
  • flat structure with no chance of promotions or recognition of senior vs junior

All of these are an incentive to put a low number in the hourly rate for the application, because a lower paying job is better than no job at all. And then you still have no idea - after working at opencraft for 2 years, I still have no idea where my rate sits in the acceptable range, or if opencraft is fairly paying everyone. I don’t know if the average is right at the minimum, or if some high flying silicon valley style rate.

I feel like the only situation where the current process would work fairly, is if you where experienced and knew exactly what rate you wanted (and knew how to factor in holidays, sick days, taxes, etc.), and were certain that the rate you wanted was within the hard maximum set by opencraft.

Most other jobs I’ve applied for or viewed in the past will publish an expected salary/rate range, and allow for some kind of discussion at the beginning of the process to get a feel from each other on what kind of rates will be expected.

4 Likes

I was one of the people who raised this issue with Xavier in the beginning, and it was part of the reason for having a minimum rate, it seems.

I don’t think my concern was that the rate I picked was too low. I was happy with the rate to start with, even after factoring in taxes and vacations. What I didn’t realise then though was that the rate I picked would form the basis of the rest of the raises here.

In my first job, I started as an intern, and my salary doubled when I was confirmed as an employee, and then my first raise was 50%, and I got a pretty good bonus as well. I still ended with a salary far below my starting salary here, though.

While I was happy with where I started, I did expect that over time there would be significant bumps in salary in the 20-30% range. When I learned that that wasn’t the case, I realised that over time my salary at OpenCraft would no longer be competitive, and I would either need to be happy with a lower salary or move on.

While I was usually happy with my salary, when I had to visit Montreal for the conference, it put a strain on my finances. It made me realise that while the country-hopping kind of life was a benefit of this kind of job, it just wouldn’t be affordable for me. Given the no-negotiation stance here, I wondered how OpenCraft would handle employees moving across countries.

I definitely think that if OpenCraft has to maintain a non-negotiable-once-set hourly rate, people need to be given more tools to understand not only their current needs, but also how their needs will evolve over time. Some people will join OpenCraft early in their life, single, with fewer needs and responsibilities, but their needs will eventually grow. They might join with a poor understanding of what they should be paid, or how working at OpenCraft will add additional challenges to their finances.

I saw mention of an assumed 10% tax rate. My marginal tax rate is 30%. Given my country’s complex tax laws, for my work at OpenCraft I have to file monthly tax returns, another set of quarterly tax returns, and an annual tax return, in addition to a yearly personal income tax return. There is also other monthly and yearly paperwork I need to file. This adds a personal level of meta-work for me. I had to hire an accountant, and a bookkeeper to meet these legal compliances. They are also not cheap. I would also like to save more for the future, for emergencies and for retirement.

If I knew all this to begin with, would I have picked the same starting rate I did? Definitely not! That said, I would still not have picked something very high or even in the range of rates being discussed here as the new minimum. The truth is, I don’t know what I would, or should, have picked.

To me, that is always the conundrum. If I get more money, it will obviously not make me unhappy, even if I am happy with what I get right now. I have said before that I am not bothered if someone else makes more money than me, even if they are from the same country. All I want is for the salary to meet my needs.

However, reading through here had made me realise that even understanding your needs is not as easy as it appears. When a rate is fixed across time, your needs aren’t just your needs for now, but also your needs for 5 years from now, and needs you can’t anticipate, and needs that aren’t needs yet.

I really don’t know what the solution is here, but I see a lot of good discussion going on here, so that’s a start at least. I hope we can find a solution that doesn’t make anyone feel devalued.

3 Likes

I agree that as a contractor or service provider, in theory you should be able to renegotiate your rates as needed. We actually do this with clients: we’ve increased our prices by 10% in January 2020 (after staying at the same rate for 2-3 years), and another 5-10% in January 2021 (+10% on our hourly rate for new business, but only +5% for current clients).

OC’s yearly price increases are therefore in the range of 5-10%, which is the same % that OC allocates on raises on most years.

If team members renegociate and ask for more than that, they’re eating directly into the company’s profit margin. If only a few team members do it, it would probably be fine. But this can hardly scale IMO, unless we take it into account when doing forecasting. Which brings to me the following reflection:

For the question of renegotiation, the tricky part for me (with my admin hat) is the uncertainty that it brings:

  • Financial (what are raises going to be this year, next year?)
    This complicates financial forecasting for the company. Not knowing what your payroll is going to look like into the year means you probably have to do wild assumptions in your forecasting. I don’t think it’s a question of “can we afford it”, but rather “how is this going to work”. Companies don’t like uncertainty, and this is why most of them have positions with known salary ranges which provide a lot of predictability.

  • Resources
    If the outcome of negotiations is that either the new rate is set or the team member ends their contract, then we create what I think is a severe resource planning issue (how many team members are going to leave this year?).

I think this is indeed the assumption made by the company, minus the max rate part. And this is why I think @Fox 's idea of providing a calculator would help a lot.

The threat of throwing out the application because of a high rate indeed pushes the candidate to lowball themselves. I personally think we should change this, and make a counter offer. Either the candidate accepts it, or doesn’t take the job. Over time, I think the result would be higher rates overall, but it would (hopefully) resolve the issue of people not being happy with their rate.

For similar reasons, I learned the hard way that I should have asked for a higher rate when I was hired. But I have to admit that the three raises I’ve had since then have helped a lot. In Quebec I pay ~52% in income tax, and also need an accountant to handle tax returns, etc.

Same here :slight_smile:

2 Likes

How is this different from hiring new members? You don’t know in advance how much they’ll ask for. If they’re at the top of the rate range, they’ll eat more into the margin. If they’re towards the bottom, they’ll eat less.

Which brings me to…

How is allowing renegotiations within a certain range any wilder than hiring new members? As a matter of fact, disallowing renegotiations can only increase the number of members that leave, which in turn increases the number of newcomers.

Which only compounds the following issue you bring up:

In other words, my point is that if you allow renegotiations, you are actually reducing churn. Sure, a current member’s rate will only ever increase, where a newcomer may instead ask for a lower one than the one of the member he’s replacing. But surely a proven member is much more valuable to the company than an unknown quantity?

I mean… if somebody asks for a raise, the obvious question is “are they worth it?”. If they are, the whole discussion is moot: just pay them. If they aren’t… the answer is also pretty obvious. :slight_smile:

4 Likes

Yeap! That’s my main issues with a “one-time” suggestion…

Usually, most members, when choosing their hourly rate, consider their current living expenses. I’m pretty sure a large number of software engineers here aren’t pricing themselves in comparison to the market, but in comparison to their expenses.

We need the option to renegotiate or close-to-market minimum hourly rates.

Having the option to renegotiate, in the midst of OpenCraft and its members values, could potentially be cheaper than providing close-to-market minimum hourly rates.
The reason behind that is, members are not out here asking for renegotiation because they are comparing themselves to their peers. They are doing so, because of their living circumstances.

I agree with a lot of what you mentioned.

I don’t mind the flat structure. However, that’s a personal preference, and I understand the validity of your perspective.

I hope I can help make progress in the right direction though.

Yeah, that’s 100% accurate. To address that, I’ve been relying on Glassdoor to have a good idea regarding the possible ranges.

It’s not enough, I hope more members contribute to it so others have a better chance at choosing their rates. But it’s better than nothing.

Having nothing is misleading.

If you think about it, minimum hourly rates are actually a solution for a problem created by OpenCraft due to not disclosing the ranges possible.

I wanted to mention that, but I realized that OpenCraft and members might benefit from being able to employ cheap newcomers.

However, once a person is approved as a core member, the range of hourly rates possible should be available for that member and they should have the right to update their rate based on that range.

Thanks for putting that nicely. This is 100% accurate and, unfortunately, there are no methods to facilitate this.

When I last discussed “renegotiation” with @antoviaque, I was told that “I should have priced myself based on what I saw fit, and that when OpenCraft wants to work with a client, they can’t ask the client about the budget range or reprice themselves. OpenCraft would have to charge the client a specific price and stick with it”.

But based on what you’re mentioning and since @antoviaque compared members to OpenCraft dealing with its clients during our last discussion about this topic, it should be fair for members to increase their own prices as well.

I’ll give an example of the OVH fire. When the OVH fire happened and we had to move our services to different regions.

I had no idea during that time about certain parts of our infrastructure; I was learning as I go. I spent HOURS (large amount) redeploying things. Please keep in mind that @guruprasad and @giovannicimolin were helping me out on mattermost, synchronously.

Someone as skilled as @guruprasad or @giovannicimolin with OpenCraft’s infrastructure could have finished this work in less hours than what it took me.

Even if each of them made 3x as much as I do, I’m pretty sure I would’ve costed OpenCraft just as much, or even more, as what it would have costed for them to resolve that issue.

If I didn’t have them to help, synchronously, I would have spent even more time on the issues I faced…

I hope this shows that contract renegotiation isn’t just being proposed for the benefit of developers but OpenCraft as well.

1 Like