Generate from Constraints
Michael Feathers
by
1y ago
As society deals with the broader implications of generative pre-trained transformer (GPT) technology, developers are trying to understand how it will impact software development. While there are a wide variety of ways to leverage it, the easiest, and most common, is code generation. Today, there are a number of GPT-based tools that analyze comments and code and suggest completions as you type. You can also prompt them to generate or transform code. In either case, you can choose to accept the changes (or not) but you have to be careful. GPT-based tools are prone to the hallucination problem ..read more
Visit website
(Possible) AI Impacts on Development Practice
Michael Feathers
by
1y ago
We can’t accurately predict AI’s impact but we can explore some possible disruption points. Source Code: Currently most software systems are developed using source code – a human readable, (hopefully) deterministic specification of system behavior. Development tools that allow end-user programming often bypass the need for source code by using record/playback and visual programming-style interaction modes. When behavior needs to be altered, a source code representation is useful. It aids system understanding and enables fine-grained, parametric control[1] of behavior. There is a broad clas ..read more
Visit website
System Personas and Design Integrity
Michael Feathers
by
3y ago
It’s taken me a while to appreciate Edsger W. Dijkstra. I had a professor in college who used to comically refer to him as “fearless leader” whenever he mentioned some piece of bombastic wisdom from him. But, beyond the bombast, Dijkstra’s contributions to computer science and software engineering were seminal. Even though I didn’t pay as much attention to his ideas as I should’ve, they influenced me indirectly and one of them led me to ignore some avenues of thought that I wish I’d pursued earlier. One of the things that Dijkstra spoke about often was anthropomorphism—seeing code and systems ..read more
Visit website
Gateway Teams
Michael Feathers
by
3y ago
One of the things that is hard to appreciate in complex systems is path-dependence — the fact that most systems have memory. What we see today is a consequence of what came before. This is a very simple thing to say but even when we know it, we forget it and we don’t really think about its ramifications. If we want to change things, it helps to be upstream of the change. The earliest decisions are often the most significant ones. The things we have to react to are often most determinative of how we work. Practice change and organizational learning are two areas where this is important. Teams t ..read more
Visit website
Unit Conversations
Michael Feathers
by
3y ago
There are many ways to look at unit testing, but one of my favorites is to see it as an attempt to have a REPL in languages that don't have one. When you have a REPL, you can call a function and learn how it works interactively. You get immediate feedback—you can have a conversation with it. In dynamically-typed languages this is easy. Most of them have a REPL. In statically-typed languages it is harder. The compiler needs to perform its checking. In the worst cases it has to check across a transitive set of dependencies. Tool makers often don't even think about writing a REPL for languages li ..read more
Visit website

Follow Michael Feathers on FeedSpot

Continue with Google
Continue with Apple
OR