87 karma · joined October 13, 2022
You get a task, how does it interact with all other invariants? What are the implications on data flow, processing and user workflows? You can rarely answer those questions beforehand, you step on them during programming as the formal language forces you to take them into account sooner or later.
If you outsource this knowledge-building you’re losing the steering ability when stuff hits the fan. You lose the ability to navigate the code properly in order to identify bug or violations of invariants.
LLM optimize locally, that’s their nature. Invariants are often implicitly scattered around the whole code base. Explaining them to the LLM is much more tedious than just to write the code in the first place. At least for me as I have much better expression-ability in Code than in natural language when it comes to describing any form of computation.
I care alot about software and code. I write without AI, code and prose. Yet I would say it is useful for context sensitive search and autocomplete on steroids. I wonder why it should be more? It’s the intellisense I always wanted - just not worth a trillion I'd say.
And another point: if your coworkers do their job exclusively by vibing, then where’s the point of producing software? Your competitors can recreate it easily. There’s no value in AI generated artifacts and so there’s no value in operating the AI.
Just write the damn code
If the maintenance and implementation can be done by an LLM, I see no logical reason to keep a human employed for lower work.
I'm not kidding - I am a freelancer and got unwanted calls from an accounting service company. Thanks to the german data regulations they had to tell me where they got my contact data from and it was a broker which got the data directly from a freelancer project platform.
There are still plenty of job opportunities out there, but lots of HR teams are overwhelmed by the amount of candidates received from the job platforms and recruiters. Besides the global economy cooling, we also see job platforms becoming more and more useless for candidates and employers at the same time.
My suggestion is to go the conventional way of application: as a freelancer that means acquisition by cold/warm calling and as a job seeker I recommend researching companies and contacting the people there responsible for staff - team managers, internal recruiters, CTOs or even the CEO
Just finishing a software project takes at least 80% of time and money besides the other 80% already done. Sounds funny, but I want to make it clear that effort and time of projects are almost always extremely underestimated.
If you need funding, the best and most reliable way is to have a customer willing to pay for development. In your case try to use contacts to hospitals and simply ask them if they are interested. When you hit a spot (and the right person) you might be surprised how easy money comes when someone needs or wants something…
It is obvious that he doesn’t have experience with long living systems, behause this approach leads to inflexible software. For example: sometimes memoization of react hook returns is sometimes good, but never always. He also values processes much over individuals - well we had a manifesto against such views…
Future proofing, assembly-line mentality, knows-it-all thinking - I feel sorry for those he manages and the company when they’ll become unable to add features at all.
In web or business systems it works well for some(!) parts. You just shouldn’t do everything that way - but often people get too exited about a solution and then they tend to overdo it and apply it everywhere, even when not appropriate.
Always chose the golden middle path and apply patterns where they fit well.
I advised to use Go and most developers were interested and even enthusiastic about it. We proved Go introduction by using it for simulators and testing. But finally the tech lead said "we will never ship anything different than C++ written applications".
My current client also works in embedded tech, but I proposed a polyglot approach and architecture. We ship apps in Go, Rust, C, C++ and even Fortran. Any developer can pick up any language as long as it compiles to Armhf. No one has a problem reading and at least maintaining any code.
There should only be technical limitations and constraints to force down your fellow developers.
Frameworks are a different topic. Web frameworks come and go, and most Angular shops I know became desperate legacy plumbing shops. Only use frameworks that you can replace easily or are willing and capable to maintain yourself.
Hard to tell what the future holds, but those technologies will be around for longer. Adoption within the industry is much slower that you’d anticipate.
Personally I’d go with the GoX-Light-Stack (just made that up): Go + SQLite backend and HTMX frontend.
Zod surely is slow. I never imagined it to be fast. It has multiple layers of abstraction and does lots of checks. A custom solution giving the same level of detailed type safety wouldn’t be fast either.
Software just got very complex. Data became larger. And sometimes you better don’t implement abstractions to reach at least some efficiency with all these petabytes of 8k cat pictures and tiktoks…
If I’m free to decide the tech stack it is HTMX with a backend technology that suits the business case. For web related work I usually choose Node.js and fastify without template engine. It’s fast and easy going.
In hindsight it was very similar to the dotcom boom.
Now as interest rates raise, all those funny projects get canceled therefor people getting laid off.
As a freelancer I have trouble now closing any contract.
However I also realized that it’s not every sector that is doomed. Only web seems dead right now. I changed my business model aiming for embedded and industry software, especially C++.
Freelancer from Germany here. While I don’t know much about the markets outside of the EU I hope I might still have some helpful advice. First things first: make sure to have enough saved cash to endure at least 6 months without income. When money comes in, do keep these savings or refill them.
German projects usually are scheduled for 6 up to 12 months, and are mostly handed over by consultancy and personell agencies. So my direct clients are those agencies - whom I send my invoices to. Normally I become part of the developer team, like an employee but expectations are higher. Freelancers are not only seen as developers with short ramp up time, but experts who bring new knowledge into the companies. Often you’re expected to fulfill a certain goal, like introducing a new framework into their legacy codebase or implement a service or infrastructure. Also interim positions are given, like being the teams senior when the former one quit, until a new permanent can be found.
In the longer run you should specialize yourself. I don’t mean frameworks with that, but fields of industry. A jack-of-trades will receive fewer offers from my experience than a high value specialist (Cobol someone…?)
You need to develop a business mindset. A freelancer is a business, so all the same rules apply that apply to startups and larger cooperations.
Do not go cheap. When you start selling low, people expect low quality and then negotiations for discounts start and sooner or later you work extremely much for a terrible income. Check statistics about software business hourly rates in your area and place yourself around a sensible median.
Know yourself or get to know yourself better. What is your optimal work time? Do you like being in the office with the other members or are you comfortable at home?
Do not overwork yourself. A burn out can easily become an existential threat.
Learn to say no. Do not sign a project that doesn’t pay enough or bores you. Check your clients financial data beforehand when available.
Last but not least, try to keep in contact with the managers and coworkers you liked.
They fear miscommunication and the administrative work connected to non-German employees.
From my point of view there is also a skill-missmatch in Germany. While firms look for the usual most modern tech stacks, workforce is often conservative, staying years or even decades at one company with outdated technology. Hiring non-EU citizens is almost impossible because of the bureaucracy.
So, in Germany the situation is complicated and different from the US.
Finally, while there are still places with low web usage, you need to get used to it
Without referring to the article, my advice is to set hard quality criteria for his work. Also you could insist on test coverage and write acceptance criteria for his tasks. However, I try to never judge anyone easily and I believe even the most stubborn person can be helped to improve. If you could show him what he lacks - in a nice way of course - you might be surprised how much people can improve and advance.
I view the "Beginner Expert" not as a failure of character but more like a long term depressive episode