John Ahlroos

Human generated ramblings in the fediverse

Okay, click-bait headline. Sorry.

With ChatGPT4 coming out I can hear murmurs from many people, mostly business oriented, that this is going to save us huge costs as we will be able to automate things.

For many non-technical people machine learning (common speak AI) looks like the answer to many difficult discussions about finding developers to work on issues that on the outside seem easy.

How hard can it be to add that one button and field to the simple form? Lets just ask ChatGPT how to do it and we don´t have to hire that developer that costs too much!

Here is my prediction how many business people will see this go:

1) Business person (read CxO/Manager) asks ChatGPT (or similar) how to solve a technical problem based on a business requirement. They get a round-robin answer that sounds promising out. 2) Business person Copy & Paste this description into a Jira ticket as a Todo 3) Hire a consultant from from a cheap labor country or intern to do the work 4) Consultant implements the description got from ChatGPT 5) Problem solved

How do you think this will go?

I don't want to be a pessimist but let me tell you, the end result will not be what the business person thought.

Let's start with the first point.

To ask a machine learning algorithm a question and get a useful technical answer out you will need to form the question in such detail that the algorithm can fit the solution into those parameters. Do you think the average person who doesn't do development can do that? I don't. And even if they could, every system in every company is different so the algorithm would need to accommodate non-standard solutions and legacy technology. I sincerely doubt that will happen.

Second point.

ChatGPT will not be able to build an architecture that is solid and will fit your organization. Yes, you will get a suggested architecture that will fit in a perfect world where every organization have followed the standards, used a standard technological stack with a standardized set of tools. But if you have worked in technology even for a short time you know that doesn't exist.

Third point.

You know the old saying that you get what you pay for? I will leave it at that.

Last point.

In many cases a business person will think that the first solution to a problem will fix the problem and the business can move on. Most people in software know differently. The first solution in many cases is only the stepping stone to the correct solution and in many cases it takes many tries until a final adequate solution is implemented. Software is evolutionary work which no machine learning algorithm will be able to completely fit into its parameters.

Final thoughts

I see machine learning as a great tool in the box for developers. For most cases it is too slow and unreliable to use in production, but for testing purposes and developer tooling it will be useful.

Will it take any developers job? I don't see it can. A developer is much more than someone you just types code every day; a developer communicates requirements, thinks of corner cases, designs alternative approaches, manages data, and so on and so on. The amount of thought work that goes into business systems today is mind-boggling.

But for the business person who only sees that button and form field, it is understandable that the big picture is blurry and machine learning seems exiting.

I am now closing in on my 40th birthday and for half of my existence I have now worked professionally as a Software Engineer. When I think about that it kind of feels incredible and I wonder where all the time has gone.

Getting started

When I started out in school I never thought programming would be something I would be doing for a living. Back then, schools did not even teach that much programming, so most of what I did I learned from Linux magazines I bought from the local kiosk.

The first official course of programming I did was in high school where we had a proper programming course in Python. There really was no Udemy courses or other free internet courses you could take, so the learning you had to do was from real books. gasp

When I started the problems technology was solving was so different than today. The internet was a young playground for idealists like myself to try different things on. The internet was not yet driven by big money companies only looking to cash out on users, and user data was not yet a commodity to be harvested.

The first job I had was writing software for a company that used COBOL as its main language. The job actually was implementing small snippets of code that was entered into a framework that then took that code and made data transformations to a pipeline. Not very glorious, and the office environment was the typical cubicle.

Open Source

Later on I joined a company who used its own web framework for building business applications for clients. It was the first time I worked for external clients as a consultant and I remember thinking back then that I will never be able to meet those deadlines and produce that code. But I eventually got the hang of it and learned.

The company later open sourced the framework and I was lunged into the open source world where opinions are strong and expectations are high by the other developers. I stayed at that company for 8 years, and I probably overstayed my welcome. But I liked the coding challenges from which I learned a lot and working with the community allowed me to meet many interesting people along the way.

But after working in open source for 10 years I decided I wanted a change, and decided to have a look at Fintech.

In Open Source development the emphasis usually was on inventing new and novel ways of making software. It was mostly marketing when you think about it, yes you're writing code, but there are a lot of community involvement required and if you are good on camera it also helps.

