Welcome to our continuing series of Code
Project interviews in which we talk to developers about their backgrounds,
projects, interests and pet peeves. In this installment we talk to Michael
White,
a Systems Engineer at Visa. To learn more about Visa technology, check out the Visa Developer Program.
Who are you?
My name is Michael White and I work in
the Systems group at Visa
in Foster City, CA. I also live in
Foster City, so I’ve got a great commute.
What do you do?
I work on the Visa Integrated Payment
(VIP) System. This is the mainframe system that processes Visa’s real-time
authorization messages. It sits at the core of Visa’s processing platform and
is the underlying system for all of the different card authorization platforms
offered by Visa.
VIP isn’t flashy or even well known to
most individual cardholders, but many of them use it several times a day.
Nearly all Visa transactions that take place anywhere in the world flow through
this system in real time, so it is critically important that it be secure,
robust, and efficient.
Transactions are processed via messages
(typically two messages, a request and a response, per transaction) and last
year VIP processed over 11,500 messages every second during our busiest peak
season period.
I used to work in the VIP Applications
Development group but have since moved to the TPF Systems group. TPF stands for
Transaction Processing Facility and it is the mainframe operating system that
the VIP application runs on. Our group’s primary responsibilities are to ensure
the availability and performance of the VIP system and capacity planning for
the system to accommodate transaction rate growth.
One of the main projects I work on is
the annual VIP Stress Test. Each year, Visa
performs the VIP Stress Test ahead of our "peak season" (the busy shopping
period between November 1st and Christmas when Visa transactions
reach their highest volume) to ensure that the VIP systems are ready to handle
the expected message rate, as well as any unexpected hardware or network
failures. Any hardware or software changes that have been made, or are planned
to be made, before peak season are tested to ensure that they will leave us
with a system that is up to the task of handling our peak season transaction
volume. We also ensure that we can handle the Peak volume even if we were to
lose an entire data center.
This type of preparation and failure
resistant system configuration has led to 20 years in a row of "perfect" peak
seasons, meaning the VIP system has had 100-percent availability.
We also use the VIP Stress Test to
evaluate new hardware and major software changes before deploying them into our
production environment.
It’s very fulfilling to work on a system
that is used for purchases made by so many people and that is so important for
commerce around the world.
What is your development environment?
When developing at work, I use an IDE
built by IBM called TPF Toolkit. Toolkit is
built on Eclipse, so if you
imagine Eclipse without all of the handy add-ons for Java development, you’ve
got a pretty good feel for what Toolkit is like.
I develop mostly in C++, but there is some legacy code
that’s still in assembler that I work
with from time to time. C++ is my favorite language; it’s the first one I
learned and always feels like home.
As strange as it may sound, I’ve also
come to enjoy assembler language over the years. I’ve always enjoyed trying to
make code as efficient as possible, and the challenge of coding something
complex in assembler with as few instructions as possible is always fun.
What new tools, languages or frameworks
interest you?
I’ve wanted to develop some Android apps for a
while now. We have other groups at Visa that do great work with mobile
development but that’s not my area. My daughter is a budding artist and we’ve
been talking about collaborating on an interactive children’s story or game app
that could showcase some of her art.
What is your coding pet peeve?
My biggest pet peeve is poor or missing
comments. When you work on a large application with a huge group of developers
spread all over the globe, which deals with a wide variety of variations based
on countries and regions, you come to greatly appreciate clear, concise, and
thorough comments that are updated and kept accurate.
I like camelCase, keep it
clearSimpleAndToThePoint();
For indentation, I prefer K&R.
How did you get started programming?
When I was in fourth grade, we started
using Commodore PETs in school. I
figured out how to write a program that played sounds, which was considered
"cool" at the time. My teacher brought the class to the computer lab for me to
demonstrate it and walk through the very simple code (I was in fourth grade
after all).
That summer the school principal called
my mother and asked if I would come in and help set up the computers for the
coming school year. I spent several days loading up programs with cassette
tapes (yes, cassette tapes!) and a computer nerd was born.
I played around with Commodore 64s later but then
I took a fairly long hiatus from computing.
I got back into programming around the
time Windows 95 came out, mostly playing around with DOS and Windows. I was the
"computer guy" for all of my friends and family for many years before it
finally became too much too handle and I had to start limiting the number of
people I provided tech support and computer building services to.
Eventually, I made my way to the
Electrical Engineering and Computer Science program at U.C. Berkeley, and I started working at Visa shortly
after graduating.
How has the developer community
influenced your coding?
There are so many online resources
available to the developer community today that I think they can’t help but
influence nearly every developer. Got a quick syntax or API question? A Google
search will give you the answer in seconds. Writing a utility for use at home?
Chances are there’s an idea for a solution (or maybe even the code already
written) waiting for you on the web.
I’m a big fan of open source, and I
sometimes upload the small programs I write for home use.
I’m a bit of a dinosaur when it comes to
social networking; I don’t even have a Facebook account! My girlfriend spends
enough time on Facebook for the both of us though, so I think it sort of evens
out.
When I see questions I can answer on
forums, I try to help out and give back when I can. For playtime development at
home, I run my own Subversion server on a
Linux box in lieu of an online service.
What advice would you offer to an
up-and-coming programmer?
Pseudo code, pseudo code, pseudo code!
We all learn the saying, "resist the
temptation to start writing code" early in our education, but it’s an urge most
of us struggle with throughout our careers. The truth is, anyone who can use a
keyboard can write code, but only a true developer can write robust,
extensible, clean, and efficient applications.
Figuring out a design, layout, and what
will make the best APIs is really the fun part anyway, and these are much more
valuable skills than being able to memorize syntax or hammer out little bits of
code quickly. There’s a ton of coders out there, but developers who understand
how to design, organize, and explain why the chosen options are the best are
much rarer. Improve on those skills, and you will immediately see results in
the applications you develop.
It’s also a virtual certainty that
you’ll eventually see the difference in your salary or whatever other benefit
you receive from the applications you develop.
Read more developer interviews on the Visa Developer blog.