Will AI kill off coders? I doubt it
Thoughtful article:
I guess these people were not around when the whole "4GL is going to take over the world" commotion was going on in the late 90s & fading out in the early 2000's.
What's a 4GL? a 4th generation language. It was meant to be procedural and "program-generating" software. It was meant to be so simple that if someone could use M$oft Excel, they could build an application without the need for those pesky expensive programmers.
Whilst this was okay for outputting boilerplate / templated code that created generic and bland / functional applications they did feel a little bit "soul less'. That's an interesting choice of words I use there. How can code or an app have a "soul". Well, it can't, it will have the representation of the artists (programmers) personality expressing what the end user would like to use. Some people like to drive boring cars, they are functional, they go from A to B and do the defined job, no frills. They would like 4GL apps.
On the other hand, some users will want to customise, just tweak a bit, modify a bit here and there - whilst that can be done with a 4GL, it does lead you down into a maintenance nightmare path...
I speak from experience, I still have the odd nightmare about PowerBuilder and the Heathrow airport terminal 5 baggage cockup that I was parachuted into "fix". shudder. Yes, it cost less, yes, it was delivered quicker. No, no one documented anything, because, well, because "it speaks for itself", and no, no-one from the original project could be found on the face of the Earth. That cost saving went right out the window when it went wrong and there was no-one with the skills to fix it, I was a bit of a Jedi back then and was the 'Last Hope'. I did managed to fix it in less than a week, but I am sure it melted part of my brain along the way.
Last year (2019), I was coming up with the concept for Project "O". I've written about this before, I was pondering how we could evolve beyond 4GLs and do something smart with AI concepts.
I devised a PoC that uses a chatbot style interface front-end, where it would quiz the user as to what they want to build an app for, what data they were interested in viewing / entering and did they need to connect out to any other data sources, if so, what one's.
It basically was a chat bot being a Technical Business Analyst. Getting the chat bot to understand what the user was asking required the normal way of training chat bots, so that wasn't too difficult, but it was still a manual process. Okay, I can see how GPT-3 has decided to solve that by getting access to hundreds of billions of words and try and make sense of them rather than train it directly. Fair enough.
My PoC then had the questioning aspect to ask all the type of questions an IT Consultant would ask, notice I'm not saying programmer here, because actually, the ens user doesn't care about how this app is built or using what tools, the "app", ie. Project "O" is the programmer.
Once the requirements of what the user wants to see/view and enter I wrote a little algorithm that worked out the complexity required to achieve what they wanted.
This determined if there was a need for a database, if so, what type, what was the best way to store/retrieve the data, SQL or NoSQL? what scalability was required, what DR was needed, if any?
Then came the business logic layer, through the questioning from the chat bot, any complexities were identified relating to the data, this would be interpreted and output into Pseudo-code.
Now, this is the bit that I got to, where I had the vision of being able to output to multiple programming languages based upon the data gathered so far.
However, for my PoC, I decided to just use nodeJS / JavaScript as a starter. This could easily have been translated to use Python or Java or even C# (that was the future vision).
So.....based upon this being a PoC, I thought I'd prove this out with one language and then build from there if it was deemed worth it.
I collected up a load of generic templated code from various sources and had the Project "O" code pull it together and populate specific field values based on the chat bot conversation.
It would also use this content to design and create a database and the required tables or documents if noSQL.
Yes, there are only so many ways that you can do basic coding such as CRUD operations in JavaScript with a specific DB driver, wrapped in graceful exception handling. So, yes, in theory you can have templated / boilerplate generated code for those areas.
Some of the more complex areas can probably be written (as I did) using some generic logic to output what is needed.
Once the "app" was generated, I then got a bit fancy and made a docker container, dropped the "app" inside it with everything that was needed and deployed it out to a Kubernetes cluster (just because I could script/automate this).
Once finished, the chat bot would then return a URL to the user and say, "hey, here you go, what do you think?". The user could then use the real "app" without having to know anything about all the complex moving parts there were behind the scenes.
When I got to this part, I then paused, how was I going to handle feedback and changes from the user? What if the user then stated, "on screen X, can you make the Account field compulsory now?" - okay, so that was a simple one to solve, but if it were more complex and required code to be re-generated and/or database table content to change, how would it manage the code changes and the data migration? yes, it was feasible to do....if thought about quite a lot and every variant pondered and catered for, how would we manage version control - oh that's easy, we'll use an automated github account to keep each version.
What is the user then asked for security? to lock down access to have a login authentication mechanism, okay, again, yes, feasible and plug and playable....
You can see how I then went off at a tangent going beyond the initial, "can we create", yes. Then moving onto "how do we update and maintain?".... and that is where the headscratching is going to be.
Also, that is why the 4GLs bombed and the GPT-3 is likely to fall over. It won't be able to solve Step 2. It will probably be absolutely awesome at getting people to Step 1.....and then it'll stall at Step 2. Some will push forward with it, but a majority will walk away and try and find the next best shiny thing.
What happened to Project "O"? Oh, it's still knocking around on my laptop someplace.... I was going to use it as a pitching platform in an attempt to get internal IBM funding to push it forward to making it into a product.... but what with the Covid-19 scenario during 2020, such fantasies have to take a back seat as we focus on making our customers earn more money, so we can earn money and keep the whole economy cycle going forward. Maybe, I'll come back and look at "O" in 2021 and plug different technologies into the component areas and then make it into a real awesome thing, may even call it a 6GL :-)
As to whether AI killing off coders. No. In the same way that the media panics people into thinking "will AI take over the world and kill all humans". No. It's still having trouble telling the difference between a Dog and a Cat. World domination and/or replacing coders is not going to be happening anytime soon.
Comments
Post a Comment