Fintechs

Fintech is mostly the opposite.

In most Fintechs there will be NDA's preventing you from contributing and discussing freely your solutions. Also when you are working on systems that manage other people's money there is also a lot of regulation that need to be followed to keep peace with the regulators. And if the company is international, well, there is even more regulation.

Usually when you join a Fintech company your goal will be to take a piece of code that will be using some ancient ways of implementing things and turn it into something a bit modern while at the same time trying to solve business problems where the stakeholders could not care less of what code you write. Oh, and the original authors of the code you work on are long gone and they most likely did not care about leaving any documentation or code comments.

When it comes to development work most people will think about Fintechs as the last paragraphs I wrote and wonder why on earth one would go from Open Source using the latest technology to a Fintech deprecated mess?

But here-in lies the challenge. From what I have seen only senior developers with lot of experience will thrive in a Fintech, especially in a start-up like scenario where you will have little mentoring. Young developers usually either burn out or voluntarily leave after a a few months. And this is why Fintechs get their bad reps from usually.

I've found that if you are going to survive in Fintech you will need to grow a pretty thick skin. That usually comes from years of getting sht* from customers and managers. If you are a senior reading this, you probably get this. There are a lot of managers that will eat you up unless you are able to stand your ground. You will have to be able to dive into code-bases that are bad and come out understanding and refactoring it. You will have to manage outrageous expectations on outcomes and schedules. And you will have to be able to manage YOUR time furiously unless you want to burn out your first year. This is why I don't suggest Fintechs for developers who only started.

But for senior developers, Fintechs are great playgrounds. The usually pay well (tip: Don´t join a fintech that does not pay well) and unless they are very big there will be an amplitude of things to learn from and improve. Be advised though, if you decide to join a bigger fintech there will be a lot of red tape from non-developers. As a fintechs grow them seem to entangle themselves more and more. If you are looking for a good experience look for small to medium size business with a senior development team.

The cloud

One of the major break-troughs that has occurred over the years has been “The cloud”. With this I am obviously referring to Infrastructure-as-a-Service, akin to AWS.

When I started it was common to have your own server rack, and on the servers you had virtual machines running on the server. In the virtual machines you then had application servers where you deployed your application on. These days however it doesn't normally work like that anymore, except for in older enterprises (I'll ignore their existence for this post, as they are a category of their own).

The way applications are packaged these days are using Docker or Docker like abstractions like AMIs on AWS. The application developer rarely cares anymore about the OS of the server and mostly focuses on the application architecture and packages it into an Image. The image is then provided to a cloud hosting platform where you have virtually set up your server configuration. Some cloud platforms even take it further and allow developers to just upload code and run it without even caring about the environment (FAAS).

Dependencies and source control

In the Java space where I have worked most of my career there has also been a lot of changes. One of the most ground-breaking ones were the invention of dependency management and source control.

You see, before you had dependency managers, you built your libraries by hand and deployed then manually to the server. The only place you had these files was on the production server and usually there was no reference on when the library was built, by who, or even what it contained. So when something broke and it was a library, it was usually a big mess.

Later along came dependency repositories where library makers could upload their libraries and version them. This meant that you no longer needed to built them yourself and you knew what the library contained. If something broke, you could just upgrade to a newer version.

Kind of the same evolution happened to source control. When I started source control was a set of files on a server where you connected through FTP and uploaded and downloaded files as you developed. Similar source control systems where you could branch your code came a bit later like CVS or Subversion. They all were though centralized, and what we call branching today was highly frowned upon. Git obviously came and changed everything.

Ways of working

This is maybe one of the controversial changes that has happened in my career when it comes to non-code related things and I still cannot determine if it was a good or bad thing.

What I mean with this is obviously the Agile movement and working methods like Scrum and Kanban. I could write a lot of negative things these have brought, and why most of it was not intended by the authors but glued on top by business people trying to gain more foothold in the process then ever was intended.

But, I'll digress in saying than unless everyone at the company buys into these processes you will do more harm in implementing them than you will be getting out of them. I have been in a few transitions to know, and nothing good has ever came out of those.

In my view the best way to still develop something is just plain old working together as a team, using a board to put up todo's and respecting and trusting the team YOU have selected to accomplish it.

