Pragmatic Podcast with Robert Martin
I have a mixed relationship with tech podcasts. On the one hand, if you are well acquainted with the topic, then you are unlikely to learn a lot of new things, and if the topic is new to you, then getting to know it normally for an hour of audio material is very difficult. In addition, far from every topic in the field of software development can be described without code examples, diagrams, and figures. But nevertheless, from time to time there are quite interesting podcasts that tell about new products in a particular area, or conduct interviews with interesting and often well-known comrades who even manage to tell a lot of interesting things in such a tough framework.
So I just recently came across a “progmatic” podcast with Robert Martin , a “comrade” well-known author of SOLID principles(more precisely, this abbreviation), several books, and generally a person with more than forty years of experience in our field. Since a considerable part of this fame falls on the abbreviation SOLID, it is not surprising that in every interview with the participation of "uncle" Bob he is asked this question. But in this case, my interest was not that Robert still remembered these principles, but that these principles were already nearly 20 years old. According to Robert, the term appeared around 1993 as a result of communication on USENET. It turns out that the concept itself took almost a decade to gain fame.
Another, no less interesting topic was the idea that it is very difficult (if at all possible) to develop reusable code from the very beginning. Of course, no one is trying to convince anyone that reuse is impossible or the development of any library is doomed; rather, it is a matter of the fact that the development of programs is complicated, and the development of reusable programs is even more so. And when architectural or design decisions are made at the early stages of development based on the assumptions of some kind of community, this often leads to a waste of resources. Trying to create a generalized solution when it is not clear what a single program will do is not such a good idea.
Bob believes (and I agree with him) that such reusable parts of systems can be “grown” (or developed) rather than developed from scratch on purpose. At the same time, when developing a system, it is sufficient to use well-known generally accepted design principles. No wonder Eric Lippert (and many other specialists) considers premature generalization to be one of the main problems when prematurely complex design or architectural decisions are made for the sake of potential benefits, as a result of which we don’t get reuse, we we cannot even bring one system to mind. The result is an overcomplicated system that begins to crumble under its own weight and then other concerns begin: how to make ends meet and somehow bring the current project to mind.
Still, Bob Martin reveals the secret of finding qualified personnel: to find high-class specialists, it is enough to attract ... high-class specialists to their search. This formulation of the question resembles the well-known philosophical question of what is primary, a chicken or an egg. Nevertheless, as practice shows, it is much easier for highly qualified specialists to find like-minded people in the person of specialists of the same level. Needless to say, the process of selecting people is still difficult, and assessing the level of the candidate is extremely subjective, but nevertheless, you have little chance of getting a professional at your disposal if a newbie interviews him. Indeed, in this case, how to determine whether a person really knows something or if his tongue is just suspended and he knows how to poison stories in a cool way.
This is not the whole list of issues Robert Martin spoke with Meyels Forest (this is the name of the host). The podcast also discussed the role of business analysts, training and mentoring, functional programming and dynamic languages, SICP and much more. So I didn’t reveal all the cards here and listening should still be very interesting.
Here are a few more podcasts that I occasionally listen to (the list is not complete, but it might be of interest to anyone):
1. Pragmatic Podcasts. There are not many podcasts here, and most of them are devoted to books that got out of hand (or from what books come out there) of Pragmatic Bookshelf. So the topics there are different and you need to choose what specifically interests you. But some of them, it seems to me, will interest a fairly wide audience.
1.1. Robert Martin interview
1.2. Andy Hunt on Pragmatic Wetware
1.3. Dave Thomas on Pragmatic Publishing
2. Software Engineering Radio. This is one of the most serious and popular podcasts and it should rightfully go first on this list. The range of topics there is very wide and, I think, everyone will find podcasts on an area of interest to him.
3. Code Cast. Although these podcasts are called “Code Cast - The Late Night Show for .NET Developers,” you can find there a lot of useful things not only for .Net programmers, since the list of topics that go up there is quite wide: starting from PowerShell and Iron Python, ending with SOLID principles, UML, and iPhone development.