Skip Go Content
AI translate this article from Japanese
Read in Japanese
This article dey for Public Domain (CC0). Feel free to use am anyhow you like. CC0 1.0 Universal

Development-Driven Development and Refactoring-Driven Testing

Development na when dem dey create new and useful tin over and over again.

When we hear "development," new product development na im often dey come to mind. Dis one different from manufacturing individual products; e mean say dem dey create di product's blueprint or mold, like say.

Because of dis, di designs and molds wey dem create through new product development, dem dey use am repeatedly for factories to mass-produce di same products.

Other ways wey dem dey use di word "development" na like developin' individual capabilities, or developin' society and a nation. Dis one no just mean say wetin dem get don increase, but e mean say dem fit repeatedly use and benefit from di capabilities wey dem don develop.

Even though di economic power of individuals and societies fit dey go up and down with economic conditions, capabilities wey dem don develop normally dey permanent.

Even if dem reduce, dem dey see am as a decline, no be like say economic prosperity dey go up and down.

Apart from dat, we get di development of technology and knowledge. Unlike di capabilities of individuals or specific societies, dis ones get di quality of being easy to share.

And among di things wey come out from dis developments—products, capabilities, knowledge, and technologies—some fit be useful for further development.

By developin' such useful outcomes, di scope of development go expand, and efficiency and quality go also improve.

AI-Driven Software Development

Generally, development dey always take plenty time and effort. Especially as society dey advance and different things dey become more complex, creating new things dey become harder and harder.

But, as generative AI don come out, dis situation dey change. Currently, software development dey experience a big transformation, because of di strong programming skills of generative AI.

One future wey autonomous agents based on generative AI go be di main thing for software development, acting as software engineers, don dey become reality already.

We dey for a transition period now. Although we no fit trust generative AI completely with development, if we use generative AI skillfully, e fit strongly push software development forward.

Dem dey call dis AI-Driven Software Development.

Development-Driven Development

When generative AI make software development easy, e no just make di development of di final software better, but e go also make di development of software wey dey help with development itself better.

As we don talk before, wetin dey help development go make development wider and make am faster and better quality. And if dem create am well, dem fit use am again for other development projects.

Because of dis, by developin' useful software during software development, di overall efficiency fit increase for di long run, and dem fit use dis assets for future development too.

Before-before, developin' such software wey dey help with development na normal tin for di field, but e dey require its own development time and effort, so dem need to carefully assess and target wetin dem want to do.

By usin' generative AI, dem fit quickly create simple software to automate small, quick tasks. For tasks wey get clear processes, generative AI fit generate correct programs with almost no mistakes.

Dis one dey make am easier than before to develop software wey dey help development during software development.

And if we think about am well-well, one development style dey come out where dem dey continuously develop useful tools during di development process, and by so doin', dem dey change di way development itself dey happen.

We go call dis Development-Driven Development.

To do Development-Driven Development, you need to get di habit of lookin' at your own software development objectively to think about which parts software fit do and which parts only humans fit do, plus di skill to develop such software wey dey help with development.

Apart from dat, generative AI fit dey integrated into dis software tools. By puttin' am inside de software, unlike a standalone generative AI agent, di scope of processing fit dey narrowed and a clear path fit dey defined to some extent.

Even though AI agents fit achieve similar results through promptin', software wey get generative AI fit more easily increase accuracy by combininn' both programs and prompts.

If dem fit do Development-Driven Development, di second project go see improvements for both quality and cost compared to di first one. And as each project follow—di third, fourth, and so on—improvements go continue to increase.

Dis one completely different from just developin' software usin' generative AI. One big gap go come out over time between teams wey just sabi use generative AI tools and teams wey dey do Development-Driven Development.

Refactoring-Driven Test

We get one idea wey dem dey call Test-Driven Development (TDD). E mean say you go first design tests based on wetin dem specify, then you go develop software wey go pass those tests.

At di beginning, me too I bin think say with generative AI wey make am easy to develop test programs for automated testing, Test-Driven Development fit work well.

But, as I start to dey do Development-Driven Development, I come believe say di way of designin' tests before implementation no always fit.

Especially for software like web applications, wey get subjective tins like how easy e dey to use and di visual design wey person fit experience by interactin' with am, I realize say actually runnin' and interactin' with de software pass detailed testing for importance.

Dis na because if serious problems dey for di UI/UX level after interaction, e fit be say fundamental parts like di framework, basic architecture, data model, or use cases fit need to change.

For my current personal software development project, I also notice problems with functional flexibility and performance, wey make me change two frameworks for different ones.

One part also get poor memory usage efficiency, wey make me overhaul di whole processing completely.

Na for dis refactoring times testing dey first come to mind.

If dis one dey happen for di early stages of development, or if features and specifications go change a lot anyway, tests fit no dey necessary.

But, if development don go far and plenty items dey to check, tests go likely dey needed during refactoring to make sure say no functional problems or omissions dey.

So, di idea of creatin' test programs when development don reach a certain stage and refactoring become necessary, no be bad idea.

For dis point, di main tin no be to create tests for all code, but to focus tests on old parts wey no go likely change much for di future, leavin' di parts wey still dey flexible without automated tests.

Dem fit call dis Refactoring-Driven Test.

Conclusion

Generative AI dey change software development in a big way.

For previous articles, I write about say e important make person aim to be an Omnidirectional Engineer, one wey fit go beyond di normal full-stack engineer work to develop omnidirectional systems wey dey combine different areas, infrastructure, and how dem dey run am.

I also write one article wey suggest say we dey enter one time of Experience & Behavior-Driven Development, wey dey focus on makin' user experience better through how software dey behave, instead of di old software development way of makin' sure wetin dem specify match wetin dem implement.

Development-Driven Development and Refactoring-Driven Test na exactly di ways wey go carry us go dis new levels for software development.