Philosophies for Software Engineers
softwareengineeringdaily.com
softwareengineeringdaily.com
I met a guy a few weeks ago who'd moved over from California. He wanted to learn how to code, and told me his story. He was a business sort who went into business with a software developer. The dev did good work, and the business guy managed to get it funded. Just when things started picking up, the dev decided he wasn't getting enough of the pie and bailed, destroying the entire enterprise. He wanted to learn how to code so that this wouldn't happen to him again.
So I'm giving him an hour or so a week to show him how web development works so that he can code a prototype himself. Then he can get funded and hire employees rather than deal with the emotional vagaries of software developers. I don't blame him at all.
Business guys are typically going to make more money than the coders are, it's pointless to fight this. The better route is to go into business yourself and capture the value yourself. The reason is that the business side is the human side, and humans are harder to deal with, ultimately, than computers are. Also, humans have money and computers do not.
It was worth it for the business guy to give up a bigger piece of the pie in order to ensure that the business survives. That he is unable to see that, is either because he is unreasonably greedy or short sighted. Now he is delayed for X months or years because he let his greed get the better of him.
Once a business is well into money making machine territory, the impact that a single good engineer is going to make is dramatically reduced. At that point, the leverage is much lower and the business person can make decisions like you described.
This story probably has two sides.
I cannot imagine this to be true. Take for example the Paxos algorithm. There are few people who can fully understand it. Yet you are saying that some businessperson is doing work that is more difficult than dealing with the intricacies of distributed computing?
The only reason the businessperson is making more money is because he has maneuvered himself into a better position.
Coincidentally, I just went through the Paxos and Raft algorithms last week. Yes, they are complicated but a lot of the complexity is the proof that covers every possible edge case for conflicts and failures. I'm also currently working on populating a multi-threaded Merkle hash tree and the complexity is hitting the limits of what my brain can manage. Nevertheless, I'll eventually make it all work.
Humans, on the other hand are much more difficult. When I was fresh out of school, I definitely thought of the business guys as "the useless suits" and the programmers as the real value-added employees. But since I've tried running my own business and not made much money at it, I've come to appreciate that a few business people out there really have talent for juggling the incentives and motivations of team members.
Whereas moving computer code around in Paxos and multi-threaded hash trees will have an eventual solution, dealing with humans to solve a business problem seems like the social version of trying to prove P=NP.
Now imagine that you didn't have to do that programming. You would have 100% of your time to make business decisions, talk to people, etcetera. Suddenly, what the businessperson does is not so hugely impressive anymore. Or at least, that is how I look at it.
Were you just as successful as your archetype businessperson?
If you haven't then how you look at it is just a construction of your imagination created to fellate your own ego.
So, to return to the original argument: should I simply accept that business-people make more money than I do? ...
>Suddenly, what the businessperson does is not so hugely impressive anymore.
I took a 10 year hiatus from programming and spent 100% brainpower on the business. At the time, I thought I had progressed into being a "businessman" and stopped programming (like Bill Gates).
With that experience, I'd emphasize again that executing business activities such as interfacing with clients, managing employees, and reading the signs of a fickle market to prioritize what software to build and make money is harder than any computing algorithm I have ever worked on including Paxos.
I suspect you're elevating software programming above business tasks because of caricatures like Dilbert PHB (Pointy Hair Bosses) and shows like The Office. Well those stereotypes are true because most "businesspeople" are clueless idiots. But that's just Sturgeon's Law[1] at work: the majority of every profession (programmers included) is less than mediocre.
Creating a business and running it such that it doesn't devolve into bankruptcy is as every bit as creative and as difficult as computer programming. With software engineering, you deal with bits and bytes and defined tradeoffs (this network as X latency, that disk array as Y response time, etc). Yeah, juggling all that is complicated but at least it's mostly deterministic. You add 5 to an integer and you don't worry if a stray cosmic ray is going to randomly flip a bunch of bits around such that the integer now says 48390. The cpu doesn't conspire against you to debug the code.
On the contrary, the following business factors are non-deterministic:
-- humans, such as a fickle marketplace and customers that you can't the minds of
-- humans, such as employees with their own needs & wants that don't necessarily align with the business. Hiring good people is hard, etc
Each human is a like a bundle of bytes in a RAM that have their bits being randomly flipped by cosmic rays. There is no deterministic wetware "debugger" to run on a bunch of people so that everyone works together to make the business successful.
Running a business is as hard (or harder) than computer programming. So is managing a hedge fund to return +10% instead of losing investors' principal. Those activities are "hard" in a different way from algorithms. I don't see why programming is elevated above them as being harder.
>should I simply accept that business-people make more money than I do? No
I'm trying another business venture and I'd be perfectly fine with stepping back to just being a CTO and hiring a CEO that has a higher salary than me. The higher salary is what it will take to attract somebody competent. (Of course, I'd have more equity but that part is worth $0 if I'm the CEO.)
Do not hire CEO. Instead find a co-founder that would work as CEO for equity.
You are unlikely to make a good CEO hire, because you do not have enough expertise and CEO motivation in case of high salary would be misaligned.
It can't tell you how many times I've talked to potential co-founders who were a pair of frat boy types who had business school degrees. They pitch their idea as if it were a company, but all they have are some powerpoint and a few phone calls under their belt. They wanted to be CEO and "VP Sales" and would be happy to let me be CTO, they just want the to build the product and engineering team and for that-- because they liked me so much-- they'd let me have %5 of the company! (Vesting of course, one year cliff.)
They don't understand when I laugh at them... and I think its because there are too many suckers out there and they soon find one.
Granted, it's easier to be a useless biz guy than it is to be a useless developer since there's no litmus test for the former, but it's absolutely true that both exist. Your goal is to steer far clear of them.
In my experience this is frequently an unstated source of contention and unaligned expectations between engineering and business sides of the organization and one that is very useful (and liberating!) to get aligned on from the outset of a venture. And frequently, compensation structure is a useful part of that alignment: if you will also benefit from the time to market, that tradeoff feels less like someone asking you to make more work for yourself or others down the road (in the form of ops or rewriting)
Obviously both a business person and an engineer will have value in a venture. There's nothing wrong with both types negotiating and asking for their fair share.
"a pair of frat boy types who had business school degrees."
"They pitch their idea as if it were a company, but all they have are some powerpoint and a few phone calls under their belt."
"They don't understand when I laugh at them..."
I do not want to disregard anyone's skills, technical of business. Even if the GP is right that those guys where frat boys, they probably had valuable connections to bring into the table. But it is not fair that biz types hide behing the "salary" argument to shortchange engineers.
They are not just bringing early employees, they were looking for their CTO, for goodness sake! I am ok with not offering an "equal partners" deal, but it has to be partners. IF they are so wonderful business types, they why they do not get a Series A round without a product and then hire an employee CTO with a matching salary?
I will answer you why, and it is the same reason why engineers should not demand millionaire salaries. It is because your contribution's worth zero if it is not leveraged by the contribution of the other partner.
"Hrm, great, but what have you been smoking. Your business idea sounds like something a 5 year old drew in Crayola after watching an episode of shark tank. Your equity won't buy you a roll of single-ply toilet paper if you had a coupon. You're starting a startup, which is the most blunt force trauma way of getting paid market rate, and your (business) degree...well, it's worth less than your equity . That network you built whilst doing case studies on Apple is going to help you as much as a lifeboat in the Sahara. Only thing you have is a bit of hustle, and there's people running fruit-stands in shenzhen that have more of it than you. Sit down, shut up and do things, and maybe in 5 years you'll make a decent founder."
I mean you'd hope that it'd stick, but it doesn't. Nothing more infuriating than people talking the talk whilst you're walking the walk. My reading list is longer than your business plan, so fermez la porte and do stuff instead of distracting me whilst I'm trying to work.
It's really weird. /rant
I'm aware that it might be angry and off-topic, but I thought some parts fit the "straight outta b1zn3zsk00l" people.
Why infurating? Are you expecting them to appreciate you for how awesome you are? It's almost never going to happen, even if you are truly awesome - that's just how people are.
The solution is to not have business conversation with people you consider clueless about business. Talk to them about football or whatever if you like them and want to maintain a friendship, or simply don't talk to them at all.
But I do think that people like that are harmful, and that they need a good blunt reality check.
Also, that Business Insider article is an inadvertent IQ test for people who want to regurgitate their figures. That $1.8 million number is revenue/#employees and not profit/#employees. Using profit calculation of $53B/98k is ~$500k. Since, a fully-loaded FTE in Silicon Valley is ~$250k, the ~$500k doesn't look that insane.
If a writer copy&pastes stuff like that into their own essay without critical thought, don't be surprised if it taints the rest of his essay. For example, the "you are not a commodity" is not fully reasoned out. In the essay, it's just an empty platitude/affirmation instead of explaining why some programmers are treated as commodities and how to differentiate themselves to avoid that categorization.
I don't know the source of Curtis's data.
$500k of profit generated per employee sounds excellent, but it's also omitting other capital costs made by the business. Essentially, none of these benchmarks can give you the complete picture.
Now he thinks he's going to learn to be a developer and then not need any developers. Good luck with that.
By the way "getting it funded" is not success. Making it profitable is success.
PS- the word "coders" is like the n word. Use it and we know you don't respect us.
Still missin' my /home/boy, they got him up in Redmond after an IPO gone bad, heard he's vestin' for another 3 years up in there.
>rather than deal with the emotional vagaries of software developers.
Negotiating compensation you're comfortable with isn't an "emotional vagary". Sounds like the programmer was working for a measly amount equity in something that will most likely be worth nothing in a couple of years.
I've been in this situation before, and bailed before any real work got done. That's when you need to realize these things, not after you get funding.
As an aside, you seem awfully defensive of the businessman despite not having the full story.
This story is meaningless without some numbers attached. The developer was obviously a crucial part of the company - did he own 50% or 0.1%?
If the developer executing the idea was paid a low sum in exchange for low equity (say, 75K + 0.1%) and market analysis revealed a much smaller market than anticipated, the developer may have rationally understood the situation to be exploitative.
In such a case, the numbers might reveal that higher equity (say, 75K + 20%) might make the situation would not only be equitable but potentially profitable.
You're right to say that the developer breached the contract, sure.
However, having numbers might contextualize that breach of contract so that it could be read as a poorly-considered evasion of responsibility or a rational decision to leave a financially abusive and career-limiting contract.
EDIT: Readability. Add conjunctive adverb to last paragraph.
>deal with the emotional vagaries of software developers
This is a human trait, not a software developer trait:
https://www.psychologicalscience.org/index.php/news/releases...
He would do better to learn to temper his greed rather than to learn programming.
The dev apparently fought this and won ;-)
> ... humans are harder to deal with, ultimately, than computers are.
Especially devs are ;-)
Such is business.
So he burned a bridge.
Negotiating a better deal is pointless? What? I thought you were in favor of business.
> The reason is that the business side is the human side, and humans are harder to deal with, ultimately, than computers are.
I will not get into an argument about whether humans are harder or easier to deal with. I also will not get into an argument about whether software development is fraught with the same types of issues with dealing with people.
Instead I will just point out that pay is not directly related to the difficulty of the work. It is a function of the value derived from the work, the availability of labor, the negotiating skill of the various parties involved, and many other factors (all to varying degrees).
I agree with everything else that you said, especially the part about $$$/employee figures and their misleading nature. In general whenever you see $/(some arbitrary unit) in the financial press, be wary. It is sometimes a useful way to look at things, but it is incredibly easy to manipulate so that it ends up being a completely useless figure. I see it happen all the time, and these are often the most quotable lines as well (sadly).
sounds like the 'business guy' wasn't so good at business. if you choose a partner and he bails, that's your problem. one of the key tenets of business is keeping people properly incentivized, and he clearly failed at that.
and that software guy was also a business guy, by definition. sounds like he did some intense businessing and got the hell out of that business after realizing he was making a terrible business decision.
part of being a 'business' person is dealing with reality as it exists, not making up narratives that suit your ego.
I also got a few stories. Maybe a bit of a rant but bear with me ;)
I have the technical know-how and the idea and I bring in a business person to help try and make a business from it. Before I know it the business person is putting me in a position where I lose control over the product and the business and essentially have to work for free on faith and lose all my intellectual property. I quit, sooner rather than later. Just to be clear very little effort was invested at this point and I was clear about my expectations from the beginning.
I go work for a startup and take stock options as part of my compensation. The company IPOs. All business types including fairly recent hires make a ton of money. Most technical types made almost nothing. The shares keep declining, the company gets bought out, more money for business types. End of story? I did get an OK salary as well but I invested a lot of heart in this so it left me with a bad taste.
What's at the core of this? No one is looking for win-win situations. We have too much competition and too little cooperation. When you have a CEO who is solely motivated by how much money he is going to make this is bad for employees, shareholders, the company and everyone else. Just because the way this CEO will make money is making the company look good doesn't mean he actually cares about anything beyond how it looks. Not all companies are like that but too many are. What we have is lose-lose, companies and shareholders lose from high churn, lack of loyalty, lack of motivation, lack of investment, bad CEOs. Employees for the most part lose as well. Tragedy of the commons. Specifically with Apple they're hoarding cash, not investing it, not paying it out to employees or shareholders. They're buying back their shares at inflated prices. How is that something that benefits the company or anyone else? They're sucking money out of the economy. I'm sure there are worse examples...
Then, an employee decides to do what's best for him or her in a way that negatively impacts the founding business person or investor. This is seen as unethical: such employees, upon some agreement or context, cannot possess the ability to make other choices that damage founder or VC goals. They don't possess the trait that founders and investors wield with nary a thought over employees like we're starting to see with more layoffs. The employees are, instead of rationally selfish, being Evil and called out for it.
A double standard that serves captains of industry and startup founders very well at everyone else's expense. In reality, capitalism says that everyone, including employees, should act in their own self interest externalizing all costs of such actions. So, per capitalism, the founder did the right thing by trying to screw the employee out of lots of net worth and the employee did the right thing screwing the founder by taking another path. Naturally, being utilitarian, I oppose such capitalism in favor of stakeholder-focused models with rules reducing opportunities for each party to screw the other. The market goes the other way, though, so everyone continues to help or screw everyone to heart's content.
And I get to read nonsense like this where people cry "But that's not right and fair!" while simultaneously...
"Business guys are typically going to make more money than the coders are, it's pointless to fight this. The better route is to go into business yourself and capture the value yourself. "
...supporting amoral, selfish practices of capitalists on founder or VC side. It's just also what the developers were following: do whatever provides most perceived value for themselves. It is really good advice, though. Keep preaching it while system works as it does given that's where money is at. It's just that making an exception for one party but not others seems unfair and irrational. Thanks for the entertainment though. :)
I've been a programmer my entire career, and so my interests align with this ideology, but quite frankly it is offensive to call junior software dev work an "intellectual strip mine", and to assume a priori that your salary will return 10-20x multiples in value to the company.
The reality is that it is highly non-trivial to derive economic value from programming. You have to be able to sell something in significant volumes. That is the value the company is bringing to the software engineer. How much value any particular employee brings to the organization is impossible to calculate. Certainly the engineers will bring efficiencies that are impossible to get any other way, and perhaps they enable the entire business. But you can say the same about the sales people, the biz people, the product people; even the much-maligned marketing people may be essential to keep the revenue flowing.
There's a huge bias in any industry to overvalue your own work over that of other disciplines, simply because by definition you know more about it than what those other departments do. There's something I find really off-putting about a lot of abstract whining about how underpaid developers are. Sure, some are underpaid, also some are overpaid NNPPs, but as a whole we are doing way better than the vast majority of careers in the world right now.
All this is not by way of saying you should be satisfied with what you're given, but rather that you should pull your head out of the sand and recognize how the world works: you don't get paid what you deserve, you get paid what you negotiate. And negotiation is a skill you have to learn. If you don't want to learn anything about business and you just want to write code, then you should expect to be taken advantage of. If you want to capture more value you create, the first step is defining that value, and you can't do that unless you understand the business. From there you can have honest conversations with your employer on more equal footing, and decide to either stay or leave. This business knowledge will also enable you to start your own company with a much greater chance of success than the majority of startups with purely technical founders who start with a build-it-and-they-will-come mentality.
While there are some differences in culture the basic model is not much different then any other industry that relies on skilled labour or engineers to produce a product.
Small startups can do things differently but once you become a 'platform' with millions of dollars changing hands investors and public stock there is an entirely different set of logistical and legal components that have to be taken care of.
In any case though, you seem to be putting some words in my mouth since I never said anything about Uber's valuation of its engineering. My point was much more universal than that and had absolutely nothing to do with the corporate world or anything else. Employers pay their employees what they feel they have to. Uber pays them more because they need the best and the market is very competitive, but there is absolutely no link to the bottom line.
Most probably. My advice is just that it is a bad idea for a software engineer to work in an environment where technology is clearly not the primary driver of value.
> Uber pays them more because they need the best and the market is very competitive, but there is absolutely no link to the bottom line.
Without internet platform, there would be no Uber at all.
It would be like saying: "Their warships are not the essence of the Navy. The Navy wants the best ships, but there is absolutely no link to winning naval battles."
No, it wouldn't be like saying that at all. We are talking about the link between profits and salaries, not assets and objectives. If you can't understand that there's nothing more I can really say.
-- We do not need to be lead by business people.
MY new rule for startups - the big engineer should be the CEO. You can have a CTO and other engineers. You can have a VP of bizdev or sales. But the big fish needs to be an engineer if you are a tech company. If you are making biotech the big fish needs to have biotech engineering. If you are manufacturing, then the big fish needs to be a manufacturing engineer.
The number one mistake I see startups make (especially when they are started by younger people) is taking some type-A business school graduate and making him the CEO.
This is the cause, ultimately, of most of the failures of startups I've experienced (and I've worked for, founded or worked with a couple dozen.)
Or, as a second order function, type-A business school graduates who have never started a company or worked a real job but do instead work for a VC firm, forcing bad decisions on your company.
Most of the fights between founders are because business guys are forcing bad decisions on the company.
The problem is, business school doesn't teach YOUR business. It teaches general business concepts. These are not difficult for engineers to master.
IT's impossible for these business guys to master engineering. (Yes, 30 years, still haven't seen that- the best ones just find an engineer they trust and get out of the way.)
As an angel investor, if your CEO isn't a geek, I'm not putting my money in. And if you look at the "successes" where this is the case, it's usually an arbitrage opportunity (Eg: somewhere just piling a bunch of money behind a halfway competent business model with half way competent employees is going to make money because the situation is the result of a structural inefficiency, usually caused by government: uber for example.)
The disconnect comes from engineering environments where there is no Alpha and Beta mindset, only varying degrees of competence. Trust your instincts and conscience. The VC only has a limited time for due-diligence.
http://www.theatlantic.com/technology/archive/2014/08/advert...
I still agree with MCRed's points. Just, as you said, have to watch out for the games people are playing that seem to be working for whatever reason.
Note: There was another link I had about one company getting crazy valuations where author showed they're basically telling investors what they want to hear. It broke down the tactics then showed they work too often. Can't find the link.
All those business school people ruined the corporate sector to a degree that I find it truly despicable.
I don't understand that they do not realize these people bring no benefit to a company other than laying off key people and filling their sentences with "big" buzz-words.
I know companies where more people analyze the company's work rather than people actually working.
I love the logic of this argument - it has so many applications - think about applying it to the climate change debate.
The fallacy here is that there is no downside to belief and that finite losses spread over infinite scenarios are still finite.
Applied to controlling one's own destiny, the issue is that there is a middle ground between having no control and having complete control. Obviously it is a waste to believe you have no control and to do nothing. It is also a waste to believe you have control of everything: I'm not going to control the weather or other people's moods, so it is a waste of effort to even attempt to do so.
The question, then, isn't if we can control our destinies, but how much we can control. Identifying the areas in which your effort would produce a desired effect is paramount. Though of course, due to our population size, you'll always find people who bet it all on black day after day and made that moonshot due to their unfounded yet devoted belief that the universe would unfold the way they wanted it to.
Believing otherwise is the kind of self delusion that leads to mid-life crises: when the religion of You crumbles and a desperate scramble for a new faith begins.
Life is, in part, a lottery. Failure is fine. Failure is to be expected. Don't read in to it in the context of your self worth, but look at it objectively and see if anything is to be learned. Take risks and accept reality, and never reject the truth, especially when it's staring you right in the face.
In my experience, the interview process with whiteboarding problem can go one of two ways. One of them is the "find what we think is the textbook solution to this toy problem" way. The other is the "communicate to us as you attack this toy problem so that we can understand your thought processes, problem-solving approaches, and your experience with these topics" way. Only one of these is really objectionable.
What I do is ask people about a problem they have solved and get them to teach me about it. If I learn something then it's a good result.
Asking people to solve a trivial problem AND let you into the inner workings of their brain-- normally a non-verbal activity- isn't testing their abilities.
> Software is a new field and nobody knows how to do it. If someone says you are unqualified and therefore you must do maintenance work, you should question that person. We have an upside down system where the people who are paid the least do the crappiest work. They tend to be young and naive.
Software development has been meticulously studied for over 40 years. From Dejurka, 'Goto's considered harmful' to Parnas, 'On the Criteria To Be Used in Decomposing Systems into Modules', Design patterns, academic studies, Pair Programming etc.
> 2. You are not a commodity.
Your HR department has a list of 'potential hires' to replace any position in your company at a moments notice. The quickest way to build a bad reputation is to think you are not replaceable and act accordingly.
> 3. Software engineering is an art and a science but rarely both at once.
> The planning and design process is an art, but once the requirements are in place you can proceed more deterministically.
No matter how brilliant you architecture and plan is there will inevitably be new requirement or changing requirements that cause you to continuously revise re-architect and re-write large part of your code base. Both design and Implementation are a messy evolving process.
> 4. You are not your job.
If you do not love this then its not for you. Thats true in many professions and Programming is no different.
> 5. The world is a distributed system.
I could not parse any overall point to this passage.
> 6. You are not a lottery ticket.
???
> 7. Choose action over planning. Talk is cheap and execution is scarce.
> This is why nobody cares about your ideas, they care about seeing your prototype. John Mayer said that all he had to do to become successful is finish his songs.
Writing a plate of spaghetti code that does some neat thing is not what makes you an employable dependable developer. Writing clean well documented well though out efficient code that meets the specifications is what does that. That take planning and discipline.
> 8. Software engineering is full of lies and people who will try to take advantage of you.
This is a bit psychotic.
> 9. You are not your credentials nor your past.
You very much are. You do not necessarily have to be an Academic golden boy but you will be judged by your previous experience and projects.
> 10. As a software engineer, you can take career risks aggressively because your downside is fundamentally capped.
That works out great unless you have to pay 2500$ rent each month or buy food and clothing for your children etc. Not everyone that writes software is a 19 year old trust fund baby...
Things are probably the other way around. Don't take the job if you think that you will be easily replaceable. In that case, take another job.
> you will be judged by your previous experience and projects ...
Never apply for a "job". Always apply for a project, or rather, do your own project, if you can.
What matters, is what the project at hand is all about, and if you have the ability to do it. Discussing unrelated issues about credentials or unrelated previous experience, is a sign that the person in front of you has time to waste; his own time, but also yours. That is a red flag.
So if you apply for a position at Google and they offer you a job that suits your skill set and background you should not take the job because Google potentially has a list of thousands of people they could replace you with? wat?
> Never apply for a "job". Always apply for a project, or rather, do your own project, if you can. What matters, is what the project at hand is all about, and if you have the ability to do it. Discussing unrelated issues about credentials or unrelated previous experience, is a sign that the person in front of you has time to waste; his own time, but also yours. That is a red flag.
If you apply for a position and the company is not interested in your experience or previous projects then I'm fairly confident of two things. a) The company is a sweatshop and burns through junior developers like tissue paper to flame. b) The work you will be doing will be the worst sort of low skill crap work that no one with a half way decent resume and experience wants to do.
Yes, exactly. If it is trivially easy to find thousands of people with your skill set and background, there is something wrong with that skill set and background. You will need to work on it, because these things are an accident waiting to happen.
> a) The company is a sweatshop and burns through junior developers like tissue paper to flame.
Not really. They have a real problem and they cannot readily find someone to solve it. And then you come along. Now the problem may finally get solved. This is how it best works. If not, there is something wrong with the entire situation.
> b) The work you will be doing will be the worst sort of low skill crap work that no one with a half way decent resume and experience wants to do.
If you do not have a pretty much unique selling proposition, you will indeed compete at the bottom of the market. You need the ability to solve a particular type of non-trivial problems and you must preferably have been specializing for years in doing that. People in your field understand what the value proposition is, and there is no need to endlessly debate this with them first.
Google do not use the technology in which I specialize. One day they may, but at the moment, they don't. So, I would never run into them, when occasionally looking for a project (once every 3 - 5 years). The day that Google starts using this technology, they could indeed try to ask me for an interview, but why would I prefer them to the established players? Am I replaceable? Yes, but Google are even more replaceable. I will have done fine for years, before they decided to enter the field too. Who exactly is the one that is replaceable here?