Hacker News new | ask | show | jobs
by isoprophlex 1775 days ago
Morally, I hope the FSF wins.

Otherwise, I hope copilot makes it big. It'll create a new generation of developers that are dependent on these tools to do their work. Also it'll lower the barrier for non-software engineers to participate in writing code. SO copy pasting on steroids.

The resulting mediocre spaghetti will break at record-breaking rates; cleaning up the mess will be highly lucrative!

15 comments

Exactly.

As a freelancer, every time a client decides for a cheaper alternative, I make very clear I would be delighted to work with them in the future anyway. It rarely fails, one or more years later, the clients calls me back because their cheap alternative turned out to suck and be expensive eventually. Last month, a client from Luxembourg called after 6 years of total silence. They still had me in their listing. 3 years ago, one called me because 2 years prior, the 50k quote they rejected from me turned into a 400K bill from my competitor, and still no release yet.

My rates have been steadily increasing for years thanks to this. Before, geeks were at a disadvantage because people didn't know better, and teams with a good marketing would destroy us. But now, they have been burned so many times. And it pays because more and more devs coming to the market are becoming dependent on their tooling. Now, more often than not, I work with teams that have been copy/pasting git commands not knowing what they do, that have never, ever looked the source code of their framework or don't know how to use a debugger. The HN bubbles tends to blind us to the reality of the corporate world.

Yesterday I did a deployment, but was not allowed to touch the machine. Instead, they made me call a guy sharing a screen of a Vista machine, while he was sshing prod using cmd.exe, and I had to dictate him the instructions to debug the deployment on their custom linux setup. A near retired sysadmin that couldn't type with 10 fingers, pressing 30 times the up arrow to find a bash command in the history every time. He could click on WinSCP very well though.

This 20 minutes job turned into an afternoon of billing.

Though I suppose that's what I look like as a Python expert to an old timer from the 80s that can code in assembly, debug using strace and understand L1 cache :)

People are scared we are going to get automatized by AI.

I am preparing for the most lucrative decade I ever worked in.

> Near retired sysadmin that couldn't type with 10 fingers.

Hey, I feel called out on this. I type with 2/3 fingers and I'm quite fast even if not like a full fledged 10 fingers typist. At my age I don't think I will ever learn typing with 10 fingers, but I think I don't need it either.

I think you should at least give it a go.

There's a fluency effect that happens when you're able to touch type without looking, similar to when you master a language enough to speak without thinking. You become more efficient because you dissolve the barrier between your thoughts and their expression.

I know there are lots of arguments intending to counter the importance of touch-typing in programming ("most of my time is spent thinking"), but I think those miss the point. Faster typing is just as valuable whether you're programming, or writing an email, or responding to a message.

Where in their reply did it say they weren't a touch typist? They most likely touch type with 2-3 fingers. Not that shocking if you learned to use computers without typing classes.
While I guess it's theoretically possible to memorize the positions of all the keys using only a few fingers (so that you're typing purely by touch, without looking), I haven't ever seen that in the field.

Usually when someone says "touch typing" they refer to the standard "home row" approach, using all fingers. I could have made that more explicit.

Well I do know all the keys position and I can write without looking at the keyboard, typing with just 2 fingers. (I just switched keyboard last week from a 70% to a 100% so I'm getting used to it)
I type at roughly 150-160wpm depending on what I'm typing and for the length I'm typing (this range is for 30s and 60s tests).

I touch type.

I use 4 fingers on my left hand and 3 fingers on my right to type. (This is counting thumbs on both hands)

I've never really understood the home row because if my hands are on the keyboard I'm actively typing (or playing video games), in which case all my fingers are busy actually doing things, so I basically just put my hands down where I'm going to start typing anyway. When I'm actively typing I'm not wasting time moving my hands back to the home row, either.

Do it. After 20 years of coding and thinking I was fast I was embarrassed into it after watching a teenager type faster than me (they had just completed a typing course). It won't speed up your programming but it will make your communication and documentation a lot smoother. It really only takes a few weeks of forcing yourself to touch type for emails etc. (Don't start with programming, it will be too frustrating).
Maybe it was just because they were a teenager. I'm not far past teenager myself, and I started typing before getting typing classes in school. On random excerpts (typeracer.com) I get 80-100wpm with 98% accuracy, typing with about 4 fingers.
Haha! I have 10 fingers, 5 of them almost always near my chin as part of a misoptimized supporting structure, 4 of the rest 5 usually spend most of their time holding/transporting a mug, leaving only 1 left .... the most busy and important one of course: I use it to poke the mouse/touchpad so the screen stays on.

