"The Best Programming Advice I Ever Got" with Danny Kalev
Name:
Danny Kalev
Job Experience:
I have been programming since 1988. I started to program on a DEC VAX 11/750 machine which even then was considered an antique. However, it was a great way to learn programming because it supported various programming languages such as PL/1 (which I still like), DCL (DEC's proprietary scripting language), Fortran and laterC. In the mid 1990s, I joined a huge porting project that converted the Israeli Interior Office National Registry database to a modern, client-server architecture. It was one of the earliest projects that used C++ (in 1994). I then moved to several new startups that focused on multimedia streaminga hot topic in the late 1990s. After that, I became self-employed. I have written three C++ books, and started a weekly C++ column on Informit in 2003 that ran for more than nine years. Today I'm a consultant for several IT firms. My main fields of expertise have remained C++ and object-oriented design. I also give lectures on these topics.
Most Notable Achievements:
- The Israeli Chamber of System Analysts' Award for Excellence in 2000, after publishing my ANSI/ISO Professional Programmer's Handbook.
- Master's degree summa cum laude in linguistics in 2004.
- The publication of The Informit C++ Reference Guide in a book format.
Most Frequently Used Programming Language:
C++
Advice:
When I write new C++ code today, I realize how much different the same program would have looked like only a couple of years ago. That's because C++ is changing fast, even after 30 years of existence. But it's not only the changes in the C++ standard that affect my C++ code. We, as programmers, learn all the time how to improve our practices. These two factors —language changes and skill improvementsrequire constant reading.
If you want to be a good programmer, you must dedicate much of your time reading C++ magazines, new books of leading authors, subscribing to professional discussion groups and forums, and communicating with your colleagues. Learning is a constant process that never ends. Apart from the exposure to new programming techniques and design idioms, reading professional material also teaches you accurate technical terminology. For example, the canonical four (constructor, destructor, copy assignment operator, and assignment operator) are formally known as the special member functions. Likewise, C++ doesn't have methodsit only has member functions so I always find myself puzzled at folks who still speak of methods and properties, when neither of these exists in C++. It's not hair-splitting or bigotrywithout accurate, professional, and uniform terminology you wouldn't be able to read the online documentation of your compiler, let alone more technical stuff such as the text of the C++ standard itself.
To conclude, read much more than you write, and stick to high quality material. Say goodbye to books that insult your intelligence. Instead, aim higher at professional, up-to-date material. That's the ticket.