Info Rhino is a UK based software solutions provider specialising in data solutions. The spoiler alert - we think AI based development can help us build better software, quicker, cheaper so if you want to find out more, find us at contact
We wrote this article as a storyline for a video on Chat GPT
Our video - Is ChatGPT good for developers?
We are hearing that chatgpt will lead to less developers. Real skill is needed to be able to understand the code, correct mistakes, and decide how to implement it or ask more questions. We are sorry to say but it threatens functional staff equally. Furthermore, se customers themselves maybe at threat because technical business minded technologists can come up with their own solutions.
Work wise, I have been playing around quite a lot with ChatGPT. The jury is still out on this but I am figuring out how it can be useful. You can knock together certain apps in hours but many times it is a hinderance. The main issue is bringing the code into existing codebases and adapting it to existing patterns. For example, I have certain ways of interacting with SQL Server through C# as you know.
There has been a lot of excitement and trepidation over openai chatgpt. We want to explain why a lot of this fear is misplaced and why it can help transform the software development lifecycle. Info Rhino is integrating code from openai into our more recent solutions.
Currently, this is a free version. For certain it will be licensed and maybe quite expensive at some point in the future. We have been trying to think about what we would pay for this capability? Is it worth the cost of a developer, perhaps the cost of a developer licence of a few hundred pounds? We have been evaluating chatgpt open AI and are still finding our feet.
Normally, when we write our own software in c#, we rarely write a requirements specifications. We rarely write unit tests. Often, we don't run debug or run an application for several weeks or maybe 80% into a project. This means we don't use test driven development, behavioural driven development, or other techniques that are well touted. We would say that most development is data focused and we are more interested in integration testing. We tend to make notes, write down ideas, draw diagrams when needed - perhaps this is agile? We do write unit tests when we want to document how a unit works. Our approach is iterative. Very much our code is largely once only, few bug fixes, and shipped.
Contrast the above with most enterprise based and outsourced development. Huge focus is spent on requirements gathering, business analysis, and agile sprints to add features to the solution. Our experience is architectural implementations are never (rarely) considered in these domain specific SDLCs. Codebases become unmanageable, far too wedded to esoteric business requirements with little respect of cross cutting concerns.
Being a software developer is uncomfortable, new technologies and approaches occur constantly, many of them fizzle out. It takes time to learn new frameworks and languages. If AI can do all this, why do we need humans? Having worked with this technology, we see it as more of a supercharged tooling capability than a replacement for developers but it will lead to more intelligent technologists being able to operate at a higher level of capability.
This discussion does not attempt to say the sky is falling.
We have a number of requirements for our cryptocurrency platform. One involves generating a payment requirement token that a user can scan and make a payment on a blockchain. We then need to monitor the blockchain to check for the payment reference, before finally updating the payments transaction log. Whilst there is a little more to that requirement, it sounds relatively simple. Alternatively, we could have used a cryptocurrency gateway and set a Web hook to issue a callback. Those that develop software realise that there is a lot of code involved, multiple layers, testing, and research.
So rather than creating an application on the fly, we wrote a requirements specificarion in a way that we ask open AI to create the data objects and code to build the solution. As we work through pasting the requirements, we find the code gets generated. We adapt our questions suggesting alternative coding approaches, sometimes chatgpt listens, many times it doesn't, it is stubborn. There seems to be a limit on the amount of code it generates per question, which may necessitate a further question.
The big advantage is we can ask it questions on different APIs that we would , as a human, need to research. For example, we have researched nbitcoin in the past but chatgpt knew what to use. Another great thing is Chatgpt can write sample execution and test code.
The end result is code that if asked in the right way can be created to a high standard that blows your mind. However, it is quite a bit of effort to arrange.
It probably is. Solution architects with strong development skills have a massive advantage. Indeed, you should be able to create the design requirements and avoid the business analysis, story pointing/estimation, testing, configuration objects relatively quickly. So far, we have found we can spend a few hours writing a requirements specification, and start collecting code.
Is writing a specification, interacting with open AI, creating the solution code files, and other artefacts faster than writing an application? We think that certain types of applications are way faster. Certain applications it doesn't make much sense to take this approach. What is important is reducing the number of actors involved in the software development life cycle because that is wasteful.
One very good way we found open AI improves performance is with writing tools to help manage code bases and automate manual processes.
It can absolutely reduce software costs but only in certain ways. Where we have struggled is with outsourcing development tasks to external solutions providers. It takes time to write the requirements, set up the project management tools, and test the results. We often find that just writing the solution ourselves is faster. Of course, most companies won't have the skill set to do this themselves.
When working with larger consultancies, we can see duplication of effort. Many consultancies want their own testing team, their analysts, junior developers, one ore more senior developers - in addition to us requiring to do development and testing of our own.
We genuinely think that it may reduce the amount of team members but that it will offer a competitive advantage to the best professionals.
There is a possibility that the quality of code maybe slightly lower because we have to make compromises. However, we have been learning new strategies to speed up our development.
In addition to intellectual property questions, some companies may not want to start providing their key developments to a cloud based tool that could be learning from them to improve on what it does.
We think it can speed up the SDLC when we have intelligent developers. Either they will decide to write code themselves or decide the requirements are too intricate for the solution. We are learning that many of the shortcomings of chatgpt can be overcome by asking more intelligent questions, or providing more nuanced requests. This will be a skilled process.
Chatgpt and similar AI will help developers learn more and get exposure to possible solutions faster.
Written with StackEdit.