3 min read

Excel, Python, and Civil Engineers

The question is this: is it Python or Excel for Engineers? How about both.
Excel, Python, and Civil Engineers
Photo by Rubaitul Azad / Unsplash

If you asked me back in engineering school if I'd be doing any coding in the future I'd say you were nuts! Yet here I am 30 years later and have been coding in Python, AutoLisp, and Excel. In fact, until recently, most of my engineering work outside of AutoCAD and pulling together variance applications has been running calculations and simulations in Excel.

This realization hit me the other day when I was moving backup files off Dropbox and to OneDrive and I came across an Excel template that I built to size a drywell. I've written countless spreadsheets that calculate various civil engineering processes. I have ones that calculate hydraulic grade lines of storm sewers, groundwater recharge, and so many more. I used all these spreadsheets when I worked full-time at an engineering firm and in my small engineering consultancy.

Drywells are structures that collect stormwater runoff and store them till the water can percolate into the ground.

That's the thing about engineers, we like to simplify processes, automate them, and use resources wisely. Using Excel with a bit of Visual Basic to calculate a repetitive task was a no-brainer for a lot of my work.

I opened up the drywell sizing template and realized that it wasn't the final one I wrote, rather it was a minimal viable product (MVP) and the basis for a richer Excel template using Visual Basic later on.

While it's a simple spreadsheet, it reminded me of just how much important knowing how to program had become.

Drywell Sizing Excel Template, (c) Thomas Ott

Today, I spend most of my time writing Python; mainly because it's the defacto way to interact with many machine learning libraries.

Python or Excel for Civil Engineers

Finding the Excel template made me wonder if Python would eat Excel in the long run. After all computer vision is creeping into the industry, would Excel be kicked to the curb in the process? Would Civil Engineers abandon Excel for Python in the future? I think that answer depends on the use case and the answer isn't a binary outcome; it can be both.

My opinion is that Excel will continue to be used by 1,000s of Engineers worldwide. We'll still be building Excel templates to calculate roof loads, retaining walls, and do drainage analysis. Instead, Python will worm it's way into Excel itself if Microsoft delivers on it's promise.

If Python in Excel is delivered as a GA product then Engineers will have access to all kinds of possibilities. Imagine loading in Matplotlib into a spreadsheet and generating better graphs than the ones Excel has to offer. Imagine importing different machine learning algorithms like XGBoost to analyze your data.

The use cases and options are endless for Engineers and I'm excited just to think about this.

The question that engineers need to realize is this: it's not Python or Excel for Civil Engineers, instead it's Python AND Excel.

Focus on productivity

Whether or not Microsoft delivers on its promise isn't the important thing here, it's about being productive. Engineers in different disciplines will gravitate toward computer languages, systems, or software that allows them to be do their work faster and more accurately.

It doesn't matter what it is as long as you get the job done. For example, I've written a few AutoLisp programs to help me fix drafting mistakes in AutoCAD. I even tried rebuilding a few of my Excel spreadsheets in Fortran for fun and quickly abandoned it.

AutoLisp is a derivative of Common Lisp and a proprietary feature of AutoCAD.

In the end, I keep coming back to Excel to do the heavy lifting for my calculations outside of my machine learning life. For everything else, I use Python. Why? Because Excel and Python let me be fast and productive. That's all that matters in the end and my clients don't care. They care about me delivering accurate and high quality work faster than anyone else, and that's how it should be.