Only during the most rare occasion, those 10 fingers will give up their self-designated posts and come to this massive array of buttons to do their exercise of pressing stuff, something like "su apt install", "dock run", "cd.." etc.

I'd say type fast != work fast, so I don't mind if someone is a slow button presser :)

The curse of having access to a computer years before your first typing class and never being able to un-learn your self-taught method. I know the pain.
My self-taught typing method uses “whichever finger is currently closest to the relevant key”, and has a lot of hand movement – might have something to do with my being a pianist.
Honestly if I had taken a typing class, I would probably have carpel tunnel by now. My hands attack the keyboard at an angle over the left shift/ctrl and right arrow keys. Typists, at least when I was in school, are taught to attack straight up through the ZXC and M,. keys, which keep your wrists at a bad angle.
I made a conscious effort to unlearn bad habits in my 20s and it was pretty easy. I definitely press some keys with the wrong fingers, though. (1 is especially annoying to press with your pinky, so I don't do it.)
I’ve met hunt-and-peckers who can rival my 90wpm touch-typing (and I use the term loosely - I use all 10 fingers and don’t need to look at the keyboard, but also don’t keep them on the home row nor do I follow any formal typing methodology) . Never underestimate the speed that a lot of practice can give.
Have you ever taken the plunge though and really tried to go through with learning touch typing? You may not find it impossible after all. Then again typing isn’t really a huge bottleneck when it comes to coding.
I find touch typing with all fingers is overrated.

I type with only two/three fingers. I don't hunt and peck, but I'm no touch typist either. I can type faster just with my index fingers than some people with all of their fingers.

That said, typing speed is not critical. I mean, if you're really slow I guess it matters, but it's no measure of the quality of your work. The brain is the bottleneck here, and all the slowness happens in the design/troubleshoot/think space anyway.

I type in this weird hybrid .. thing. I find it much more comfortable, though more error prone, than traditional home-row on traditional keyboards.

I use nearly all fingers, but where i really suffer is that i find key-combinations, notably alt+ to be really awkward because my hands are at a steep angle relative to the straight keyboard.

I live in Kakoune (vim-like) so "touch typing" is my bread and butter, but home-row just feels so bad to me.

I keep meaning to try a split keyboard with home-row. I suspect that's the root of my issue, and that my odd typing pattern is a result of trying to manually replicate a split keyboard. /shrug

I can recommend a small split ortholinear keyboard. I built one as a weekend project and it was pretty fun, doable with basic microcontroller and solder skills (except for the ~50 SMD LEDs which I couldn’t be bothered to do). Pretty happy with it, it’s comfortable and I do feel that I type better than on a regular keyboard. You can buy kits containing everything you need, I got this one:

https://mechboards.co.uk/shop/kits/helidox-corne-kit/#case

With small keyboards, you’re trading off physical distance between keys for having to press more buttons simultaneously. Might fix your problems with reaching key combinations, but the combinations themselves do become more complicated as well.

I did. Have probably put ~50 hours total into (free) typing courses during the last year or so.

I'm still painfully slow. Maybe 50wpm tops for natural language, embarrassingly much less for programming.

Thing is, I'm now even slower than I was before "taking the plunge", and I can't even go back to my old loose method I've nurtured for 20 years!

On the flipside, as you mentioned, typing in itself isn't a huge bottleneck, especially with autocomplete, and I'm much faster navigating the ide. So maybe it's a net positive after all.

I use the imagery to create a visual atmosphere rather than aiming at calling out a particular demographic.

Besides, I don't blame him, he was performing the job he was paid for.

Hey, whatever works. If you do want to make the jump though, my suggestion would be to get a keyboard with no key labels (like a Das Keyboard), you'll learn touch typing pretty quick. Unless you are somehow touch typing with 2-3 fingers, which in that case hats off to you!
Just rearrange keys on your existing keyboard.
>Now, more often than not, I work with teams that have been copy/pasting git commands not knowing what they do, that have never, ever looked the source code of their framework or don't know how to use a debugger.

Thank you for reminding me that it's about time for my yearly reread of Pro Git. It's amazing how many people look at you like you're a wizard when you just...read the documentation.

Or can enter the proper key words on Google.

It feels like cheating, but I put my imposter syndrome in a trash bin years ago.

It is amazing to see how so many so-called programmers can make a living without even reading the freaking documentation. And when I cide the docs on some topic they look at me as if I was performing a magic trick.
You did do a magic trick. You found docs complete enough to cite.
This has also become my strategy lately. I got fed up with price wars by tons of cheaper software dev shops. I am Indian and have run them myself, but I am an engineer first - the really curious kind. I can not do price war, I do not like writing casual code just for bucks. So I started keeping just good relations with anyone who is attracted to "low cost development shop". Eventually I started seeing myself helping multiple founders with "low cost teams". I think gradually they will start billing me to guide these low cost teams. (Although that might not be happen since I am also planning to go into the founder mode).
And it's a never ending cycle. I get older but the CTOs stay the same age. They kick out the old IT, hire some foreign Sales Force squad to rebuild everything. It ends up costing 5 years worth of salary of the old team in just 1 year. Nothing ever gets past the finish line and the existing software just stays in place. CTO moves on with millions in his pocket, owners are left with nothing and end up trying to get the old team back to maintain the existing software. A few years later, another hotshot shows up.
Reminds me of the offshoring craze about a decade ago. Everyone was worried that there would be few software jobs left in America. Now it seems every company is trying to re-onshore development and desperately searching for people and driving up wages
It sounds like your customer is dealing with low maturity staff and no amount of consultation is going to fix that even if they decided to pickup co-pilot which is also unlikely if they haven't picked up ctrl-r.
> The resulting mediocre spaghetti will break at record-breaking rates; cleaning up the mess will be highly lucrative!

Maybe, maybe not though. From the perspective of a non-tech enterprise organisation we’ve moved to more and more standardised software that is “good-enough” to avoid dealing with the delays, going over budget, not quite what we wanted and expensive support of specialised software companies.

Office365 has basically replaced half our software suite, and while we do still by some extensions for them from 3rd party companies, Microsoft is simply getting more and more of our business by simply being good enough at a low enough cost.

I’m not going down on some conspiracy path here by the way. If anything, Microsoft is simply using this project to get free research for their Azure Automation services that are currently taking over all the RPA business from their much more expensive competitors. This needs janitors, but not well paid ones.

Yes this happens all the time the client asks for the world but really just wanted an improvement.

The client has a problem and asks us for a solution. We suggest a simple cost effective solution, client insists on custom software developed to their spec they have "perfected". Client lists all their nice to haves as must haves so they get their moneys worth, not realising I just charge more for more work.

The software is delivered to spec, then the client realises that their spec doesn't work in the real world because they just assumed the best and forgot about edge cases.

Non-tech companies just don't get tech, instead of seeing building software like building a house they view it more like a wizard does magic then a website appears.

Funnily enough I just used Copilot to write a reasonably huge PR (it did like 95% of the work), which was indeed mostly a copy paste job (the whole library is a SIMD library with lots of similarities between the different types and operations) and Copilot made zero mistakes when it didn't suggest something completely different whereas the human copy pasted code that was already in there had tons of mistakes that I noticed as I went through the library. So interestingly when it comes to code that is mostly copy paste, but requires some subtle changes here and there (based on the type and operation, ...), Copilot is much better at it than humans.
That sounds like an ad.

Funnily enough the only thing you can say is that you can copy and paste more successfully with copiolot than someone else who is unnamed and possibly unknown.

The truth of it, whatever that may be will shake out.

Interesting. Isn't that a good fit for macros though? Particularly for the future maintainers sake. With macros, future maintainers will only need to tweak macro invocations or macro bodies, instead of having to do a huge copy paste job all over again
And then you have to waste couple of hours to do the macro which might or might not be used in the future.
Even when I have to look up all the weird syntax for a macro_rules! macro, they take like 10 minutes, tops. If you're taking much longer than that, you're probably trying something too ambitious: it should either be proper code generation (in Rust, a build script or proc macro) or a const fn, or a trait and proper generics.

C's even easier; you just write the C code with parens around everything, then run it through cpp, then correct any divergences from the expected code. (It does take a bit longer, though, because the compiler waits until the last minute to shout at you if you make a syntax error.)

I can see complicated C++ templates taking hours, but they're not really macros. (They're probably the correct tool for this, though.)