The teams that have encompassed this mentality has always accomplished their goals successfully. The key has always been to select your team mates wisely. And to clarify, in this context “Wisely” doesn't mean selecting only your pals and like-minded people but selecting people that brings diversity on a positive level to the team.

Going forward

It looks like going forward I will go on being a Software Engineer. Nothing I've seen around me has convinced me otherwise. Will I continue in Fintech, I honestly don't have a clue.

They say that after 40 opportunities for engineers decrease but we shall see, while I think that is true for very shallow minded societies like the US, I believe there is a waking occurring that we older developers still have something to give. The key and advice I will give is to just stay on top of new and upcoming technologies and apply your experiences to these. In most cases you will always be a 10x engineer if you can do this.

But as we know life can give you a left hook and kick in the stomach and you can find yourself jobless and even homeless. So always prepare for that. So what I these days do is what the Stoics recommend, manage the things I can influence and for the rest, well let it sort it out by itself.

You've got to admit this has been coming for a long time. If you are surprised by this it is time to take away your blindfold.

When Facebook and Twitter started out it was about connecting people (Nokia, no pun intended!). The value of using these platforms was in their functionality for you to see what your friends, family and other like minded people were talking about. Your timeline was filled with what you wanted to follow and you felt more connected to those you also met in real life.

But for the last few years the emphasis has more and more turned to how these platforms could be leveraged for user data harvesting and marketing.

It started with the photos. Photos have value for the marketing industry as in many cases they display human emotion. Genuine human emotion sells better than Barbie or Ken acting human emotion so the marketing people looked at social media as a great source for material. And since the platforms were still in growth phase they were more than eager to get more funding. So we started seeing average people's photos leak to media companies “unintendedly”.

Next came engagement. As these companies measured their data they deduced that the best way to engage users was to provide interactivity to the media. The content was no longer the primary goal of social media posts but the engagement. People posted for likes and comments rather than for the content. There are a lot of research put in to this, especially the part of the addictivity of Social Media due to the dopamine effect. Look them up, there are plenty on Netflix for example if you are not a reading type of person.

Changing the timeline to an algorithm based version allowed the platforms to manage what users see. Users actually did not want this change, but this requirement came straight from the advertisers. Their ads were scrolling by too quickly and they wanted a way to get noticed more. To solve it the platforms revamped the timelines to show what they wanted not what the users wanted to see. The algorithms that determine how posts are prioritized are to this day a closely guarded secret by these companies, not because they themselves have any intrinsic value, but they would reveal the marketing point of view which would not please everyone.

As the platforms became more popular, political movements started to take interest. Because by now, the timelines could be manipulated thanks to the engagement features and the algorithmic timeline, political movements could manipulate s.k Trending posts with the helps of bot campaigns. Fringe ideas that normally would get unnoticed by most now got splashed on the top feeds of these platforms with help of bots liking these posts. This led to many users thinking that these ideas were credible as so many people were agreeing with them. This directly tapped into the tendency we humans have to accept the consensus without any independent thought.

As the fringe movements grew stronger on the platforms more moderation was needed. But moderation cannot solve the inherit problems of the algorithmic timeline as content moderators can only moderate what already has been posted. The damage in most cases had already been done once the moderator saw the post.

These are the reasons why social media is mostly broken today. And it can be solved by regressing the changes done to the platform. But since advertising revenue still is the dominant driver for many of these companies I don't see this happening.

So is there an out to this?

I believe that the Fediverse movement is such a solution. I call it a movement because it is not only about the technology. Federated servers that only allow a chronological timeline and discourages the engagement factors are the solution to return to media where content is king.

Many a CEO and marketing person will disagree with this, as they see social media as something to be monetized, either by using the platform as a promotion platform for their products, or as data platform for trend research. With servers like Mastodon this is impossible as the users are in control of their timelines and content.

I am happy the recent Elon event with Twitter has allowed users to open their eyes and see that there are other alternatives for social media than the corporate ones. Software using the Fediverse like Mastodon, Pixelfed, Write.freely and many more are all the solution to connect the users in a more open and transparent way, without sacrificing our freedom and right for privacy and manipulation.