Agile Minds
maddog's Doghouse
How you approach a problem goes a long way toward success in code development.
I am writing this article from Japan, where I am spending the weekend with a former student who I taught 30 years ago. This student was a "late bloomer," as he is only 10 years younger than I am, and we have kept in touch over these many years.
My friend does not do much coding any more, and compared with some people, he has not written that much code in his life. For that matter, I never wrote as much code as some people in the Free Software arena. I tell people that my "C" looks a lot like Fortran, but what I write usually works, and works well.
Both of us have moved on to the job of empowering other people to get their work done on time and "under budget." The difference is that when I say "use Free Software and collaboration to help," most of the people I work with do not have to be convinced; in fact, they would look at me strangely if I said anything else. My friend is not so lucky.
So the first night that I was in his house, we broke out several beers, and the time was spent commiserating about how his company kept insisting on doing things "the same way," which typically meant buying technologies from other tech firms and then paying royalties on that software forever, even when the supplier was not adding any value to the solution.
"I do not mind paying for quick bug fixes to problems we have," my friend said, "but we are a relatively small customer to our supplier, and they react to all of their larger customers first, and we get the support last. In addition, there are some products, which we purchase, that we actually have created solutions in-house, which we could substitute and stop paying useless royalties, but our management does not let us do the work."
My friend accepted the agile method of developing code many years ago. In fact, before people became "agile," most Unix people had already developed the habit of creating a quick, throwaway prototype – with the intention of rewriting the code completely before creating the production copy – as something that the end user could work with and see if the basic premise of the code was being met.
What my friend's company was doing, however, was "waterfall" programming, with relatively short periods of requirements gathering, design, coding, and testing, with little or no time for feedback at any level. His fellow workers pointed out that according to the schedule, they would get the job done on time, but my friend pointed out that if they were missing key functionality, they would not find out until the project was due, and then it would be too late.
Many years ago it was very difficult to install the Berkeley Software Distribution (BSD) on a system like a VAX 11/780. You had to boot the media, configure the kernel using a text editor, and type in names of hardware controllers, such as the KMC-11, as well as input the controller's interrupt vector and address in the memory bus. After you saved the configuration file, you rebuilt the kernel, rebooted the system, and proceeded with the rest of the installation.
I noticed that the VMS system could configure itself, even on the same hardware, and I asked why Unix could not do this. "Cannot be done" was the reply I was given.
I went back to my cubicle and created a small prototype using a diagnostic program, some shell tools, etc., and I had a working copy in less than half a day. The engineer who said that it "cannot be done" then took my prototype and created production code in another day.
Another issue facing my friend was the caliber of employees that were sent to him. My friend takes the attitude (as do I) that good engineers can learn a new computer language or IDE in a very short time, but a great engineer will keep learning and improving over their lifetime. The person who says "I do not know that language, but I can learn it quickly" or "I have not heard of that technology, but I can find out about it" are the types of people that my friend and I want to hire.
My friend has a question he asks of potential employees: "What do you say to me if I tell you that we need something done quickly?" His favorite answer was the programmer who said "The first thing I will tell you is that I have to call my wife and tell her I will be home late tonight." That candidate was hired.
Sometimes the answer is not the code, but the way you approach the problem.
Buy this article as PDF
(incl. VAT)
Buy Linux Magazine
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters
Support Our Work
Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.
News
-
Juno Computers Launches Another Linux Laptop
If you're looking for a powerhouse laptop that runs Ubuntu, the Juno Computers Neptune 17 v6 should be on your radar.
-
ZorinOS 17.1 Released, Includes Improved Windows App Support
If you need or desire to run Windows applications on Linux, there's one distribution intent on making that easier for you and its new release further improves that feature.
-
Linux Market Share Surpasses 4% for the First Time
Look out Windows and macOS, Linux is on the rise and has even topped ChromeOS to become the fourth most widely used OS around the globe.
-
KDE’s Plasma 6 Officially Available
KDE’s Plasma 6.0 "Megarelease" has happened, and it's brimming with new features, polish, and performance.
-
Latest Version of Tails Unleashed
Tails 6.0 is based on Debian 12 and includes GNOME 43.
-
KDE Announces New Slimbook V with Plenty of Power and KDE’s Plasma 6
If you're a fan of KDE Plasma, you'll be thrilled to hear they've announced a new Slimbook with an AMD CPU and the latest version of KDE Plasma desktop.
-
Monthly Sponsorship Includes Early Access to elementary OS 8
If you want to get a glimpse of what's in the pipeline for elementary OS 8, just set up a monthly sponsorship to help fund its continued existence.
-
DebConf24 to be Held in South Korea
Busan will be the location of the latest DebConf running July 28 through August 4
-
Fedora Unleashes Atomic Desktops
Fedora has combined its solid distribution with rpm-ostree system to make it possible to deliver a new family of Fedora spins, called Fedora Atomic Desktops.
-
Bootloader Vulnerability Affects Nearly All Linux Distributions
The developers of shim have released a version to fix numerous security flaws, including one that could enable remote control execution of malicious code under certain circumstances.