possibly, I know in some industries you can't use macros due to security audits
> The resulting mediocre spaghetti will break at record-breaking rates

It's even worse. Copilot encourages boilerplate and poor abstraction by making it cheaper.

>Otherwise, I hope copilot makes it big. It'll create a new generation of developers that are dependent on these tools to do their work.

There's definitely other scenarios, like my preferred one of Copilot being legal itself but devs being responsible for using code generated from it, same as if they were using a more direct copy-paste or search tool.

How could they, when they don't know the origin of the code? Copilot would have to provide them with all the licenses of all of the projects that went into producing that particular snippet of code, and I'm pretty sure that's impossible beyond just listing every license every time.
Well, it's all from public repos that you can search and I imagine they can also include a tool that analyses how close to which repos the produced code is so you can check for yourself.
Knowing why and understanding how or why a machine learning algorithm did something is a much harder or just impossible.
I hope so, the pay rate for cleaning up per line of code better match per line of coke. Otherwise my sanity can't recharge.
Morals/Ethics of code ownership aside, I think there's an interesting challenge there in developing a tool like Copilot but without developers falling into the blind "copy-paste" mode.

I think there's utility there, but the execution isn't quite right with me for encouraging the right behaviours.

> Also it'll lower the barrier for non-software engineers to participate in writing code. SO copy pasting on steroids.

