Hello. This article is part of a series where we speak with professional software developers, ask them what it’s like to write code for a living, and perhaps gain a few insights into the software development industry along the way.
Our guest today is a Delphi MVP and author David Cornelius. David describes himself as “a programmer through-and-through”. He runs a small software development business from his home office and seems to have his priorities right when he says “I love family, music, strategy board games, and the great outdoors”. Living, as he does, half-way between the Pacific Ocean and the Cascade Mountains David says this means he is offered a wide variety of places to explore—either on a motorcycle or by hiking from a campground.
Hi David, thank you for talking to me today
Well, it’s very nice to meet you, Ian!! 😁
Which Embarcadero product(s) do you use a) the most b) regularly?
a & b: Delphi XE, 10.4, 11. Every day.
How and/or why did you become a developer?
When I was in grade school, my favorite subject was math. I got a programmable TI (Texas Instruments) calculator and would compete with my grandfather on the most complex calculations we could come up with in its limited 32 steps.
The small high school I attended had a TRS-80 with a cassette “drive” for storage but I got impatient waiting for it to load/save and with its many retries and errors so lost interest. But later, when the school set up its first computer lab with three Apple IIs, I spent all available time teaching myself AppleSoft BASIC. When I got to the end of the tutorial book and realized a friend of mine was writing games that could not have been done in BASIC alone, I knew there was so much more to learn—I was hooked on programming by that point! Majoring in Computer Science in college was the obvious next step and the rest, as they say, is history.
Do you think you will ever stop being a developer? If so, what would be next?
No—I have too many ideas to ever stop, even if I sell my house and travel the country in an RV, I’d still be programming part of the time.
What made you start using Delphi/C++ Builder?
College exposed me to several different programming languages. I studied assembly on three different processors, enjoyed the structure of FORTRAN, got bored with COBOL and dropped the class, looked at some niche languages like SNOBOL, and taught myself C using Mark William’s Let’s C. But the most useful class was one that taught general programming concepts using an inexpensive tool that allowed us to edit, compile, and debug all in one IDE, a new concept in the mid-80s. It was Turbo Pascal.
Later at my first long-term programming job, I was given the opportunity to start a brand-new application and I could choose whatever programming tool I wanted. I went with Turbo Pascal, then at version 4, because I already knew how to use it, I could drop to assembly if I needed to (which I actually did occasionally), and it was starting to get popular—it was the logical place to start.
As the application grew over the years, I moved the code base up to Borland Pascal, supported ancillary projects in other programming languages, and even wrote some stuff using Borland Turbo C++. But I was most productive with the Object Pascal language—that is until I tried to do some Windows 3.1 programming with the Object Windows Library (OWL). When Delphi came out, I gleefully abandoned OWL in favor of this amazing new, component-based programming tool. Once again, it was the logical place to start—this time for building Windows applications.
If you could give some advice to a student who is considering a career as a software developer, what would it be?
Ask yourself these questions:
- Can I think logically and analyze deep problems?
- Can I focus on a single task for a sustained amount of time?
- Do I enjoy mental challenges and solving logic problems?
- Do I relish learning new ideas and embrace changing technology?
- Can I sit at a computer for extended periods of time?
If you can answer yes to all (or at least most) of these, there’s a good chance you could thrive as a developer. Enjoying the software creation process is really important for a sustained career, so take some classes (either free online tutorials or through formal education) as early as possible to give yourself a feel for what it’s like, then evaluate that against other interests.
I enjoy playing music a lot but realized that would not be something I wanted to study and spend 8-10 hours a day doing or the love would be replaced with drudgery. That has not been the case with software development for me. You gotta know yourself!
Tabs… or spaces?
I’m with Frank Lauter! [Spaces]
What’s the best day you ever had as a developer?
Being able to solve a problem or add a feature that makes a customer really happy is the greatest feeling but a day that sticks out in my mind as particularly satisfying was something just for myself. Back in the early 1990’s, most DOS-based PC’s had no reset button, requiring the user to power down, wait for the HD to stop spinning, then power back up if a program crashed. They also came with a single built-in speaker that would sometimes get stuck on if a program crashed at the wrong time—requiring the painful stop/wait/restart process to end the annoying high pitch squeal. This happened one too many times for me so I wrote a quick Turbo Pascal program that simply turned the speaker off. It was a one-line program, ran perfectly the first time, and I called it SHUTUP and put it on the PATH so that I could type it any time from the DOS prompt. No more reboots!
What’s the worst thing about being a developer?
One of the most frustrating things about being a developer is running into a problem that you cannot figure out and where you waste hours or even days trying to get around it only to realize it’s a very simple issue or a bug that raises its ugly head only for your particular arrangement of hardware.
What’s the coolest development tip you know?
Just one? There are so many to choose from! I think the best tip I would give would be to help those in the Delphi editor all day long and that is to learn and use and customize Live Templates. It might take a bit of a learning curve and practice to get good and fast but typing and coding fast is a huge productivity boost.
Work from home, work from an office, work in an open plan / shared space? What do you prefer and why? Do you get to choose?
If I worked for a company that decided to switch to an open plan, I would quit. I cannot fathom a developer being able to concentrate long enough to get anything done in an environment where there are no walls and everyone can see/hear everyone else.
I love working from home and being my own boss. Employers seldom understand the productivity benefits of providing a comfortable desk and chair, or getting decent equipment. No two people are exactly alike, yet most companies still try to fit everyone into the “standard” work desk.
I am taller than average, therefore have a higher-than-average chair, built my desk extra high, and use monitor risers so that my posture is upright and I don’t have to hunch my shoulders or look down at my monitor—all which would cause neck and back strain.
But occasionally, I work on my laptop at a coffee shop or park where I tune everything around me out and focus on a single task for a short period of time.
Tell us something interesting you think we might not know.
I took 7 years of piano lessons in elementary and high school, and loved it—got good enough to win a small competition in high school one year. I also played trumpet, French horn, baritone, and tuba in high school at various times (and sang in the choir). I still play tuba most years at Tuba Christmas in Portland, Oregon, and really enjoy my newest acquisition, a bass guitar, which I use to accompany praise groups at a local church.
Is there a tech industry location you would like to visit?
I think if I had had the chance to visit the Borland headquarters back in the day, that would’ve been cool but I don’t have a burning desire to see anything other than maybe to visit places I’ve read about for historical context.
Have you ever met any famous/well known tech figures? Who was it? How did it go?
Being the coordinator for ODUG since 2000, I’ve had the pleasure of meeting several well-known people in the Delphi programming community doing the user group tours promoting new versions of Delphi or third-party components. These include (in no particular order), John Kaster, David “I” Intersimone, Anders Ohlsson, Sarina DuPont, Jim McKeeth, and Ray Konopka. Most presentations went off without a hitch but the one time David I came to Portland, the auditorium we were using had changed its policies about the use of the audio/visual equipment without my knowledge which prevented us from using the overhead screen and projector; we had to crowd around his laptop to see what he was sharing—it didn’t go well and I felt bad for everyone. We changed venues shortly thereafter. [IanB’s first rule of presentations – it will go wrong, always, and the more you plan the more it will go wrong 😂]
If you could convince someone to consider Delphi or C++ Builder what would your method be, how would you do it?
I would teach them general programming constructs using pseudocode, then surprise them by letting them know they’ve just learned Delphi!
If you could wave a “fix the tech industry” magic wand, what would you change?
I would prevent social media companies from using personal data for profit and from using mysterious algorithms to control what posts you see.
Which tech product do you wish you invented/designed and why?
Facebook. Not because I have any desire to be a gazillionaire but because I think the platform is a great way to keep in touch with family and friends but I loathe the fact that the company profits from knowing so much about me and adjusting what posts I’m more likely to see (refer to my “magic wand” answer).
If you could live your life again, would you still become a developer? Why?
Probably—I really enjoy it. But I seriously considered architecture—I think that would’ve been equally fun, challenging, and with enough variety to keep my interest for a long time.
How many coffees do you drink a day and is it enough?
If there happens to be a fresh pot of coffee in the house, I’ll drink one or two cups. If not, I’m usually just fine. I seldom go out of my way to seek caffeine. Once in a while, however, there are those early mornings after a late night where the equation changes!
Are you a night hawk who codes until late in the evening, a morning person who gets up early and right into or do you keep to some sort of regular office hours?
I used to code all the time into the wee hours of the night but not so much anymore. Not only is sleep more valuable to me now but I don’t have the luxury of sleeping in very often; therefore, I have shifted my schedule earlier. But I’m still a slow riser—it takes a while to wake up enough to be productive at the keyboard.
In your career have you ever “pulled an all-nighter” to deal with something which absolutely had to be done?
Yes, sometimes because of a looming deadline but more often because I believe the lie I tell myself that this one last thing will only take a few more minutes. Most of the time, if I leave the problem for the next morning, I could finish it in a quarter of the time!
Describe some other things you’ve done in your career which might give readers a background into what makes a developer.
Most of what I’ve written is used by people that have no understanding of the underlying technology. This requires the ability to understand vague requests and turn them into requirements, translate complaints into bug reports, and predict user actions that could break your app and proactively prevent them. Working on a teacher management system that launched educational software for students taught me right away how important robust, user-friendly software is—especially when I was put in the room with them and felt their pain as they encountered problems. There’s no greater motivator than to have your users turn around in their chair, look at you, and ask what they’re supposed to do with that big, long error message on the screen!
What was your most stressful day of programming ever?
In 2002, I built a prototype of a day-trading web app in PHP for an entrepreneur. He wanted to film a promotional video for late-night TV to get people interested and sign up to continue funding the project but he was adding feature requests faster than we could get them done, leaving several aspects of the site half-baked or temporarily hard-coded. He flew a bunch of us that had been working on the project to Las Vegas, then hired some models to point at the screen while he talked about this amazing program he was trying to sell. At the last minute, and without consulting his technical staff, he went out and bought a gigantic TV for the demo—not a monitor or projector and screen, but a TV! My laptop did not have the right video card or graphics drivers to detect the screen properly (two of us fought with it for 30 minutes) so we were stuck with an ugly 640×480 resolution on this big display. I had to make several last-minute changes, move some things around the screen, and hide others while the camera crew and models waited. I was making these changes while sitting on the floor against the wall of a conference room with a scantily clad girl sitting right in front of me waiting for her turn to get up and prance in front of the screen!
Do you quote for work with clients? If you do, without revealing anything which would make you uncomfortable what sort of process do you use?
Sometimes, when customers demand it. But then I price it much higher than I think it will take. My preference is to provide an estimate and bill hourly; then communicate and invoice frequently so the customer understands the progress and the cost.
How do you stop clients/program managers/managers from ‘feature creep’?
Charge them for it. Seriously, it’s that simple. I explain to them how the features they are requesting go beyond the originally requested scope and why it will cost more. Every single thing I do goes on a line item on the invoice so that they see the cost of every request.
Describe a typical coding session for you. How does it start? Do you take breaks? Do you have any rituals/habits to accompany it?
I pick a project and task, and dig into it. Sometimes, for new projects or problems, I have to stop and draw out a flow-chart or lists of numbers; using pen/paper is good for this as it activates a different part of the brain. A lot of times I will build the user interface first which gives me a clearer view of how the finished version will look and act—which may reveal additional considerations that should be coded. Other times, like for bug fixes, I will first start adding extra logging code so I can pinpoint the problem area quicker.
I have no set rules for times or rituals—sometimes I’m on a roll and code straight for a couple of hours, other times, the problem is more complex and requires frequent breaks to just stop and think about the problem. It varies as much as my projects do.
Do you listen to music while you code? If so, can you tell us a few tracks/artists/performances?
I’ve used Pandora to stream music for a long time and have a few different custom channels that vary based on the mood I’m in, from electronic/trance to chill to techno/dubstep to Celtic. Some of my favorite artists include Autograf, Jes, Blackmill, Amethystium, Nordlight, Trifonic, Lindsey Stirling, Celtic Woman, The Glitch Mob, Krewella, and Celldweller.
Do you use any methods or techniques such as Agile, Scrum, Kanban, TDD? If so, why? If not, why?
I didn’t pick a method and then search for a tool to implement it, I found Trello and like it for project management then found out that Trello is a top Kanban tool. So, I guess I use Kanban—loosely, not purposefully.
Do you track bugs? If you do, what do you recommend?
I tried a few different open-source, web-based, bug-tracking tools and didn’t really like any of them. After I started using Trello, I implemented its “label” feature to mark “cards” as either “feature requests” or “bug fixes” and so forth.
Most of the projects I work on are small—if I had a large team working on one gigantic project, I would probably do things quite differently.
What does a good software developer do?
Uses source control! There are so many programmers that either make copies of their code in another directory or zip up the source files periodically. I got started with JediVCS a couple of decades ago and very soon realized the great benefits to looking back at my change history. I have switched to newer source control systems and now use Git for EVERY project I work on.
What does a bad software developer do?
Doesn’t format or comment their code. Messy and uncommented code is not only difficult to maintain but makes it nearly impossible for another developer to take over—unless the development tool has a code formatter like Delphi does!
iPhone, Android, Other – and why?
I like the freedom of choice for configurability and apps that Android phones offer—so I prefer that platform for my personal use. The only iPhone I have is a deactivated hand-me-down I use for testing. However, I do have an iPad and like it very much as a tablet.
For a developer: PC vs Mac? Why?
For the same reason that I choose Android phones, I have used PCs ever since day one—freedom to choose hardware and software tools and to configure it the way I want. I know my way around Windows and the command-line with all its shortcuts and have collected many utility programs over the years. They also cost a lot less and it’s fairly simple to add or replace a hard disk or graphics card.
However, I added a Mac Mini to my collection of hardware a couple of years ago so I could develop for the iOS platform and it has started to grow on me. As hardware capabilities have increased and standardized and the need for customization has decreased, the line is getting blurred—especially since I can run Windows on top of Mac (but not the other way around).
What is the one thing you would like to be remembered for?
That I’m an honest man who would rather take a rate cut than cheat a client.
What is the best developer/hacker/tech/geek movie?
I really enjoyed The Matrix trilogy a lot. There have been a lot of other good movies produced since then but that one sticks out in my mind.
Do you have a book, product or service you’d like to mention?
I’m always looking to expand my skillset and one of the hardest things to get past is if you’ve established a good, solid product or built up a great library of code only to realize customers and competitors have moved to newer interfaces—or worse yet, other platforms! The book I recently finished writing, Fearless Cross-Platform Development with Delphi, addresses this issue by showing these developers the nuances of mobile devices, how to get started with web development, and ways to embrace REST services. Real-world applications are built in a step-by-step manner that I hope will remove the barriers holding back developers that feel stuck with a Windows-only solution. If you need to support multiple platforms, this book is a great place to start!
[I should point out here that I actually bought the printed version of David’s book on pre-order even though I was offered free review copies. It’s an excellent book and we will be reviewing it soon with David. – IanB]
Do you have a website people can visit, if so, what is it?
If you use Twitter, what is your Twitter handle?
What’s your preferred method of contact from potential clients?
The contact page on my website: https://corneliusconcepts.com/contact_us
Thanks for taking part David, I really appreciate it.
I will be talking with David again soon in an interview where we discuss his book and his motivations behind writing it.