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.
In our interview chair today we have the simply marvelous Dalija Prasnikar. Dalija is based in the wonderfully historic and picturesque city of Zageb in Croatia. You’ll hear more in a moment about Dalija’s development background but she also is an accomplished photographer as well as a respected author of some great coding books too. You can tell she’s a proper coder – she’s the only one so far to have returned her answers using MarkDown!
Dalija, thanks for agreeing to take part in the interviews!
Thank you 🙂
What would be your brief evening news summary of who you are and what you do?
Software Developer, Consultant, Book Author, Embarcadero MVP. Crashing other people’s software and writing my own since ’85.
Which Embarcadero product(s) do you use a) the most b) regularly?
Delphi, of course.
How and/or why did you become a developer?
When I was a kid, I wanted to be an astronaut. I was really into space, astronomy, science… and anything related to them. When I was about nine, the first Sci-Fi series I remember watching was Blake’s 7. And my favorite character there was Kerr Avon. A highly intelligent, sarcastic, computer genius. At the very beginning of the series, he said “Who controls the computer, controls the ship,” and this was the crucial moment when “I want to be an astronaut” evolved into “I want to control the computers.”
Of course, in real life, being a developer and knowing what I know now, controlling the computers and the ship is really an illusion. More often, it is the other way around. That is also why I never fully trust anything tech-related.
Do you think you will ever stop being a developer? If so, what would be next?
I could probably be a farmer… but I would be a farmer that writes code as a hobby. [Me too! We should both speak to fellow developer Alister Christie – he lives on a lifestyle block – IanB]
What made you start using Delphi/C++ Builder?
I learned Turbo Pascal in high school, and it quickly become my favorite language. It could do everything C could do, and it was much faster – not only for writing code, but for compiling, too.
What are you currently working on?
As you know, I have already written two Delphi books: Delphi Memory Management and Delphi Event-based and Asynchronous Programming.
I like writing books. It is an opportunity to share knowledge, but also an opportunity to learn. No matter how much you know about some topic, there are always some dark corners you need to shed some light on in order to properly explain it to others.
After writing the second one, it was fairly easy to switch into fifth gear, so I am writing more Delphi books. I don’t have any other specifics to share, yet.
But yes, there are new Delphi books on the horizon.
Which programming language would you recommend learning first?
If you could give some advice to a student who is considering a career as a software developer, what would it be?
Start learning by reading books. Learn about concepts and algorithms first. Languages are secondary. They are all limited by their implementation, and learning concepts through a language commonly leads to misunderstanding. Because different languages implement the same concepts in different ways, the coding patterns typically used in one language don’t necessarily work well in another.
Don’t let the rules rule you. Good practices and rules are more guidelines than hardcoded rules. They are meant to help developers doing common tasks. The moment a rule becomes a burden, you should stop applying it. However, this is a double-edged sword, and people quite frequently interpret this as a permission to break rules everywhere because they don’t fully understand the reasoning behind particular rule. Also, with time, rules and practices evolve, for one reason or another, and what was once a good practice might not be so good anymore.
Simple code is better than clever code. If you cannot achieve something with simple code, then—and only then—you can apply clever tricks. It is important to write down what clever code does and why, because you will forget it soon enough. And of course, explaining allows other people to understand your code more easily.
Experience will not stop you from writing idiotic code and making silly mistakes. Experience helps you spot and acknowledge such mistakes sooner, rather than later, and that is the first step toward fixing them.
Never stop learning.
Developers are not Jedi masters. “Do. Or do not. There is no try,” doesn’t work. It is “If at first you don’t succeed, try, try, try, try… try, try, try again.”
Tabs… or spaces?
Allman for braced languages, GNU for Pascal. The difference is in block indentation where begin..end needs additional indentation for cleaner separation.
What’s the best day you ever had as a developer?
There have been many… it is hard to pick one.
What’s the worst thing about being a developer?
You never stop coding in your head.
What’s the coolest development tip you know?
If you get stuck, take a bath, walk, sleep… do anything that relaxes you.
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?
Work from home. More comfortable setup. It doesn’t waste time on commuting. Your own toilet. You can survive the pandemic without changing your habits.
Tell us something interesting you think we might not know.
The first Turbo Pascal version I used in high school was running on CP/M. I was also in the first generation of high school students that didn’t have COBOL in their curriculum.
If you could wave a “fix the tech industry” magic wand what would you change?
I’d create a larger byte-bat! (For those who don’t know what I am talking about, there was a kind of rubber baseball bat in the 80’s with which you could hit your stupid computer without breaking anything.)
If you could convince someone to consider Delphi or C++ Builder what would your method be, how would you do it?
What I always liked about Turbo Pascal and later Delphi, is the fact that it is quite a universal language – not just in terms of being suitable for developing vastly different applications, but also in terms of allowing you to program on very different levels of abstraction.
You can use it as a RAD tool, for fast prototyping and development. You can write and use high-abstraction frameworks, where you can achieve things with just a few lines of code. And yet you can still go all the way down to the OS level and interact directly with OS APIs. On the Windows platform, you can even go deeper and write assembly code directly.
I really like that assembly part. I don’t use it too much nowadays, but for the rare occasions that I do, I am extremely glad that it is there.
I am not sure if this would exactly be a very convincing argument. Maybe this is a relic of the past, when the ability to go to the assembly level was an extreme advantage, but I just love that flexibility.
Which tech product do you wish you invented/designed and why?
When I was a kid, after watching Blake’s 7, I though it would be cool to have their computer, Zen, inside the watch, so I had numerous drawings showing what that watch would look like. Does that count? [DEFINITELY! – IanB, I’m also a Blakes 7 Fan!!!]
If you could live your life again would you still become a developer? Why?
Yes. Controlling the ship…
How many coffees do you drink a day and is it enough?
Plenty. It is never enough.
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?
Whenever inspiration hits!
In your career have you ever “pulled an all-nighter” to deal with something which absolutely had to be done?
Yes. But not nearly as many times as I did when I was in publishing. My longest run there was around 30 hours.
Describe some other things you’ve done in your career which might give readers a background into what makes a developer.
I am also a photographer. I think… 🙂
What is the most stupid question you get asked (none of these count!)
How long will it take?
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?
Hourly fee. Fixed fees work only for doing “template” customization, where you have a product that can be customized, and where the customization consists of very specific, known, and predictable steps.
How do you stop clients/program managers/managers from ‘feature creep’?
By saying how long would it take to finish it.
Describe a typical coding session for you. How does it start? Do you take breaks? Do you have any rituals/habits to accompany it?
Depends on what I am doing—whether I’m writing new code, debugging, or writing a book. The most common theme is that I Google a lot and read plenty of documentation.
I take breaks when writing, because you often need to stop and think before you write something. A short break gives you a chance to rethink and make sure you are not going in the wrong direction.
On the other hand, debugging does not like breaks, especially when you are tracking some elusive Heisenbug. You often need to keep track of huge amounts of code logic in your head, and any distraction or break will easily wipe all that and you will need to start all over again.
Do you listen to music while you code? If so, can you tell us a few tracks/artists/performances?
Sometimes. Movie themes, ’80s Pop and Rock… When my kids were little, and I was working and babysitting at the same time, that included listening to music from Age of Empires or Settlers IV all day long.
Do you use any methods or techniques such as Agile, Scrum, Kanban, TDD? If so, why? If not, why?
Short answer: Yes. It depends on the project.
Long answer: This is kind of a devious question. [Well, spotted! 😈 – IanB]
Any of the mentioned techniques has many variants (or, at least, people apply them in a freestyle manner). Saying yes to any of the above, does not mean that you follow a given process to the letter. And it does not mean that using one over the other is better. Just like good coding practices don’t exist in a void, and their primary purpose is helping you to achieve the end goal, project and quality management practices are also just part of the same process. If the process becomes its own purpose, then you have lost ability to achieve your final goal: completing functional, maintainable, quality software.
That is why I hate naming the parts of the process, because it is never set in stone, and it adapts to the project and team requirements.
Do you track bugs? If you do, what do you recommend?
No, I kill them on the spot. Sometimes that turns them into zombie bugs.
A good software developer:
A blunt developer, otherwise they make a bloody mess.
A bad software developer:
Me, yesterday 🙂
iPhone, Android, Other – and why?
No phones. Too much of a distraction.
For a developer: PC vs Mac? Why?
PC, because Turbo Pascal and Delphi run on PCs. Nowadays, I use Mac for iOS and macOS development, but it never really grew on me. I am not saying that Windows is perfect—far from it—but I am more used to its quirks. I cannot get used to the ones on macOS.
What is the one thing you would like to be remembered for?
My hat! 😛
What is the best developer/hacker/tech/geek movie?
How about the best developer book? The Hitchhiker’s Guide to the Galaxy.
When it comes to movies, I would probably say Back to the Future and Star Wars: A New Hope, but Sci-Fi series are the best. It is hard to rate them, because every
one I like is quite unique: Blake’s 7, Battlestar Galactica, Star Trek, Stargate…
No developer should be seen without:_____________________________
If a movie was made about your life, who would you want to play you?
1995’s Angelina Jolie. 😛