[HN Gopher] Developer tools can be magic but instead collect dust
       ___________________________________________________________________
        
       Developer tools can be magic but instead collect dust
        
       Author : todsacerdoti
       Score  : 170 points
       Date   : 2021-03-28 18:34 UTC (4 hours ago)
        
 (HTM) web link (www.pathsensitive.com)
 (TXT) w3m dump (www.pathsensitive.com)
        
       | azhenley wrote:
       | My research is also on dev tools, and I have tried to get my
       | research findings adopted. It is hard. Companies often want to
       | release incremental, small features, not major UI overhauls.
       | 
       | Even when I've done research at companies or been funded by them
       | to study their products, it is virtually impossible to get it
       | adopted into the product. Again, the incentives and motivations
       | of PMs are very different than researchers.
        
         | acidbaseextract wrote:
         | _Companies often want to release incremental, small features,
         | not major UI overhauls._
         | 
         | Speaking as a product leader who has been in a position to
         | decide on these, I'm not opposed to major UI overhauls, but
         | many that have been proposed to me:
         | 
         | - Are motivated by a design team that wants to justify their
         | jobs or make a mark on a product, with the UI considerations
         | secondary.
         | 
         | - Have major issues and design weaknesses themselves.
         | 
         | - Throw out important aspects of functionality in an attempt to
         | be "fresh and simple".
         | 
         | - Ignore that we had our last major overhaul 12 months ago, and
         | that one was in response to the major ovehaul 24 months ago.
         | 
         | Requiring evolution rather than revolution is a hedge against
         | these problems. I'm not generally opposed to overhauls because
         | I'm familiar with the importance of UI. For example, I'm very
         | unhappy with Robinhood as a trading platform, but damn,
         | switching to Fidelity is painful because their UI is so
         | terrible.
         | 
         | I wish I more consistently got to work with talented designers.
         | I put a lot of effort into getting good designers, as poor
         | designers can wreak havoc.
        
         | k__ wrote:
         | What did your research find?
        
       | indymike wrote:
       | Here's what makes developer tools hard:
       | 
       | 1. IDE dependency. If you have to use IDE X to get the feature,
       | then your tool will live and die by IDE X. A lot of development
       | tools lose their user base when an IDE or editor falls out of
       | favor.
       | 
       | 2. Language/compiler specificity. This one is rough, because most
       | dev tools are dependent on language tooling to do the magic.
       | Productivity hitches are different in different languages. In a
       | day, I may work with Python, Go, JavaScript, SQL, bash/zsh and
       | several DSLs. If your tool doesn't work with 2-3 languages I use,
       | I may never even notice your tool. A lot of static analysis based
       | tools work well with C and Java and nothing else. It's kind of
       | the SmallTalk trap: amazing tools, but you have to use SmallTalk
       | to use them.
       | 
       | 3. Solving stuff that really doesn't matter to the programmer. As
       | a manager and as a business owner a 15% in developer productivity
       | is great. As a programmer, I'm not even going to notice that I'm
       | getting 15% more done. And even if I do, it may not even matter.
        
       | Animats wrote:
       | _" They later wrote a Java version, jRMTool, but it's only for an
       | old version of Eclipse with a completely different API. The code
       | is written in Java 1.4, and is no longer even syntactically
       | correct. I quickly gave up trying to get it to run."_
       | 
       |  _" A few years back, my advisor hired a summer intern to work on
       | MatchMaker. He instantly ran into a barrier: it didn't work on
       | Java 8."_
       | 
       |  _" A couple years ago, I tried to use the Java Whyline. It
       | crashed when faced with modern Java bytecode."_
       | 
       | He's answered his own question. Developer tools wear out quickly
       | as their environment changes. Unless they have support that keeps
       | up with the development environment, they die.
        
         | samatman wrote:
         | Okay, but, it wasn't a question, there's no ? in the title.
         | 
         | He was writing a blog post to draw our attention to this
         | problem, and succeeded.
        
         | ok123456 wrote:
         | This is why version pinning got popular.
        
       | jhgb wrote:
       | > About 10 years later, at the Human-Computer Interaction
       | Institute at Carnegie Mellon, Amy Ko was thinking about another
       | problem. Debugging is like being a detective. Why didn't the
       | program update the cache after doing a fetch? What was a negative
       | number doing here? Why is it so much work to answer these
       | questions? Amy had an idea for a tool called the Whyline, where
       | you could ask questions like "Why did ___ happen?" in an
       | interactive debugger
       | 
       | Am I just confused, or does it sound like program slicing (1979)?
        
         | azhenley wrote:
         | Amy Ko's Whyline is heavily based on slicing.
         | 
         | https://faculty.washington.edu/ajko/papers/Ko2009JavaWhyline...
        
       | SkyPuncher wrote:
       | Hmm. I'm not buying it.
       | 
       | Sure, stand-alone developer tools mighte be collecting dust, but
       | many tools are simply baked into the things we develop with.
       | 
       | * Extensive debugging tools are now built into browsers. * Most
       | popular languages have extensive linters, formatters, and code
       | quality tools. * Tools like Hot Loading and Live View simply
       | become part of the language you're using. Heck, Hasura and
       | Postgraphile are essentially just a set of tools with some very
       | intelligent wiring. * Profiling is basically standard on all
       | popular languages * Storyboard and component driven design means
       | you can quickly translate a lot of design work to code.
       | 
       | The list goes on and on and on.
        
         | actuallyalys wrote:
         | I think your points are complementary to the article. It does
         | seem like if a tool reaches a certain popularity threshold,
         | programmers start porting it to every language and environment
         | under the sun. And that often takes the form of building things
         | in to larger tools.
         | 
         | But the academic tools this post highlights are typically
         | standalone and haven't reached that threshold. My suspicion is
         | that the author's point applies most to academic tools that
         | have trouble reaching a critical mass.
        
       | veselin wrote:
       | I think that tools that collect dust are just not great. The
       | article gives some internal Facebook tool as an example, but it
       | is really a research paper. I asked some friends at Facebook and
       | from my (small) sample I couldn't confirm from anybody to have
       | heard of anybody who used the tool, which means it was maybe just
       | a PR stunt. This is not a problem for research and it is a great
       | paper, but there's just a lot of overselling in the field.
       | 
       | On the other hand, everywhere I worked, developer tools that did
       | their job well were easy to adopt. JetBrain is a great example.
        
       | at_a_remove wrote:
       | I use very few developer tools, mostly because I couldn't get
       | them to stop doing things I hated, or because I couldn't get them
       | to stop doing things I didn't need, or because I couldn't get
       | them to stop doing things I didn't understand. There's a common
       | theme there.
       | 
       | The autocompletion stuff really bothered me because I know what I
       | want to type, my fingers are already doing it, and I had to _stop
       | them_. I don 't want to learn to retype just for this tool. No.
       | 
       | Certainly, some of them seemed like they would benefit from some
       | kind of beginner mode, intermediate mode, and so on. I remember
       | not having touched Visual Studio for over a decade, and then
       | looking at it and feeling like a chimp dropped into the cockpit
       | of an F-15.
        
       | pharmakom wrote:
       | Maybe they are not as useful as we thought?
        
         | rodgerd wrote:
         | Honestly, my experience is that developers are, on the whole,
         | incredibly conservative about changing their ways. When I was
         | still an active Java dev, I would, along with a couple of other
         | peers, solve a lot of problems in one of our codebase with the
         | YourKit profiler, but the use never spread - people would
         | prefer to grind out the thing they already know and thrash
         | around blindly to spending a day or two learning an easier way
         | of solving a problem.
        
           | gmiller123456 wrote:
           | Granted, if I had a nickle for every profiling tool that
           | claimed to make code easier, more secure, faster, etc which
           | didn't live up to its promises, I wouldn't need to work
           | anymore.
           | 
           | It's great that you found one that worked in your particular
           | situation, but my exerpience has been quite the opposite. And
           | it's not from a lack of being forced to try.
        
         | tracyhenry wrote:
         | or the academic people are not interested in putting in the
         | effort to maintain the tool in order to get more adoption.
        
           | azhenley wrote:
           | We aren't incentivized to maintain research prototypes. On
           | the flip side, industry seems to have very little interest in
           | adopting our findings into products.
        
             | tracyhenry wrote:
             | > We aren't incentivized to maintain research prototypes
             | 
             | There are still examples where research prototypes have
             | evolved into successful products, either as open source
             | projects or commercial companies. The researcher needs to
             | be passionate enough about getting adoption and real-world
             | impact in order for this to work.
             | 
             | > On the flip side, industry seems to have very little
             | interest in adopting our findings into products.
             | 
             | IMO, developer tools need to be wayyyy better to overcome
             | inertia. This statement might not hold in other fields,
             | e.g., ML/AI.
        
       | slx26 wrote:
       | This is all rather vague. These tools collect dust because
       | software nowadays doesn't only have to be written, it needs to be
       | maintained and adapted. And these examples weren't because they
       | weren't useful enough. Sure, they worked at their specific
       | task... but none of them was a game changer or enhanced the power
       | of the developer in general. It's not that dev tools are not
       | used, just that most of them are directly written by the
       | programmers that need them, for their own use, without much care
       | for life expectancy or limitations. Just to get that thing done
       | when they need it. I don't really understand much the point of
       | the article. If an idea is good, well executed and presented to
       | its target audience, maybe it won't eat the world, but it will
       | have decent chances to not collect dust.
        
         | barefeg wrote:
         | In my opinion this article is a cry from people that don't
         | understand how to find a market fit and then "sell" their idea.
         | I think it's pretty typical point of view from academics that
         | their idea is ground breaking and should be know by everyone.
         | However, things don't work like that in the real world.
         | Meritocracy doesn't make the best tool rise to the top. You
         | also need to solve a problem for a huge amount of people and
         | then do a bunch of PR and educate.
        
         | phone8675309 wrote:
         | > These tools collect dust because software nowadays doesn't
         | only have to be written, it needs to be maintained and adapted.
         | 
         | Everyone loves making and using a new, shiny, "life changing"
         | tool. Very few people would stick around at a job (or indeed,
         | apply for a job) to maintain that tool.
         | 
         | Creation is easier compared to understanding and adaptation to
         | change.
        
         | dstick wrote:
         | Didn't sound vague to me at all. I learned a few things from
         | the article and I would pay a hefty premium to have that
         | "Whyline" debugger in Phpstorm.
        
           | slx26 wrote:
           | The point the article was trying to make, not the tool
           | descriptions. Though to be fair, the point was probably only
           | to showcase some cool ideas to inspire people to consider dev
           | tools more. Maybe I tried to read too deep into it.
        
           | heavenlyblue wrote:
           | "Whyline" debugger is useless if you are trying to understand
           | why your LIVE code ended up in a certain state; unless you
           | are ready to run your live code in a debugger.
           | 
           | Finding all places where the variable had changes is on the
           | other hand easy without Whyline.
        
       | crb002 wrote:
       | Twitch streams help. A lot of tool skills don't get transferred
       | because they are un-observed.
        
       | hypermachine wrote:
       | Because in 2021 developer tools are fundamentally not profitable.
       | Jetbrains is the exception, not the norm. Developer tools are
       | loss leaders for large corporation to acquire developer goodwill
       | and mindshare. Previously we sold developer tools/PaaS.
       | Programmers do not like to pay for their tooling. You have to
       | sell to management, and when your target is management, then the
       | metrics are completely different from what developers want.
       | 
       | This is why no-code and low code are so much more successful than
       | developers tooling startups in terms of revenue and
       | profitability. The people using are the same people who are
       | running the business. The value proposition is clear. "Better
       | developer experience" alone is not sufficient for selling to
       | enterprise. And programmer productivity cannot be quantified in
       | lines of code written. This is hard point to explain and get
       | across on HN because this forum is inherently dismissive of the
       | value of RPA and RAD software.
        
         | elorant wrote:
         | I've paid thousands through the years to buy various versions
         | of Visual Studio. While there are free alternatives I don't
         | even bother paying the money because of the value that
         | beautiful piece of software offers me.
        
         | donmcronald wrote:
         | > Programmers do not like to pay for their tooling.
         | 
         | Eventually they'll have to. Everything is trending to SaaS
         | offerings and eventually we'll be paying way, way more. The
         | amount of money people spend on SaaS CI blows my mind and if
         | that's any indication the move to massively over priced SaaS
         | tooling is inevitable.
        
           | Silhouette wrote:
           | I'm not sure I buy this argument. The one group of people who
           | certainly can create good alternatives that don't rely on
           | that lock-in effect are programmers, after all. It's their
           | livelihoods and happiness we're talking about, not to mention
           | often their own pockets feeding the SAAS beast in the case of
           | small businesses and freelancers, so they have a lot of
           | incentives to do exactly that. And there are millions of
           | them, many of whom already contribute freely to projects they
           | find interesting anyway.
        
           | DistressedDrone wrote:
           | SaaS CI is valuable because it's not seen as something a
           | programmer could easily make by themselves, unlike the vast
           | majority of SaaS offerings, a lot of which are more marketing
           | than code (not that that's a bad thing, but don't ask the
           | average programmer how highly they value marketing).
        
             | vbezhenar wrote:
             | May be I'm missing something, but CI looks like the thing
             | that's trivially implemented by a few bash scripts. It
             | won't be as pretty and as reliable compared to battle-
             | tested service, but generally it'll work. I did that in the
             | past and it worked pretty well for our uses.
        
         | devoutsalsa wrote:
         | I remember going to a sales pitch for proprietary mobile app
         | automated testing software . I was the developer looking at
         | this product. It had crap documentation, it was hard to use,
         | and our mobile app was not designed to be testable. But
         | internal efforts to improve the speed at which QA happened were
         | slow. Even though this software was crap, management bought it
         | because it was a problem they could through money at to try and
         | buy their way out of not listening to developers. We wanted to
         | make the app testable and use free, open source tools that
         | would actually work.
        
         | emrah wrote:
         | > Programmers do not like to pay for their tooling.
         | 
         | Maybe not for their personal/hobby projects, but they wouldn't
         | be the ones paying for tools at work.
         | 
         | So it's the companies not willing to pay for dev tools or
         | understand the value they can provide
        
         | macjohnmcc wrote:
         | yeah nearly every developer I encounter does not want to pay
         | for anything. Yet they love to get paid to program. An odd
         | disconnect there for me.
        
           | infoseek12 wrote:
           | Yeah nearly every person I encounter does not want to be
           | eaten. Yet they love to eat. An odd disconnect there for me.
        
           | rowanG077 wrote:
           | The disconnect is not odd for me. Developers know you will
           | essentially pay for a sub-optimal experience. Proprietary
           | software vendors almost always treat their users as dirt. The
           | piece of software would almost always be better if it were
           | open source. And developers know this.
        
           | DistressedDrone wrote:
           | I don't see it as a disconnect, my baker friends seldom buy
           | bread and I suspect jewelers seldom buy jewelry for example.
           | 
           | Why buy when you can make?
        
             | wodenokoto wrote:
             | That is not my impression at all.
             | 
             | All the chefs I know go out to eat way more than anyone
             | else I know (don't know any bakers, though). Graphic
             | designers I know, buy art and graphic designs (don't know
             | any jewelers, either). Musician friends buy tons of records
             | and tickets to live shows, friends who brew, buy more beer
             | than friends who don't brew.
        
               | Spivak wrote:
               | Software is a fun field where the people who make it want
               | to consume as little of it as possible.
        
               | DistressedDrone wrote:
               | I can't deny that this is plausible (in general I mean,
               | not just your specific experience). So what makes our
               | professions so different?
        
               | deviantfero wrote:
               | You can make unlimited copies of software would be my
               | first guess
        
             | jariel wrote:
             | The disconnect I don't think is about protecting their
             | turf.
             | 
             | I think it's mostly about 1) not having an instinct for how
             | powerful the tools are and 2) not being able to internalize
             | the value of leverage vs. cost.
             | 
             | $1000/year 'feels' expensive to a developer. That's 'a lot
             | of money'.
             | 
             | But if it makes you >1% more productive, it's worth it.
             | 
             | Some of these tools are not just productivity enhancements
             | but multipliers.
             | 
             | But that takes a different kind of intuition that very few
             | people have naturally, you kind of have to be in a position
             | to make those decisions.
             | 
             | Those that have the instinct often are not programming.
        
               | cortesoft wrote:
               | > But if it makes you >1% more productive, it's worth it.
               | 
               | Does it, though? I get paid for my time, not my
               | productivity
        
               | wccrawford wrote:
               | You get paid right now for your time.
               | 
               | You get paid next year a rate based on how productive you
               | are today.
               | 
               | Even when companies don't give proper raises, this still
               | ends up applying when you quit and go to another company
               | because you've spent x% more time actually coding instead
               | of waiting or busy work, and you can command a higher
               | salary.
        
               | MattGaiser wrote:
               | > But if it makes you >1% more productive, it's worth it.
               | 
               | For an individual, it depends on whether your
               | compensation is tied closely to productivity or
               | multiplication.Being 1% more productive is not going to
               | get your average person anything in a corporate
               | environment.
        
               | fiddlerwoaroof wrote:
               | I've paid for various tools over the years: ultimately,
               | I've never really found that the commercial tools are
               | significantly better for the problems I have. I've
               | generally found that Emacs and/or Unix shell utilities
               | make it really easy to make a tool that solves exactly
               | the problem you have while commercial tools end up having
               | frustrating limitations or are really hard to learn
               | because they solve the general case instead of the 70%
               | case that you actually have.
        
             | agumonkey wrote:
             | to me it's more like "the value of this thing i do is for
             | others to be happy"
        
             | sxg wrote:
             | Because you can't make every tool you'll need to program
             | effectively. Unlike bread, which only takes hours to make,
             | good tooling will take months to years if done yourself.
        
               | cortesoft wrote:
               | Yeah, but a baker also can't make one loaf of bread that
               | everyone can then eat forever.
               | 
               | In software, you actually can have your cake and eat it,
               | too.
        
               | [deleted]
        
           | jrockway wrote:
           | I think there is some bias in that younger developers are the
           | ones with the time to share their opinions over social media,
           | but also have the least amount of money / influence with
           | which to buy tooling. Certainly, when I started programming,
           | I didn't have any budget for tools. I was lucky to even have
           | a computer. Thus, I had no choice but to use free tools.
           | People hold on to that experience long past the point where
           | the monetary cost of tooling is meaningful.
           | 
           | Influence is the biggest problem, which is why I mention the
           | junior vs. senior divide. When you want to buy software at
           | work, you aren't typically given a budget and a credit card
           | with which to buy the tooling. You have to justify every
           | case. No junior developer wants to be the squeaky wheel
           | that's always begging for cash for tooling, so they do
           | without. Or, if they do decide to buy tools, they're met with
           | the "alternatives analysis" phase of approval -- you invested
           | time learning this tool that you now want to buy, go do that
           | three or four more times while still completing your normal
           | work, to make sure we don't waste any money. (You can see why
           | writing your own stuff from scratch is so popular -- no
           | approval process. You just do it.)
           | 
           | Tools are also special in that they come with a time cost and
           | a dollar cost. I have never seen a product that will save me
           | time without any effort on my part, but would love to buy
           | such a thing if it existed. Instead, you have to pay the fee,
           | and then learn the software. (So the actual cost is your
           | hourly rate * the time to learn, plus the actual dollar cost.
           | At least free projects or writing it yourself don't have the
           | actual dollar cost. The training cost leaves the most sour
           | taste in my mouth. I've wasted countless hours reading,
           | excuse the term, dogshit, documentation for something I paid
           | a lot of money for. Every time this happens I think to myself
           | that writing a version of this software that actually works
           | would have taken longer, but at least I'd be enjoying myself.
           | Never forget that your mental health has value.)
           | 
           | Finally, software vendors are doing a terrible job, in
           | general, of pricing their product for the developer market.
           | The biggest problem that I run into is per-user pricing. It
           | gets costly very quickly, either in money or in toil. The
           | monetary cost scales with the number of people that use it,
           | and if you want to avoid the anguish of deciding who is a
           | first class citizen that gets access and who is a second
           | class citizen who has to beg someone with access to do
           | something for them, you have to buy an account for every
           | user. Even for things that one person may use once a year,
           | you take a lot of autonomy and the potential for ownership
           | away if they can't use the tool. But, they charge you like
           | every user is using it for 8 hours a day, 40 hours a week.
           | 
           | Personally, that has been a recurring problem for me. The
           | tools that take me longest to get approved are minor
           | productivity enhancers with per-user fees. Tools that have a
           | per-organization or usage based cost are easy. (Examples:
           | CircleCI, Sentry.) Tools that have a per-user fee are
           | hardest. (Examples: Github, Codecov, Cypress Dashboard,
           | Retool.) I work on a cloud service that had a per-user
           | charge, and it went exactly as I expected -- few people would
           | sign up, and when they did, they shared accounts to keep the
           | cost down. We changed it to a usage-based fee, and a month in
           | the people that actually sign up and start using the service
           | increased dramatically. No longer do customers hit a paywall
           | where their 0 -> some usage costs an amount of money that
           | requires an in-depth approval process with their higher ups.
           | No longer do customers hit a wall where some team members
           | have to be made second-class citizens that can't use the
           | software. People can gradually go from a $0 bill to a $0.01
           | bill, and invite everyone on their team to contribute,
           | without having to come up with some way to share accounts.
           | It's really great, and everyone that sells per-user licenses
           | should think long and hard about how many people they are
           | flat-out turning away.
           | 
           | Anyway, my point is that developers aren't selfishly
           | collecting money without spending it on software. I'm sure
           | they'd love to, but there are a vast number of complications
           | standing in their way. Remove the complications to collect
           | their money.
        
         | dlojudice wrote:
         | > Because in 2021 developer tools are fundamentally not
         | profitable.
         | 
         | Interesting...
         | 
         | But monetization might not be the root of this since we have
         | very sophisticated tools delivered as open source. The question
         | then would be why the "dev comunity" is not interested in
         | building tools like those mentioned in the article?
         | 
         | My guess is that tools like Reflexion Models doesn't ring any
         | bells for junior/mid-level developers. They don't know exactly
         | what to optimize when it comes to long-term maintenance. That's
         | why we have so many parsers, linters, etc. and now typed
         | languages (again!) and not Reflexion Models.
         | 
         | The other day I was looking for something similar to Reflexion
         | Models: a tool that I could describe high level modules and its
         | files (like a package), describe the dependency hierarchy
         | between then and check if there is any calls between modules
         | that break the hierarchy. For instance: getting a alert if
         | there is a call to a repository from the a controller (DDD).
         | It's a common problem for big teams with junior developers that
         | could be solved by automation.
        
           | kungito wrote:
           | Senior developers with 20 years of experience do not
           | "believe" in debuggers, IDEs or writing tests. Same things
           | are reinvented every 3 months with a new name written in a
           | custom font. We are in many ways still in the bronze age of
           | software development.
        
             | heavenlyblue wrote:
             | Debugger is just a nice interface for prints.
             | 
             | IDEs should be replaced with libraries that allow one to
             | operate over the code (or make IDEs allow you to script
             | their AST manipulators)
             | 
             | Writing tests is not connected to the two above.
        
               | dan-robertson wrote:
               | That's definitely not what a debugger is. You can't add
               | prints to a coredump and the run->add
               | prints->compile->loop sucks a lot, especially if the bug
               | is hard or slow to trigger.
               | 
               | I think the main promise of an IDE is being integrated.
               | But maybe it could just be done with libraries.
        
               | dmz73 wrote:
               | Debugger might be a nice interface for prints in kernel.
               | It is also not usable with distributed systems where
               | prints are also not all that useful and you need some
               | kind of central logging. But developing a desktop
               | application without debugger is like writing code with a
               | line editor. It can be done but it is not very productive
               | (I can still remember editing BASIC programs one line at
               | the time).
        
             | GiorgioG wrote:
             | > Senior developers with 20 years of experience do not
             | "believe" in debuggers, IDEs or writing tests.
             | 
             | Speak for yourself. I've been paying for my own developer
             | tooling for 25+ years.
        
               | MattGaiser wrote:
               | What do you find to be worth purchasing?
        
         | pjmlp wrote:
         | Which is why I grew disappointed with FOSS and decided I was
         | happier working for the enterprise overlords, where such tools
         | are common.
         | 
         | It is incredible how so many devs don't want to pay for
         | tooling, yet expect people to pay them.
         | 
         | Here is an idea, what about being paid in the exact amount that
         | one is willing to pay for their tooling.
        
           | ris wrote:
           | > Here is an idea, what about being paid in the exact amount
           | that one is willing to pay for their tooling.
           | 
           | A better idea: what if all companies had to pay for _all_ the
           | software they expect to make money using, right down to the
           | metal? No leeching off linux for you. Also no gcc, llvm,
           | postgresql, mysql, python, ruby...
           | 
           | When people try introducing proprietary software into the
           | FOSS ecosystem, I find it _equally_ "incredible" how little
           | they acknowledge that most of their piddly 10k lines of
           | "magic" depends on the tens of millions of lines of code
           | underneath being written by people who decided to take the
           | other path.
           | 
           | It sounds like you're better off out of FOSS, but I can
           | guarantee your job is propped up by its existence, almost no
           | matter what you do.
        
         | maxrev17 wrote:
         | Developers are a tough market (I am one). They're also a pain
         | to manage, expensive, and still human(ish - if you're lucky)
         | :p, with all the ego and mistakes that come with the territory.
         | No-code for simple wiring/boilerplating once good enough/widely
         | adopted enough, will kick our asses. But then again on the
         | opposite side, in many cases business types bring mainly money
         | to the table, leaving the expensive nerds to do the rest, and
         | have fun with their RG machines in the process.
        
           | DistressedDrone wrote:
           | > No-code for simple wiring/boilerplating once good
           | enough/widely adopted enough, will kick our asses.
           | 
           | By "our asses" I assume you mean programmers'? I don't buy
           | it. People think coding is hard because they think thinking
           | is hard. No-code doesn't remove the latter part, it'll only
           | make things easier for programmers.
           | 
           | If anything it makes getting into programming easier, but
           | that means more programmers not fewer.
        
           | jude- wrote:
           | The history of abstracting the hardware as something easier
           | for people to understand is exactly the history of
           | programming languages.
           | 
           | Wake me up when someone writes a compiler that reliably turns
           | "Hello computer, please make me money" into an executable.
        
         | MattGaiser wrote:
         | > Programmers do not like to pay for their tooling.
         | 
         | Because it is too much work to convince the company that
         | spending $500 on JRebel to have me not go on Hacker News for 5
         | (and it turns into 15) minutes while the thing compiles (my
         | last company). I also have no real stake in whether the product
         | ships in one month or two so I am not paying for it myself.
         | 
         | To pay for tooling, productivity needs to be a priority. I have
         | never worked anywhere where productivity was discussed.
        
           | FroshKiller wrote:
           | On my team of three, my teammate and I had to create a
           | presentation for our project leader that he could share with
           | our director making a case for buying ReSharper licenses for
           | the two of us. Then of course our director declined to spend
           | the money. It was tedious and infuriating.
        
             | MattGaiser wrote:
             | You were probably paid more in salary to make that
             | presentation than those licenses cost, lol.
        
           | bcrosby95 wrote:
           | Some companies will care. Some won't. I mentioned something
           | like this to mine and they upgraded the build server in
           | response.
           | 
           | For Jetbrains products, if you enjoy them you can use your
           | personal license commercially. Your company just can't pay
           | for it or reimburse you for it. This is the route I go
           | because I use their products for personal projects too. For
           | me it's a no brainer at $150/year for their all-products
           | option (...for the 3rd year, 1st is $250, 2nd is $200).
        
             | XorNot wrote:
             | I do this as well - its pretty easy to justify a Jetbrains
             | Ultimate subscription for myself since it makes life so
             | much easier.
        
             | MattGaiser wrote:
             | I get this for free with an annual UX interview, but yes I
             | would pay for Jetbrains personally.
        
             | apple4ever wrote:
             | That is all way too much money.
             | 
             | If they want more adoption, they need to be under the $100
             | mark.
        
               | MattGaiser wrote:
               | That's the price for an all you can code subscription to
               | everything. Individual licenses are much cheaper.
        
         | initplus wrote:
         | Charging for developer tooling is really hard.
         | 
         | Over-monetizing their dev tooling was a significant contributor
         | to Microsoft's loss of dev mind-share over the last decade.
         | Free software took over the world because any kid in their
         | bedroom could download Linux/GCC/MySQL for free.
         | 
         | Want to work in .NET/MSVC? You just run into barriers (gimped
         | "express" versions, no free documentation etc.) Yes this has
         | changed now, but it's been a long time coming.
        
           | nhumrich wrote:
           | Similarly, I see people leaving jetbrains every day. VS Code
           | is getting better and better, and jetbrains tools are
           | becoming more and more niche. While jetbrains may always be
           | ahead, the gap is widening.
        
             | ftruzzi wrote:
             | VS code with Python is just frustratingly buggy. The only
             | reason I'm forced to use it is the WSL/remote integration.
             | Pycharm just works.
        
             | cratermoon wrote:
             | Every time I change developer tools it's because the one
             | I've been using has become bloated with add-ons as part of
             | the install. When the installer has options for choosing
             | packages, they aren't granular enough to be worthwhile. So
             | the IDE becomes a hinderance, using memory, CPU, and screen
             | real estate intrusively. JetBrains is there now, but it
             | still has better language support for my needs than
             | anything else more lightweight. I use VS Code for
             | everything unless I absolutely need to fire up JetBrains.
        
               | luckylion wrote:
               | > So the IDE becomes a hinderance, using memory, CPU, and
               | screen real estate intrusively.
               | 
               | The screen space used is highly configurable, but if it
               | wasn't, I'd agree. I don't care about memory or CPU at
               | all.
               | 
               | Maybe it's different for other languages, I mostly do PHP
               | + JS/HTML/CSS, but PHPStorm vs vscode (+ plugins for
               | both) is not even close, and PHPStorm makes me so much
               | more productive and takes so much annoyance out of my day
               | that investing in a beefier machine seems like a small
               | price to pay. I've easily made that money back once a
               | month just because I get more done.
               | 
               | I like vscode, but I pretty much exclusively use it as a
               | text editor and notepad.
        
           | jdsully wrote:
           | Not sure what you mean by "no free documentation" but even
           | when I worked there we just used MSDN's free online website
           | like everyone else. VS did cost $$ but not sure it was
           | overpriced, I'm still less productive on Linux than I was
           | with the real VS (code is nice but not the same). I'd pay for
           | a Linux version in a heartbeat.
           | 
           | The real reason Linux took over is Windows just didn't make a
           | good server. Even if you looked past the bloated footprint,
           | licensing was a nightmare just to figure out what you needed
           | to buy let alone the licensing costs themselves.
           | 
           | Even good dev tools can't make up for a bad platform.
        
             | horsemans wrote:
             | I believe by "no free documentation" they are referring to
             | the 90s, where MSDN was a subscription service, hence the
             | "long time coming" comment.
        
             | laurent92 wrote:
             | > I'd pay for a Linux version in a heartbeat
             | 
             | We should enter a world where people pay for open-source.
             | OSS has been fine, but they never had the correct resources
             | for marketing and UX. The should be a paywall for access to
             | repos, even if you could theoretically find the code
             | everywhere else, but ey, want the code updated
             | automatically? $5 per month. (I'm paying 1% revenue for OSS
             | but as long as it's not everyone, it doesn't make the
             | developers filthy rich and able to hire UX and marketers,
             | and that is what we need).
        
           | apple4ever wrote:
           | It is but also the price has something to do with it. They
           | are all hundreds of dollars.
        
         | dchichkov wrote:
         | There is also no VC money in this. Even mature areas like
         | static code analysis are a dead water.
         | 
         | There will be a renaissance in tooling, once AGI is realized ;)
        
         | jariel wrote:
         | Part 1 yes. Part 2 ... no.
         | 
         | 'No Code' generally have a different use case. For every
         | 'software project' there are probably 5x as many 'simpler
         | projects' that require a basic front/backend but not much
         | material CS knowledge, and that's where no-code shines.
         | 
         | 'No Code' should be a euphemism for 'Didn't Need Code In The
         | First Place'.
         | 
         | In other words, there's a legit level of abstraction there with
         | it's own world of tooling etc..
        
       | megameter wrote:
       | The kinds of tools like those in the article suffer from being
       | outside of the "main loop of coding".
       | 
       | What is the main loop? Well, as it's defined since the rise of
       | interactive computing, it's typing in the editor, compiling, then
       | testing and debugging.
       | 
       | Thus we optimize for:
       | 
       | 1. Typing code fast(or typing less code)
       | 
       | 2. Compiling code fast(by doing less compilation)
       | 
       | 3. Minimizing testing and debugging time(by narrowing our
       | definitions of testing to that which is easy to automate).
       | 
       | The main loop of coding is not software development. It does not
       | study the domain problem, define new benchmarks for success,
       | untangle communication issues, or refine principles of
       | development. It is a path to coder flow state, feature factoryism
       | and shipping the org chart. These things sort of resemble
       | development - a happy coder delivering features within a definite
       | architecture does serve someone at some point - but also manifest
       | dysfunction. Development failing is just shrugged off as bad
       | programming or bad management.
       | 
       | Tools like a Whyline or Reflexion models are not in the main
       | loop. They are an invitation to look carefully at whatever horror
       | has been wrought and address it at a deep level. But that really
       | needs a researching mindset, not a shipping one.
       | 
       | In practice, the available tools very slowly move in the
       | direction of the suggestions of research. There are improvements,
       | but they need projects that put together the pieces and make it a
       | goal from the language design(the main interface) upwards.
        
         | heavenlyblue wrote:
         | Whyline would not help you understand why a multiplication of
         | two million by million matrices gave a 0.7374920 in row 6478
         | column 474995.
        
           | dan-robertson wrote:
           | What would tell you that?
           | 
           | But also, what percentage of typical code is multiplying
           | massive matricies and what is doing simple arithmetic or data
           | transformation or rpcs?
        
       | klyrs wrote:
       | The common thread I see in this is people pouring their heart and
       | soul into a super awesome tool, and then moving on with their
       | lives. The tool was made for one version of one language, and the
       | world moves on, too. But then I think about the tools that I _do_
       | use.
       | 
       | Package distributions. Good word, I am not happy here. Still an
       | unsolved problem in general, some languages tackle it better than
       | others.
       | 
       | Testing frameworks. It's getting better. Big props to zig, for
       | including tests for free with comptime. But in general, it's
       | piles of code that somebody maintains for each language. Often,
       | there are multiple tools because the language devs don't pull
       | them into first-class components.
       | 
       | Debuggers. There's pretty good tools out there. They're clunky to
       | use, but there are multiple front ends that can handle multiple
       | languages, thanks to a common data format.
       | 
       | Code formatters. Props to zig, go, and rust for building these
       | in. But for most languages, it's DIY.
       | 
       | Common theme here: all of this stuff is fairly generic, but each
       | language tends to do its own thing. Tools aren't officially part
       | of the languages, neither are they generic. Except debuggers!
       | There's a common interface, DWARF support becomes a part of the
       | language, and (another key point) language devs use it -- so they
       | don't rot.
       | 
       | Developer tools can be magic, but unless they're generic, I
       | expect them all to rot.
       | 
       | Edit: Oh, I forgot documentation generation -- like debugging,
       | there's been some convergence around some generic tools and it's
       | pretty easy to build support into / on top of a language. And
       | newer languages use these tools internally to build their docs.
       | Great!
       | 
       | And how could I forget compilers! LLVM might save the day for
       | _all_ of this stuff (except versioning and distribution... ick).
       | Build a tool that can grok LLVM-IR, and you 've solved the
       | problem for most languages out there.
        
       | Lucasoato wrote:
       | Am I the only one who finds strange that now even a jetbrains IDE
       | plug in such as Material Design UI has a monthly subscription?
        
       | jldugger wrote:
       | > The reason that Reflexion Models are obscure while Mylyn is
       | among the most popular Eclipse plugins is quite literally because
       | Gail C. Murphy, creator of Reflexion Models, decided to go into
       | academia, while her student Mik Kersten, creator of Mylyn, went
       | into industry.
       | 
       | > Other fields of computer science don't seem to have such a
       | giant rift between the accomplishments of researchers and
       | practitioners.
       | 
       | I'm not sure that's actually true. I can't think of a field I've
       | studied where research generated software from a decade ago still
       | worked out of the box. If you write software for Java 7 that
       | proves your concept is feasible, the existence of Java 14 doesn't
       | disprove it, so nobody funds the research to port it. This is as
       | true for bioinformatics as compilers.
       | 
       | There's also a pretty strong hurdle in simply educating the
       | software development community. I suspected if you did a
       | sufficiently large poll of developers, less than 5 percent have
       | set a breakpoint and used a debugger in the past year. It seems
       | even renowned experts believe debuggers are not valuable[1]. And
       | I suspect at least half of people who claim proficiency in git
       | can't correctly explain the difference between the rebase and
       | merge commands.
       | 
       | And that, IMO, is the mystery we need to explain. If the
       | hypothesis is that weak but free tools are undercutting the
       | market for advanced tools, why don't developers learn and use the
       | tools freely available to them? Are the tools too hard to learn,
       | not powerful enough, or something else? I suspect there's a time
       | tradeoff going on -- learning how to use a tool takes time, so if
       | you believe you have a slow method that will solve the problem,
       | you might prefer it to investing in learning something new.
       | Especially outside the research lab, where there is uncertainty
       | that any given tool will actually solve the problem at hand, and
       | a researcher hasn't handcrafted a tutorial to make your assigned
       | task feasible.
       | 
       | [1]: https://lemire.me/blog/2016/06/21/i-do-not-use-a-debugger/
        
       | stevage wrote:
       | I think my lesson here is that Java is a terrible language for
       | software longevity.
        
         | ptx wrote:
         | If the program was written to manipulate LLVM bitcode instead
         | of Java bytecode it would have fared even worse.
         | 
         | It would be interesting to know the specifics of the syntactic
         | incompatibilities in the Java 1.4 program, since Java is
         | usually extremely conservative when it comes to syntactic
         | changes.
        
       | softwaredoug wrote:
       | Programming language interpreters are tools. How do Python, Node
       | and Ruby survive? How about the core tooling? Are the devs well
       | paid to work on this? Do they do it just because they love it?
       | How do the foundations around these tools get money to support
       | their work?
        
       | [deleted]
        
       | The_rationalist wrote:
       | One kind of magic kind of tool that I have never tested is time
       | travel/omniscient debugging E.g
       | https://undo.io/solutions/products/java/
        
       | 6gvONxR4sf7o wrote:
       | It's a shame there aren't too many cross language tools. You
       | build your clever new tool for Java and python devs get it for
       | free. As I understand it, language servers are an attempt to do
       | some of that. I wonder what extent that line of thinking applies
       | to more sophisticated things like OP is talking about. Or are the
       | commonalities between languages only limited to surface level
       | magic?
        
         | WrtCdEvrydy wrote:
         | We've done this now with JSON APIs... even most libraries now
         | just a JSON API and then give you a language binding.
        
       | IncludeSecurity wrote:
       | On the security assessment side of tech we face similar problems
       | that these types of awesome dev tools could help us solve.
       | 
       | Our clients either: 1) Have no docs (48%) 2) Have
       | outdated/incorrect docs (48%) 3) Have correct and updated docs
       | (2%)
       | 
       | Tools to understand source code/app architecture and increase
       | understanding would make application security easier since there
       | would be less incorrect assumptions and those doing security
       | assessments would be much more effective and efficient in their
       | work.
        
       | zlynx wrote:
       | These tools are mostly useless because they take time to discover
       | and learn to use. In the meantime you could have solved the
       | problem. Developers who waste all their time searching for a
       | magic tool are not productive.
       | 
       | They're also often not integrated into whatever environment is in
       | use. Which means the developer has to be sure to save their
       | files, open this other tool, which has often not been updated to
       | new standards, wait for it to load their JAR files or whatever,
       | and then use a ten year old interface to use the "magic".
        
       | geophile wrote:
       | As many on this discussion have noted, JetBrains tools not only
       | don't collect dust, they are widely used, and the company is
       | profitable. The company is privately held. I hear that they are
       | constantly turning down investments. This proves 1) there _is_
       | money in tools; 2) The VCs who routinely say  "there is no money
       | in tools" are insufficiently imaginitive, which is not surprising
       | if you've spent any time with VCs.
       | 
       | Why is JetBrains so successful where others have failed? A few
       | thoughts:
       | 
       | - Intellij was released in 2001. Eclipse was a close competitor
       | for a while, which made no sense to me. Intellij just worked, and
       | it was intuitive. I found Eclipse to be uglier, slower, flakier,
       | crashier, and far less intuitive. Haven't heard of it in years.
       | 
       | - It was always the case that at least some version of Jetbrains
       | tools are zero cost. I got hooked on it early on. I have been
       | using emacs far longer, and yes, while a sufficiently dedicated
       | developer can make emacs behave like an IDE, it really isn't one.
       | Intellij just worked out of the box. In the preceding two
       | decades, there were high-end development tools available (Lisp
       | machines and their all-encompassing environments, Lucid for C++,
       | Purify for C/C++ memory problems, Atria, Rational. Trivia: Did
       | you know that Purify was founded by Reed Hastings, the guy who
       | went on to found Netflix?) The tools were expensive, and I don't
       | think there were free versions. These companies all went out of
       | business, or were acquired.
       | 
       | - Jetbrains is incredibly focused. Having been through several
       | VC-funded technology companies, I can easily see how VC brain
       | farts can destroy a company's focus. (This dynamic isn't entirely
       | the VCs fault. Founders stretch the truth to get funded, and then
       | VCs insist on the fairy tales they've been told.)
       | 
       | - Jetbrains has expanded to other languages, and other kinds of
       | tools (besides just refactoring Java code). The number of
       | languages, technologies, and frameworks that they support is just
       | mind-boggling.
       | 
       | - Consistent focus on improving developer's lives, through steady
       | improvements in functionality, performance, and quality, over 20
       | years at this point. They started far ahead and have widened the
       | gap.
       | 
       | OPs tools look useful. I suspect they would attract a much wider
       | audience if made available through Jetbrains products.
        
         | cortesoft wrote:
         | I always have this weird sensation when people talk about
         | Jetbrains.... I feel like some in some circles, usage of
         | Jetbrains tools is ubiquitous, while in others it is unheard
         | of. I have been a professional software developer for 15 years,
         | and have never seen the tools in use anywhere I work. But I
         | read things on the internet where people will say things like
         | "well, every ruby developer uses Jetbrain" and seem to not even
         | question this.... weird how circles like this form.
        
           | alde wrote:
           | Yes, odd. Data point: me and most of my SE friends/coworkers
           | pay for JetBrains IDEs (I was pretty deep into emacs and vim
           | for many years prior to switching).
        
       | mikewarot wrote:
       | I found the ideas embedded in the examples to be quite good
       | ideas, if we can get them instantiated.
        
       | uyt wrote:
       | I think the "WhyLine" idea is already mainstream, at least for
       | web UI development.
       | 
       | I remember back in the days, if you wanted to know "why" a html
       | is the way it is, you just had to change/delete random parts of
       | it and see what breaks. After firebug was introduced (mid
       | 2000s?), you can just right click to inspect element and it will
       | highlight the html element responsible for it.
       | 
       | Nowadays, I am reasonably happy with the type of questions that
       | the chrome dev tools can answer with just a few clicks. Why did
       | some network request fire? There's an initiator column that links
       | to the source code. Why did this frame take so long to render?
       | There's a flame graph where each bar links to source code. And
       | there are plenty of extensions you can install to help with the
       | particular level of abstraction you're debugging at (for example
       | inspect React components instead of html elements).
        
       | [deleted]
        
       ___________________________________________________________________
       (page generated 2021-03-28 23:00 UTC)