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.
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.
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.
Usually when someone says "touch typing" they refer to the standard "home row" approach, using all fingers. I could have made that more explicit.
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.
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 :)
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 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
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.
So far i've not felt i could get software to do the modal editing i speak of reliably in all of my environments. I'm on NixOS right now, and i didn't want to manage the software. It definitely is interesting though!
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.
Besides, I don't blame him, he was performing the job he was paid for.
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.
It feels like cheating, but I put my imposter syndrome in a trash bin years ago.
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.
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 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.
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.)
It's even worse. Copilot encourages boilerplate and poor abstraction by making it cheaper.
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.
I think there's utility there, but the execution isn't quite right with me for encouraging the right behaviours.
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?
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.
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?
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.
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?
I think many companies are already in that exact scenario.
Messy code should be more costly to analyze and test.
But how do you tell the machine what your problem is? It's just another abstraction, a bit like manual milling vs CAM.
Conceptually that is the overall goal.
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
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.
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.
(Still learn to renovate as it is an awesome skill)
It still amazes me when people doubt or underestimate what can happen in future tech.
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!