Интервью /

Interview with Ricardo Martinez (November 2015)

How and when did you learn to program?

My first contact with programming was in one of my friends house in 1982 at the age of 12. His older brother had bought a second hand Sinclair ZX-81 and I felt fascinated with the "power" that some lines in BASIC could have connected to a TV set. I remember we spent the whole weekend programming stupid algorithms like printing odd numbers from 1 to 1000 and so on. The only documentation about BASIC we had was the 100 pages manual of that evil machine with no keys.

After then I was moping around at home asking for one of those. After some months I got Santa to bring me a Sinclair ZX-Spectrum. And it had keys!!! Rubber keys, but keys after all. With that one I spent hours and hours trying to understand the secrets of those PEEK and POKE mysterious words I found in the sample applications I had until I was able to draw an icon in the screen and move it around when some keys were pressed. Awesome!!!!!!

Some years later my father bought the first PC, a Digital XXXX with two 5,25" drive and CPM operating system, and I found it had A BASIC INTERPRETER!! and I could continue learning. Later I got MY first PC 8088 and learnt how to program batch files in bat and later I got Windows 1.0 and Access 1.0 and it was great to be able to handle structured data in a database. Then I started the college and I got contact with a lot more friends: Fortran, Pascal, Modula-2, Cobol, C, ADA, LISP, Assembler for Motorola-68000, Informix SQL ... woaahhh!

My first job was Cobol programming in MVS, with IMS/DB and IMS/DC and later DB2 and CICS.

After that I have used a lot more technologies and programming languages (Cobol/400, RPG/400, Java, VB, VBScript, Javascript, CGI Perl, ...). The last 15 years I have been using mainly Java, Perl and Javascript.

What editor do you use?

Depending on the programming platform and language. I started using vi in college but my first jobs were mainly full of ISPF and SPF/400. When I started with Java and Perl I used eclipse with Epic. When we left Java behind I was using Notepad++ for a while but changed to vim very soon. 4 years ago I found SublimeText as my preferred editor for any code and now is my main coding environment.

When and how have you been introduced to Perl?

In the late 90s I did some CGI perl programs to list directory contents and some other basic stuff. When we started developing deployment automations in the early 2000s we found Perl to be perfect for our purposes: parsing files, ftp files to servers, executing system commands, etc, and all that multi platform. So we developed lots of perl scripts to be executed as User Defined Processes (UDPs) from CA Harvest. From one project to the next we were learning more and finding more and better uses of Perl to get the needed functionalities implemented. One of the key moments was when we decided that we could get rid of the Java servlet for the batch execution of processes and refactor it in one Perl program so we could do our software independent from a java application server for the background processing. We got a lot better execution times and much more flexibility and easiness in the maintenance. Later we decided to move the whole app to a MVC model based entirely on a Perl platform (Catalyst) and ExtJS for the interface.

What are other programming languages you enjoy working with?

I have enjoyed every programming language I've work with, but through the years I've found that I enjoy dynamic languages much more than the others. PHP and Ruby are really nice and new execution environments like Node.js are also very enjoyable and I'd love to get deeper knowledge of those in the future.

What do you think is the strongest Perl advantage?

I've been discovering Perl through the years and I don't consider myself an expert but an average Perl programmer. I have always found an easy way to implement any functionality by using specific CPAN modules or a combination of some of them. Any problem I've found when programming perl, I have managed to solve it by searching on perlmonks or stackoverflow. But when I didn't find any documented solution (very few times) I got an answer in record times. So, in my opinion Perl is the most powerful programming language out there because of the huge community supporting it and the uncountable number of well documented extensions you can easily install and use.

What do you think is the most important feature of the languages of the future?

The languages of the future should be adaptable to the new forms hardware in the world of virtualization and containers where installing a fresh machine is one click away. There are very few built in functionalities in programming languages for parallel computing and concurrency among different platforms. I'd love to be still alive when the first CICS is successfully replaced by some parallel processing platform :)

Where do you work now? How much of your time are you writing Perl code?

Clarive Software Inc. Most of my work during the last 15 years is been dedicated to implement Lean Application Delivery and DevOps functionalities for companies that wanted to control their development life cycle from the RFC generation to the deployment in production, keeping track of every activity performed by all the roles in the IT organization and automating all tasks that are repeatable and modeled.

What exactly is the devops?

Most people talks about DevOps as a set of tools (or a tool chain) that automate activities that are owned by Operations teams to be executed by the Development team. But DevOps goes much further. DevOps is the merge and evolution of many concepts like Continuous Integration, Continuous Deployment, Continuous Delivery or Lean Application Delivery. To understand it better, the companies that develop their own software usually manage their life cycle with legacy methodologies, mainly waterfall projects with monolithic long releases as the result. In the last times "time-to-market" has become one the most important indicators on the enterprise KPIs, and it's definitely very difficult to improve applying those old methodologies. Adopting DevOps means first of all a change in the IT govern culture that implies the change in the way to manage all the steps in the software production, from the requirement management to the deployment in production. DevOps means collaboration between teams (Release management, Development, QA, Operations, etc ...), automation of technical tasks (Communication between tools, deployment of software and configuration, etc ...), traceability through the lifecycle and monitoring of the process. A company that implements DevOps completely, is able to shorten the release cycle to adapt it to the market and then improve the time-to-market drastically but ensuring that all the quality gates defined for the software to go to production are matched. Probably the benefits of implementing DevOps for a company in the modern world will take several pages but they can be summarized with an advertisement slogan: "speed with control".

One key point in DevOps implementations is understanding that there's software that must stay with the old methodologies (legacy) while the new technologies can be adapted seamlessly to the new methodologies. The coexistence of different methodologies and speeds is know as BI-Modal IT and most of the times is the biggest stoppers for companies to success in the implementation of DevOps.

If you could start your project from scratch, would you still choose Perl?

Definitely I will chose Perl. I will save the head aches of the first times when java server code was the only/best solution for multi platform web interfaces. Probably we will re-evaluate the architecture and options for frameworks and user interfaces but the final picture will remain Perlish.

Do enterprise clients care about the technology that is used behind the services?

Most of the times they ask about it, but just as curiosity. They tent to feel much more comfortable with technologies they already use (mainly Java) but the don't really care if the support and maintenance is correct and they are not required to acquire any new software to run the toy.

Currently we are in the process to add some more "standard" programming languages to the options for extending the platform (like PHP or Ruby) since our implementers and customers feel easier to find low level programmers in that fields.

What do you think about software testing, where is the balance between fast feature delivery and stable maintenance?

Unfortunately, I didn't hear about TDD until some years ago and I would have loved to start my programming life with a "testing mind". Now (and I hope it's not too late) I'm realizing that testing is fundamental for delivering software with the desired quality. The relation between speed of delivery and effort for maintenance changes from exponential without testing ( very fast delivery in the beginning but infinite maintenance in the future) to logarithmic with testing ( not so fast delivery in the beginning but completely stable maintenance).

Should we encourage young people to learn Perl right now?

YES!!!! Perl is great for learning, very easy to start with, very well documented, very powerful to go further in programming and definitely will stay as a standard for systems programming and a very good option for people that need flexibility, modernness and richness in a programming language.

Interview by Viacheslav Tykhanovskyi (vti)