TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Ask HN: How do you sell in a new programming language?

34 点作者 simenfur超过 11 年前
People who are passionate about programming often find themselves with a need to convince their organisation that it is time to try something new. Resistance against this kind of change is often entrenched, and a long struggle awaits.<p>What kinds of arguments do you use? What kinds of arguments actually work?<p>What strategies for transitioning to the &quot;new&quot; have you proposed, and what has actually worked out in real life?

29 条评论

patio11超过 11 年前
The same way you sell a business anything else: it will raise our revenues and&#x2F;or decrease our costs.<p>Rather than saying &quot;We should reimplement our core products in $FOO&quot; you can often achieve the result of using $FOO while hitting less resistance by implementing one-off projects or support systems in $FOO instead.<p>e.g. I worked at a Japanese megacorp and, despite us being a Java shop, one of the sales guys sold a customer on &quot;We&#x27;re certainly the right people to write documentation for your Perl program.&quot; This contract only required a bunch of HTML files as a deliverable, rather than getting a team of programmers to speed on something which would be maintained for 30 years, so I successfully convinced my boss that I&#x27;d jump on the Perl grenade if he let me use any means necessary to create the HTMLed documentation. I ended up doing it in Ruby. Then I had a &quot;Hey boss remember that time I delivered a $X0,000 project in 1&#x2F;4th the budget and made you look like an effing hero? I want to use that tech again&quot; case study.<p>Though for the amount of time I spent on evangelizing Ruby and modern Javascript-heavy UIs at my previous company I could have launched my own. Eventually I did. It turned out to be a much better use of my time.
评论 #7244132 未加载
fecak超过 11 年前
One &#x27;argument&#x27; that people don&#x27;t often think of is recruiting and hiring. I recruit for many companies, and the level of applicants I receive for jobs in the more emerging language communities is well above the applicants I usually get for more traditional languages. My evidence is anecdotal, but when I posted Clojure or Scala jobs (and recently Go) I received fewer applicants! but almost all of them were highly qualified engineers with very impressive track records. The applicants also come from all over, because of the novelty of the jobs. Java jobs tend to get local candidates, but a Clojure job gets applicants worldwide.<p>Most of this is with startups, but I&#x27;ve even seen serial startup engineers go to work for large companies who use an emerging language.<p>Obviously this is a side effect that depends on the language chosen, and it doesn&#x27;t justify that the code or product will improve, but if you are making the argument this could be a consideration.<p>Of course, the counter is that experienced talent in the emerging language may be more scarce.
评论 #7244105 未加载
评论 #7244568 未加载
dev99超过 11 年前
I worked for a place that used a dying language. The argument I used was simple: If you stick this technology, your employees will worry about their careers and leave, AND you will find it harder and harder to recruit new people who are interested in this language. Good developers will want to work in exciting and living languages to further their careers and keep their skills up to date. So the only developers you will find are the ones who will &quot;settle&quot; if they can&#x27;t find another job, or use it as a stepping stone until they find a different job, or demand a high premium to do it.<p>There seemed to be some openness to studying the alternatives, but ultimately it was hard to convince the powers that be that it was worth the effort to adopt a new language&#x2F;technology.<p>So I quit. The only regret I have now is I didn&#x27;t do it sooner. I wasted a lot of valuable time.
implicit超过 11 年前
I convinced the company I work at to use Haskell for REST services.<p>The technical leadership team was already interested improving the reliability and rigor of our web backend, but weren&#x27;t thinking about exploring other programming languages. (we primarily use PHP)<p>I knew Haskell would be hard to sell, but I also had concerns about it myself, so I ran a live-fire test:<p>In my spare time, I wrote an interface-compatible Haskell implementation of a particular service that drove a lot of load, but was noncritical. I load-tested this service by flipping an nginx switch to divert traffic to the Haskell implementation. Leadership was ok with this because we could just flip the switch back if there were any issues: The risk of customer impact was miniscule. After some initial tests, we left it to run for a few months without manual intervention.<p>Over the course of this side-project, I got a few curious coworkers to learn Haskell to help out.<p>When the right project came along, leadership still had concerns, but I had lot of hard evidence to show that Haskell superbly fit our technical requirements and that the nontechnical problems (like hiring and training) were probably surmountable.
binarymax超过 11 年前
A contractor and I successfully convinced our large enterprise that node.js was the best choice for a new project and we were able to use it. I dont want to make this a conversation about whether node is good or not, but it did hit the sweet spot as our goal was basically a RESTful API as a facade to some legacy tech, which is in my opinion where node shined - and this was back in early 2011.<p>The convincing arguments are:<p>1) the technology fits the problem - I would not use C++ for a web api, and I would not use node for a rendering engine.<p>2) the team is (mostly) ready to use it - a couple weeks to read a book and make a prototype should be enough. There is no need for lengthy and expensive training sessions or a gigantic shift in technical knowledge<p>3) if it doesnt work out, you can double back quickly and cheaply<p>4) the new technology won&#x27;t cost an arm and a leg - no need to find budget for expensive licensing for software&#x2F;tooling<p>5) you are not proposing this alone - get backing from other senior level programmers&#x2F;architects.<p>If you can hit most of those, then you probably have a decent chance!
Pacabel超过 11 年前
Build something useful with it, prior to getting widespread buy-in. Build this thing more efficiently than you could have using the existing tools. Make sure the end product is more efficient, reliable, and robust than an equivalent built using the existing technologies. Make sure these differences are very, very significant and obvious.
z3phyr超过 11 年前
Timing for the argument is very crucial. Your arguments for adopting a new language will only work when other employees and your BOSS see your solution run, and that at the correct time, when most of the people are not satisfied with the current solution. If you are successful in demonstrating the pros and importantly cons and other people support your decision, then there is 1% chance that your boss will try!<p>I don&#x27;t remember what happened clearly but I am able to recount one instant..<p>My father is a pro C# guru. His organization was having hard time investing in a proprietary library. High costs had him thinking. I suggested him to use a python based open source library. He asked me to mind my own business and not to meddle in his affairs. That night when I came to his room to good night, he was sitting reading the python documentation!
stcredzero超过 11 年前
Implement something useful. Be useful. Better to ask for forgiveness than ask for permission. Only way it works.
评论 #7244264 未加载
评论 #7244435 未加载
petercooper超过 11 年前
While Ruby was growing in popularity prior to Rails, it took Rails to really convince a lot of developers (including me) to switch from existing solutions. I think there&#x27;s a lot to learn from how that happened. (See SciPy or IPython and Python for smaller scale examples of this story.)
parley超过 11 年前
It may sound ridiculously obvious, but I think it&#x27;s often a matter of being able to empathise with whoever you need to convince. Most organisations are in it to make money, and different people are different pieces of the puzzle of achieving that. If you can express the upside of the technology shift in terms relevant to, say, business developers or managers, things get easier. Whether you have closures or not doesn&#x27;t matter, but time to market, time spent on bug fix releases instead of feature releases, etc do. Also, it will probably serve you best to thoroughly and honestly present both pros and cons. There&#x27;s almost always cons (training, toolchain or workflow changes, building competence, talent availability, unclear longevity of technology being switched to) so if you&#x27;re not upfront with the cons, people will wonder what they are and not knowing is scary, risking a higher susceptibility to scepticism. Also, if it&#x27;s possible to use the new tech for a small project and you can show the upside with clear metrics, actions speak louder than words. My two cents.
评论 #7244207 未加载
tobz超过 11 年前
(We haven&#x27;t actually switched yet, and there isn&#x27;t significant progress on doing so, but the attitude change was decent)<p>We use PHP for most of our web stack at work. This includes long-running consumers that are part of our growing service-oriented architecture. PHP all over. It&#x27;s hard to say &quot;no&quot; when everyone is familiar with it.<p>We&#x27;ve dealt with pretty crappy performance, compared to other solutions, using this setup. It puts a lot of backpressure on our publishers (we use RabbitMQ as our messaging layer) and it causes queue build-up, which requires manual intervention, etc etc.<p>I had mentioned how we should switch to a better language: didn&#x27;t go that well. We have a lot of code written already: nothing insurmountable to rewrite, definitely &lt;10k lines of good code, excluding boilerplate-y stuff. It&#x27;s nearly impossible to get people to drop other priorities to <i>try</i> something new. It has to be a more sure shot.<p>One of our developers, though, wrote a test application in Java to show how much faster we could be consuming and processing messages. He actually replicated one of our simpler services, which isn&#x27;t much more than turning the messages into rows in a MySQL database. I believe the Java consumer had a ten-fold performance increase over the PHP one.<p>So, now, we have a few internal working groups for various tracks of improvement to our product, and one of those groups is exploring Java as a possible language to switch to for this area of our infrastructure. We have people dedicated to actually vetting it, not just talking about it at the bar or something.<p>Long story short, and to echo everyone else: you can&#x27;t just tell people there&#x27;s something better, you have to show them something better.
rjzzleep超过 11 年前
arguing beforehand for the language itself never worked for me. for me it&#x27;s always been easier to get the other developers interested, and then deploy a working project with it.<p>asking beforehand for me always led to a wide variety of different arguments of why we can&#x27;t use a different language. the most common two being the following ones.<p>* we can&#x27;t find new developers with that experience<p>* our developers don&#x27;t know it
romanovcode超过 11 年前
Depends on who you&#x27;re selling to. Here are few categories out of top of my head.<p>- Make website very fancy with videos and do many useless benchmarks showing that it&#x27;s faster then everything, especially Nodejs<p>- Create VM language and show that it&#x27;s just as good as Java but with much more syntactic sugar. Also note that C# runs only on Windows and yours run on everything.<p>- Do a static compiled-to-bytecode language that will be just as fast as C++. This is very hard so you can forget about this.<p>- Create another &quot;language&quot; that will compile to Javascript.
wallflower超过 11 年前
Well, I personally know one high-level technical individual who almost got fired for daring to use Spring in a heavy J2EE shop. He survived and Spring makes the product so much better (for those who don&#x27;t know - Spring is basically what J2EE should have been - lightweight and high performance framework)<p>You basically have to appeal to emotions (they won&#x27;t understand the technical argument or even care). But if it makes the product more stable, more easily extensible&#x2F;customizable - that could work.<p>Good luck!
mmphosis超过 11 年前
Stop arguing. I&#x27;m a programmer, not a salesperson. $FOO (a new programming language) needs to sell itself.<p>Cost. What is it going to cost?<p>Benefit. What are the benefits of using $FOO?<p>The answer is: it&#x27;s going to bring in revenue.<p>$FOO needs to be adopted because it is popular, it is an industry and open standard.<p>&gt; Do we need to convert everything to $FOO?<p>The answer is: no.<p>&gt; Do all of the programmers need to learn $FOO?<p>The answer is: everyone already knows how to programs in $FOO.<p>I&#x27;d be curious to know what the &quot;entrenched&quot; programming lanaguage is, and what the &quot;new programming language&quot; is.
gyepi超过 11 年前
A lot of this depends on the organization, its perceived needs and the personalities involved. No doubt some of the answers you get here will be helpful, but I would focus on the particulars. The first question is whether the organization actually needs a new language or whether you just want to use a new language.<p>Depending on the environment, the change will bring its own set of difficulties and those will need to be addressed. Sometimes, it&#x27;s a matter of the people involved. For instance, you are the only one passionate about a new language and others are not or is willing to learn and others are not, etc, then you suddenly have a new problem that may not have existed before, including having to support your colleagues through the transition.<p>As for arguments, etc, those should arise from your situation. If the current system is not working, make that clear. You may have to repeat yourself to get the point across. But do your homework first. Know what&#x27;s broken and how your suggestion will fix it. Know the advantages of the current system and the distadvantages of the new one. &quot;Trying something new&quot; does not seem like a good reason; surely there&#x27;s a reason why you use language X?
parallelist超过 11 年前
Are you respected? Because I’d say don’t even bother trying if they don’t respect you
727374超过 11 年前
Have a plan for how it will integrate with your existing ecosystem such as tools, version control, continuous integration, data sources, etc if your org requires these things. I once worked as a principal at a .NET shop and had a smart engineer come to me wanting to use nodejs for part of a project and had to gently turn him down. I love to see enthusiasm for using new tools and personally like node&#x2F;javascript, but his plan to use node didn&#x27;t address important process concerns like hooking into our existing deployment, CI, and unit tests. Those concerns could have been addressed, but would have required significantly more effort than the actual project itself. Every org is different, but for us adding something without proper automation&#x2F;tooling was a sin.
joesmo超过 11 年前
If this isn&#x27;t obvious to your use case, there is no business reason for trying a new programming language and you are doing the whole business a disservice. I should never have to sell a new language or technology. If it&#x27;s something the business needs, the uses will be obvious.
评论 #7244610 未加载
fauigerzigerk超过 11 年前
Honestly, I think you can rarely make a convincing case based on technical merit or productivity promises alone. There are often good reasons to be conservative about technology choices.<p>I would try it from a different angle. If the organization wants people who are able to come up with fresh ideas, these will not be the same people who are content with using only very mature technologies. If the organization wants to cultivate an innovation mindset and be attractive for innovative people there needs to be space for experimentation. Who knows what comes of it.<p>Maybe that&#x27;s the point where you get fired. If you were hired by an insurance company to maintain their 2002 style J2EE monster that&#x27;s what&#x27;s going to happen.
musesum超过 11 年前
There once was a company called Digital Research (DRI). They had a successful language called CBasic. A friend that worked there tried to convince them to develop a compiler for another language called &quot;C&quot;. They refused. He insisted. The result: &quot;they fired my ass!&quot; Later, DRI wrote a C compiler. Was it too late? Would they have been successful if they had written it sooner? Maybe. But, then that would have been a different company. Perhaps, another way of looking at it is that my friend was giving his company a job interview and, in his case, they failed.
tremols超过 11 年前
Does your new language improves productivity, maintainability, code reusability, performance, etc?. Does it allow new crazy esoteric tricks with one line of code?. Does it bring a paradigm shift?.<p>Otherwise if its a new syntax for the same old thing - specially regarding imperative programming which to me already reached a dead end - it will be hard to sell. If you&#x27;re thinking of a market strategy then your language is lacking enough innovative features that make it sell itself.
stephen_mcd超过 11 年前
- Make a list of successful companies using lang X. Bonus if competitors. They&#x27;re a success because of lang X.<p>- Will using lang X over Y reduce total lines of code? That&#x27;s less work, less time, less money.<p>- Are # jobs for lang X rising? Show some pretty graphs. We can&#x27;t fall behind the market.<p>All of this is bullshit to an engineer, but precisely how you need to sell it.
eklavya超过 11 年前
Show that it decreases LOC while improving&#x2F;maintaining readability with performance at par with current ones OR great performance without too much compromise on LOC count and readability.<p>So in essence, how it makes an average joe like me more productive&#x2F;powerful.
ExpiredLink超过 11 年前
What makes you sure that your implicit assumption &#x27;new == better&#x27; is correct?
hluska超过 11 年前
If I were in your shoes, I would spend some time trying to research why your company is actually resistant to change.<p>Some managers are extremely resistant to change because they work in organizations with extremely vertical power structures. Consequently, they know that even if they think it is a good idea, they are going to have to sell it to 15 different people and get each to sign off on it. In some organizations (government is an excellent example), a manager would have to write a report to get permission to write a report investigating a new technology. In organizations like this, experienced people (aka - management) generally have horror stories about the time they spent three years getting permission to upgrade all the computers to Windows ME...<p>That brings up another reason that some organizations are resistant to change. When the kinds of people who read Hacker News think of a new tool, they&#x27;re usually excited. People like us equate change with learning and improving. Consequently, change is an adventure. Unfortunately, end users don&#x27;t always feel the same. For these types of users, &quot;IT change&quot; is synonymous with &quot;pain and torture&quot;. Consequently, getting permission to use a different tool is usually only the first step. When you actually implement the project, you get to deal with six weeks of whining, followed by another four weeks of training extremely resistant people. And then, for the next several months, every problem on earth is &#x27;the new system&#x27;s fault&#x27;...<p>And then, there are the sales people. Many managers have horror stories where a sales person convinced them that this great new system would do A, B, C, D, E, and F. Unfortunately, once the system is implemented, lo and behold, the system barely does A and B. If you&#x27;ve ever been through a situation like this, you&#x27;ll be extraordinarily resistant to any new solution.<p>Once you know a little more about why your company is resistant to change, you&#x27;ll be in a better place to make a decision. Maybe you work for a giant, monolithic entity that changes about as fast as granite erodes. In this case, you might have to decide whether you feel comfortable in a company like that. Or, maybe your direct manager got burned by a new tool and is forever paranoid. In a situation like that, you&#x27;d be better off implementing a one-off project with the new tool and proving that your solution actually works.<p>The general advice in situations like this is to show that a new tool will have a positive return on investment. That advice isn&#x27;t wrong, but unfortunately, when people write about the ROI of a new tool, they usually focus on developer hours saved. While that is a good metric, in most cases, developer hours are just one component of a system&#x27;s true cost. If you start your analysis earlier, you&#x27;ll have a better sense of all the other costs involved and be able to speak to the real objections you will face.
br0ke超过 11 年前
sell the result, not the medium. I&#x27;ve written code for fortune 100 companies and gov&#x27;t agencies in &quot;crazy&quot; languages like scheme and lisp... I didn&#x27;t say what technology I was going to use, I just told them what the result and cost would be.
michaelochurch超过 11 年前
So, to begin, this is really hard to do, and it can lead to the end of your career at a place. Managers might think of you as That Guy, the one who is always coming out with disruptive ideas. (&quot;Disrupt&quot; ain&#x27;t a positive term, here.) That Guy makes the manager&#x27;s job harder because the manager wants a unified front, not debate.<p>1. It helps if the language interoperates well with the existing platform. If you&#x27;re at a Java shop, consider Scala and Clojure. Don&#x27;t bother trying to sell it on Haskell; that&#x27;ll never happen. But, for Scala or Clojure, the top 25% of Java developers are probably headed that way already.<p>2. Don&#x27;t ask permission of nontechnical management. (Grace Hopper: it is better to ask for forgiveness than permission.) Just deliver something cool in it that the rest of the organization can use. In the JVM ecosystem, no one needs to know that the JAR actually contains Clojure code. Get enough momentum behind the project that management actively wants you to demo it to the rest of the company. Then mention the &quot;secret weapon&quot;.<p>3. After (2), get a job ad posted in the new language. The quality of applicants will be a lot better. Post a Java job ad, and you&#x27;ll get more responses, but your phone-screen-to-hire rate will be about 2-5%. For a Clojure job, it&#x27;ll be closer to 30%-- and 60% of those who actually know Clojure (those who don&#x27;t will fail-fast on the phone screen). Not only can you reduce time wasted with unqualified candidates, but you&#x27;re more likely to get a 10X hire. Now you can make the argument that it&#x27;s worth hiring more people in the newer, better language.<p>You&#x27;re not going to turn a large Java shop into a Clojure company. It just won&#x27;t happen. But if you do the above and have a bit of luck, you might carve out a CoE (Center of Excellence, also known as an &quot;honor&#x27;s college&quot;, which tends to be an elite suborganization that has an R&amp;D flavor) in the organization that uses it.<p>That above only works if your company has generally good management. (They don&#x27;t need to be programming language specialists, but they need to be good at their jobs.) If not, you&#x27;re not going to get anywhere no matter what you do and it&#x27;s not your fault. Then, the best bet is to move on.
评论 #7244186 未加载
评论 #7245469 未加载
Eleutheria超过 11 年前
Managers only understand about resources: time, money and human.<p>And percentages.
评论 #7244300 未加载