It always amazes me how many people think in the future every one will know how to code, why? Every one has a car but not every one knows how to build a car, and why would they want to?

I agree 100%. I can't wait to hear the cries of failing businesses because their no-code / low code developers can no longer understand how the system works. And while waiting I'm broadening my knowledge into the field of devops too, so I can understand the whole stack from top to bottom.

That being said, if you are a reasonably skilled coder, Copilot can help you __a lot__. I've started using it a few weeks ago and it typed __a lot__ for me. The sheer amount of time I don't have to spend typing amounts to hours / week once you get up to speed with the tech.

People said the same from GUI webtools, look where are we now. I think co-pilot works for some stages, cases, but for well established software projects we will be required a different extra.
From someone who has never worked professionally with web development: where are we now?

I tried my hand at Dreamweaver back in the day (approx. 2005) and didn't like what it generated. I've written a few pages manually (first when learning HTML ca 2004, then for a personal website in 2014) and it felt much nicer.

I have made Windows applications with GUIs as part of my job and for that I've mainly used WPF written as a mix of XAML and C#, written by hand and inspected in the editor. There are graphical tools, but I've mostly found it more efficient to write what you mean directly.

But how are things actually done in the web development business, nowadays?

Wix and Shopify are both multi billion dollar companies that give casual users access to websites that would previously require dedicated devs. This is done via elaborate WYSIWYG website editing. There used to be decent business in low-end web dev, banging out high volumes of simple websites and storefronts - but that market has been in large part taken over by WYSIWYG tools.
There's still decent business in sharecropping Wix/Shopify/Salesforce/etc. Very quickly companies find that the out of the box stuff doesn't do 100% of what they want, so they need to pay to get that last bit and develop custom components..which yeah, anyone can then drag onto the appropriate pages, instead of having to pay someone who happens to know how to FTP things onto a server.
Yes, but I meant as development not as final customer. I agree that even those examples don't affect real software projects.
> But how are things actually done in the web development business, nowadays?

We still write HTML (ish), but then we compile it into JavaScript functions, which then generate HTML again on the client.

I'm being slightly facetious, but that's basically what a modern web app written with Vue/React/Svelte/Angular does.

You basically open your Terminal, run dozens of NPM commands and install dozens of libs and start writing javascript, css and jsx. Then you run commands to build and deploy.
By hand but there's a lot of ready-made components (React).
And developers use zillions of libraries too. In the end devs write less code.
This is like a dentist giving out extra sugary candy.
I like the way you think
Nothing that another ANN can't solve. Humans need not program
I guess it's tongue-in-cheek. But you made me imagine the scenario for a movie : once humans start going down that rabbit hole, code becomes more and more like nature : no over-arching "design" that can be reasoned about, just a sprawling mess of stochastically created spagetti that has been progressively patched.
>code becomes more and more like nature : no over-arching "design" that can be reasoned about, just a sprawling mess of stochastically created spagetti that has been progressively patched

If one were to "decompile" an existing artificial neural network model, is this basically what it'd look like inside? Or is it too crude of an analogy / a category mistake?

> no over-arching "design" that can be reasoned about, just a sprawling mess of stochastically created spagetti that has been progressively patched.

I think many companies are already in that exact scenario.

