Dan Abad: Passionate about Programming

Schlumberger software engineer and MCS alumnus Dan Abad.After nine years and 2600 flight hours with the Navy, Dan Abad navigated a career change. He wanted to be a programmer, and the Rice University professional master’s program in computer science became his new beacon. The alumnus (M.C.S. ’13) has now worked in software development and architecture for Schlumberger for five years.

“I got excited about computer science when I took my first CS courses as college junior in New Mexico. But it was too late to change my major, so I just stayed with business and then joined the Navy,” said Abad.

Programming continued to fascinate him despite the interesting work and locations he experienced as a Navy aviator. When he got a new computer in 2006, Abad started learning to program in earnest.

He said, “I was buying used CS course textbooks, and learning by doing the exercises on my own. When a friend noticed me teaching myself, he suggested I think about programming professionally, so I started making plans to get a master’s in CS while I was still in the Navy,” he said.

Abad received his Navy discharge papers in April, the same week he was admitted to Rice’s M.C.S. program. By June, he’d purchased a Houston home and in August, he was sitting in the first classes for his master’s degree. It was everything he’d hoped for and expected.

“Dave Johnson’s Operating Systems course was by far the best course I’ve ever taken, and the most impactful in my day-to-day job,” said Abad.

“I can’t speak highly enough about that course and it’s not just the material. Yes, it’s very important to understand operating systems and how they interface with hardware. But while you are working through that course, you gain skills that cannot be taught in a classroom. Johnson’s class helped me develop two skills I now use every day as a programmer: defensive programming and debugging.”

He said learning to code defensively from the beginning helps improve a project’s stability and performance in spite of accidental or malicious attacks. Knowing how to debug code is critical to tracking and resolving issues as they occur.

“You are writing this very sensitive piece of code. Then maybe a user enters something incorrectly and it crashes your system. One of our quality assurance engineers regularly unplugs the equipment in the middle of a test. Then he starts it up again to check the state of the system. Hunting down bugs that show up after an accidental error is really difficult, but if you’ve taken the operating systems class, you have an idea where to start.”

The complexity of designing and running concurrent programs is another type of problem Abad enjoys solving. In his work with distributed systems, he’s noticed that modern architecture is increasingly dependent on concurrent and parallel computing. He attributed his improved code writing to John Mellor-Crummey’s course on parallel computing. The class also taught Abad how to identify and fix other people’s code and introduced him benchmarking.

“Benchmarking your code is critical to understanding how fast it will run. Do a simple test ten times, then imagine a million items hitting it. If you start benchmarking early, you can detect symptoms and write more robust code. Benchmarking pushes the boundaries of your code.

“Management will always want to add more features, sometimes as soon as the prototype is ready. If you haven’t benchmarked along the way, you may not be able to prove how those features degrade performance.”

Keith Cooper also had a significant impact on Abad’s career. In addition to teaching students how to build a compiler, Cooper’s course forced students to become proficient at graphing tree structures.

“I use compilers a lot in my line of work. Understanding how they work is important, but you also need to be good at graphs. In fact, if you have that fundamental knowledge of your project’s underlying data structures, you can apply it to a lot of other projects as well.”

Abad has developed a wide range of programming skills to support Schlumberger customers as they drill for oil – work he deems important since improving the drilling process helps achieve maximum output with minimal impact on the surrounding environment.

“The big scope of my current project is supporting an oil rig automation system. There are a lot of hands involved in the drilling process, from the lease holder to the rig owner. It is very large in scope and a very complicated problem. For Schlumberger to automate the drilling, we will have to link the different companies’ processes together.

“In my case, I am looking more at the AI (artificial intelligence) output and how to translate that output into instructions that actually move hardware. The AI component provides a graph structure, which we transform to hardware commands. That definitely builds on the compilers course I took.”

He compared the AI output to the kind of GPS mapping information displayed in a mobile phone. Abad said instead of telling a driver how to get from point A to point B using surface roads, the drilling AI output indicates directions – or procedures – required to drill a well in a specific location.

“Early drilling automation worked a lot like cruise control. All it could do was maintain speed. Now we want to incorporate navigation, braking, backing up – actions which are not yet automated,” he said.

He also works with the user interface (UI), where drillers can look at several displays in a remote center and control multiple rigs. Abad has written low level code that communicates with oil rig hardware and he’s developed back-end microservices.

“It requires a broad skill set to make it all work together,” said Abad. “The technologies I use include four languages – Javascript, C#, C++, and Go – but you have to keep learning. Your architect may decide to follow a certain path, then the next year discover a new technology that outperforms the old. Existing technologies will be replaced and you have to be able to adapt.”

He is enthusiastic about learning new tools and technologies, and he remains excited about the never-ending opportunities to build projects with code.

“After a solid eight-hour day, even when I’m leaving the parking lot mentally exhausted, I still think, ‘It is so awesome, what I did today,’ and I couldn’t be happier. Some people see programming as means to an end. But for me, being down in the weeds and getting my hands dirty is what drives me. People who are really good at programming are few and far between. I may not even be that good at it, but it’s my passion, and that makes the difference.”

Dan Abad completed his Master’s of Computer Science degree in 2013.