· Daniel Madeley ·

From Civil Engineer to Coder: My Self-Taught Journey

How I learned Python and TypeScript alongside my structural engineering career, and why every engineer should consider coding.

career python learning engineering

From Civil Engineer to Coder: My Self-Taught Journey

When I graduated with my Civil Engineering degree from Leeds Beckett, I knew how to analyze structures, design beams, and read drawings. What I didn’t know was how to write a line of code. Four years later, I’m automating workflows, building web applications, and applying computational thinking to engineering problems daily.

Here’s how I got here, and what I’ve learned along the way.

The Spark

My first engineering job involved a lot of repetitive tasks: extracting data from CAD drawings, reformatting spreadsheets, creating similar calculations with slightly different inputs. I remember thinking, “There has to be a better way.”

A colleague mentioned he’d automated some reports using Python. I had no idea what Python was, but I was intrigued.

Starting with Python

Month 1: The Basics

I started with free resources:

  • Python.org tutorial: Official docs, surprisingly accessible
  • Automate the Boring Stuff: Free online book, practical focus
  • YouTube tutorials: Visual learners will appreciate these

The breakthrough came when I automated my first real task: renaming 200 files according to a naming convention. What would have taken an hour took 10 minutes to script (and 30 seconds to run).

Months 2-3: Engineering Applications

I focused on tools relevant to my work:

  • Pandas: For manipulating exported data from Revit
  • NumPy: For numerical calculations
  • Matplotlib: For plotting results

My first substantial project: a script that read steel beam data from an Excel export, calculated utilization ratios, and highlighted any overstressed members.

Months 4-6: Building Confidence

I started applying Python to real projects:

  • Automated load combination generation
  • Created reinforcement schedules from model data
  • Built a simple beam calculator for quick checks

The compound effect kicked in - each script saved time, and each project taught new skills.

Adding TypeScript and Web Development

After a year of Python, I wanted to build tools with better interfaces than command-line scripts. This led me to web development.

Why TypeScript Over JavaScript?

Coming from engineering, I appreciated TypeScript’s type system. It’s like dimensionally checking your equations - catches errors before runtime.

Learning Web Technologies

My path:

  1. HTML/CSS basics: Building static pages
  2. JavaScript fundamentals: Making pages interactive
  3. TypeScript: Adding type safety
  4. React: Component-based UI development
  5. Next.js/Astro: Full-stack frameworks

This website you’re reading is built with Astro and TypeScript - a project that taught me as much as any course.

What I’ve Learned About Learning

1. Project-Based Learning Works Best

Courses and tutorials are good for syntax, but real learning happens when you’re solving real problems. Pick a task you do regularly and automate it.

2. Embrace the Struggle

There were (and still are) days when nothing works and error messages make no sense. This is normal. The debugging process is where deep understanding develops.

3. Read Other People’s Code

GitHub is full of well-written code. When I learned Python, I read source code of libraries I used. It’s like reading good writing to become a better writer.

4. Don’t Try to Learn Everything

The programming ecosystem is vast. Focus on tools relevant to your work. For structural engineers, that might mean:

  • Python for automation
  • SQL for data management
  • Grasshopper for parametric design

You don’t need to master React unless you’re building web apps.

5. Teach What You Learn

Writing this blog, explaining concepts to colleagues, creating documentation - all reinforce learning. If you can explain something simply, you understand it.

Practical Impact on My Engineering Career

Time Savings

Conservative estimate: Python automation saves me 5-10 hours per month on routine tasks. Over a year, that’s significant.

Better Analysis

Computational tools let me explore more options. Instead of analyzing three load cases manually, I can analyze thirty programmatically and find the critical ones.

Career Opportunities

The intersection of engineering and coding is underserved. Being able to bridge both worlds opens opportunities:

  • Computational design roles
  • BIM development positions
  • Engineering software companies
  • Tech-forward consultancies

Problem-Solving Mindset

Perhaps the biggest benefit: programming has changed how I think about problems. Breaking complex issues into smaller functions, considering edge cases, testing assumptions - these skills transfer beyond code.

Advice for Engineers Starting Out

Start Today, Start Small

You don’t need a course or bootcamp. Open Python, print “Hello World”, and go from there. The barrier to entry has never been lower.

Solve Your Own Problems

The best motivation is automating tasks you find tedious. What do you do repeatedly that a computer could do?

Join Communities

  • Stack Overflow: For specific questions
  • Reddit: r/learnpython, r/structural engineering
  • LinkedIn: Connect with computational designers
  • GitHub: Share your work, contribute to others’

Be Patient

Learning to code is like learning a new language. It takes time, and there are plateaus. Six months of consistent practice beats six days of intensive study.

Keep Engineering First

Code is a tool, not a replacement for engineering judgment. The goal is to be a better engineer who can code, not to become a programmer who used to do engineering.

What’s Next

I’m currently exploring:

  • Machine learning for structural optimization
  • Building custom tools with APIs for analysis software
  • Contributing to open-source engineering projects

The journey continues. Every new skill unlocks possibilities I hadn’t imagined.

Conclusion

Learning to code as a structural engineer has been one of the best investments of my career. It’s not easy, and it’s never “done” - there’s always more to learn.

But the ability to automate tedious tasks, build custom tools, and think computationally has made me a more effective engineer. If you’re considering starting, don’t wait. The best time to learn was five years ago. The second-best time is today.

London