If I wasn’t laughing I’d be crying.
Will machines even need clean code? The benefit to a human of clean code is readability. The all-coder will need no such luxuries.
What happens when one all-coder needs to understand or debug another all-coder's code? The definition of "readable" may change, but I imagine there would still be ways of organizing the code that would make it easier or harder. The halting problem would seem to imply that, for any given all-coder, it's possible to obfuscate hard enough to frustrate that all-coder.
Science. The universe has no source code for us to read, so we tinker and investigate, take our best guess, see if it holds up under the test cases we're capable of running, and update that guess whenever we encounter edge cases the last guess can't explain. We've gotten quite far without perfect understanding.
I have a feeling that the distribution of complexity in the laws of the universe is likely to be very, very different from the distribution of complexity in code created by an extremely intelligent being (with machinelike memory) that isn't optimizing for simplicity.
Verifiability. I have no source for this, but on a basic level it makes sense that a clean implementation will be easier to verify over an ad hoc spaghetti code doing the same thing.
Clean code means fewer states to test to know if it's doing the right thing.

Messy code should be more costly to analyze and test.

>Humans need not program

But how do you tell the machine what your problem is? It's just another abstraction, a bit like manual milling vs CAM.

The machine decides your problem for you
Ah yeah the famous "Facebook Factor" ;)
This is a stepping stone for replacing developers all together.

Conceptually that is the overall goal.

I fully agree, yet I see this tool as a mere prelude to a world where we, developers, we're gonna be obsolete. At first, the AI will produce some mess and fixing it would be lucrative. In the long run, the AI will create software based on paradigms we human couldn't understand.

I'm in the industry since 20 years and gradually at the spare time I'm learning skills in house renovation. I think in the next 10-15 years I'll loose my job as software developer do to AI and will resort to some manual labor. Hoping I'd survive till retirement

I find that very unlikely. I think the result will be similar to what has happened to the electronics industry.

For those who aren’t aware, PCB design used to be an automated task, done by software with minor tweaks. The thing is, complexity had a positive payoff, so soon we had trained technicians doing layout. Right now most PCB layout require so much technical knowledge most people working in layout are engineers with masters degree.

Of course there’s also a lot of cheap electronics where complexity doesn’t payoff and cutting development cost it’s what matters, but it’s not most of the market.

As long as you keep learning and improving, you are likely to see an increase of demand, not a decrease, although the job will be quite different.

I had to help debug an autorouted PCB about 20 years ago, the traces between the CPU and SDRAM went three times round the board.
Now that you mention it. I have a Masters in electronics, and I did a lot of layouting in the last 3 years. Not that big or complicated, but it is becoming a significant portion of my engineering time. It is perceived to be cheaper to just do the layouting in house because our system is small and benefit from fast iteration.
No way, to replace software engineers one would have to have GAI, which we are lightyears away from.

The hard part of code writing is not the “transform this logic to code”, but to come up with the logic in the first place, which is pretty much transform this and that requirement into logic first. Which does often need domain specific knowledge, and possibly interaction with the client.

Requirement logic and interaction with customer to shape it is the domain of the Business Analyst (or similar position). I can imagine that BAs in our company, equipped with a slightly better version of the Copilot, could prepare a lot of code. BAs in our company have limited knowledge of coding. Yet I'm quite certain that they are capable of selecting the right implementation proposed by the Copilot, in most cases. Without resorting to developer's help, they would just click to prepare are routine. Like automated checkouts in the supermarkets, they don't make the checkout jobs disappear completely, but they're substantially reducing the need for them.
If your reality of not needing software developers comes true, so will the reality of robots will do all the manual labour.

(Still learn to renovate as it is an awesome skill)

Of course the robots will take all the manual labor over. However, the machines will take IT jobs much faster. Most likely one or two decades sooner.
+1 Sorry you were downvoted for a reasonable position. I would like to predict that most knowledge work will be automated, including understanding business needs and doing designs, coding, and maintenance. However, I think that we will reach the same conclusion with AGI but in ways we can’t predict right now. Just deep learning won’t get us there on its own but that is a different conversation.

It still amazes me when people doubt or underestimate what can happen in future tech.

I think a lot of people massively overestimate the current state of AI. Unless there is some fundamental breakthrough in computation, I just don’t see how complex knowledge based jobs will be replaced any time soon. Maybe in 50 years. Maybe.
I don't really understand this point of view. The day demand for software developers diminishes, but demand for manual laborers remains, I will start to automate manual labor.
Automating house renovation or even house building is a challenge which will take a few decades more. Some trouble of bricklayer automation described in today's HN: https://constructionphysics.substack.com/p/where-are-the-rob...