Accelerate your digital transformation using Python!

Accelerate your digital transformation using Python!

With this article, I would like to share my experiences and thoughts on how engineers can use their programming skills to boost the digital transformation of their companies by making digital building blocks. These blocks can be used to make custom applications quickly, for example parametric design or artificial intelligence tools. Also, why Python is the best language for doing this.

I also share the thoughts of a handful experts, who were willing to be interviewed by Lisa de Kluijver or me, and contributed with their experience. Special thanks to:

  • Lieke Melsen – Assistant Professor Computation Hydrology at Wageningen University
  • Thijs Damsma – Data engineer at Van Oord
  • Jacco Hoekstra – Professor CNS/ATM (Communication, Surveillance, Navigation / Air Traffic Management), and former Dean of the faculty of Aerospace Engineering, at Technical University Delft
  • Johan Tuls – Structural Engineer at BAM Infraconsult
  • Philip Vollet – Senior Data Engineer at KPMG and Machine Learning and Natural Language Processing (NLP) specialist
  • Maaike van Putten – IT trainer and developer at Bright Boost

This is the first of a series of articles about engineering and Python. Each time we will go into more deep and talk about solving specific problems. The next articles will be published soon. So:

Stay tuned! Connect with me or follow, so you do not miss the next article!


Accelerating your digital transformation

Eight years ago, I graduated from Aerospace Engineering at the University of Technology Delft. During my study I used all kinds of parametric design models, advanced analysis and optimization techniques. When I started working as a structural engineer, I was disappointed: there was never time, budget, and willingness to create professional software tools that could make a big difference in the long term.

Frustrated by the large amount of boring and repetitive tasks of a typical engineering project, I went on making software tools using project hours. This was taking a little risk and it felt a bit clandestine. I was supposed to just update the models and reports, but it seemed that no one cared as long I was meeting the deadlines. I never regret this decision, as those tools enabled me to react more quickly to the many design changes in a project.

It took me a while before I discovered the best programming language to do this. At university I learned to use Matlab; however, not every engineering company I worked for could afford those expensive licenses. Frustrated by the limitation of my Excel sheets I decided to give it a boost by learning Visual Basic (VBA). What a bad choice. I wish that someone had told me: use Python!

With time I had a small library with codes. It was like having a box with digital building blocks that I could connect and combine to solve a specific problem, making it each time easier and quicker to make those programs. The advantages of having a software library were obvious, but why were the companies for whom I was working not building their own libraries?

Johan Tuls: “Construction companies grow linearly but programming their own building blocks makes it exponential. Programming building blocks is like building up capital. Each time you can make more, better, quicker and cheaper software applications, making big steps forward.” 

It took me some time to understand. Many companies work project-based, and that was exactly the problem. Everything needs to be done between the scope, budget, and limitations of a project. This model does not stimulate creating software as a company, which can be used in several projects. Due the lack of good software, design changes need to be done individually by each discipline, models are updated manually and there is a lot of communication. Therefore, each change has a significant impact on the progress. I call this the sawtooth effect (see figure).

No alt text provided for this image

Making custom software tools as a company requires a change in mentality. It is investing upfront and benefiting later. Making a proper software tool from scratch is risky and can require a huge effort at the beginning of the project. However, when done properly, progress can go exponentially. Calculating and reporting a design change can become a matter of minutes (see figure).

At the beginning, progress is hard to track and makes people nervous. I think this is a big reason why many companies are not making the step to make custom software for their projects. The solution is investing in digital building blocks. Once you have a few, you can re-utilize and connect them to make software applications quick and benefit immediate. This digital building blocks are assets for the company, which everyone can use and provide a long-term benefit.


Some background info about Python

Python was created by Guido van Rossum and first released in the beginning of the nineties. The aim was to help programmers write clear, logical code for small and large-scale projects. And that is exactly the reason python has grown as big as it is now.

Professor Hoekstra: “Python is the future because it is a lingua franca. It transcends all platforms and domains. You can use it for infinitely different software applications. This makes Python unique.”


No alt text provided for this image

There are a couple of reasons why Python has become so popular:

  • It is free and easy to learn! For all programming languages it is probably the one that resembles English most. This means you can go fast from thought to code.
  • It is not only about the language. It is also an amazing open and accessible world of knowledge and available resources.
  • You can do anything with Python, from simple maths to scientific calculation on a supercomputer, including data sciences, machine learning, web-based applications and much more.
  • It is very scalable and suitable for working with several people and from different disciplines. You can start small and slowly build up and digital empire. Do you not believe me? Google, Facebook, Instagram, Spotify and Netflix. They all use Python. 

 Digital Building Blocks

I noticed that the common approach to build scalable software and cooperate with other specialists is thinking in digital building blocks which can be connected to each other. This make the process versatile and scalable. Some benefits of using the building block approach are:

  • You can build code fast by utilizing someone else work!
  • It enables people to share knowledge in the form of code.
  • It makes it easier to replace parts of your code
  • Makes growing the code controllable, as each block has a specific function!

This approach started in the software development community, with object-oriented programming and packages you could use to make your own software tools. Nowadays, it is becoming more popular in engineering, data science, architecture, and the scientific community.

Anything you can connect and command can be seen as a building block. It could be a simple script, one of the many free Python packages or a FEM software.

Objects, the building blocks of Python

Python is object-oriented. This allows you to break down your software into small problems (objects) that you then can solve, one object at a time. It is like building something from smaller components. This is similar to how I, as an engineer, look at physical objects that have to be designed, built and maintained.

To make an object you need to define a class, which is a template to make objects where you define its behaviour and properties. A class can be used to make as many objects as you need. The great thing is that you can use properties of different objects for other calculations or creating a ‘larger’ object. For example, you can create many beam objects, and use its mass and stiffness properties to calculate the deflection in the bridge object.

Information between objects can flow very freely. This is totally different to scripts typically made when using Visual Basic, Matlab or in a FEM packages. Here the code runs top-down, meaning that changing something in the code will affect everything beneath it. This is like playing Jenga. The more complex it gets, the greater the chance it will collapse. With python this problem does not exist.

In general, you can see objects as digital building blocks for making a larger software program. Allowing different specialists to build, maintain and improve their objects, and share it with the rest to make something even more awesome!



No alt text provided for this image



Free building blocks

The Python Package Index (PyPI) has 243,692 packages you can use for free! Most are not self-standing software but building blocks for making software tools. There are packages for visualizations, machine learning, data science, numerical calculus and much more. Their quality is very high, so use them and build your code fast! 

For example: Numpy can be used to do matrix operations. Its functionalities are comparable to MATLAB; Pandas helps you manipulate and analyse large sets of data without having to learn a specialized data-processing language; and PyTorch enables you to use machine learning without being a specialist. Which ones do you use the most?

Thijs Damsma: “There is a democratization of knowledge. It has become easier to use other people’s tools and get insight into other disciplines thanks to many available packages.”


 Engineering software is just another block

Quite often I hear that engineers are finding the limits of the standard software packages they use, and this is leading to a change in mentality. Nowadays, standard software packages are not considered to be the total solution anymore. These software packages are just part of a greater process and engineers are now searching for connectivity.

These days a large number of external software packages can also be commanded with Python. This is very powerful, as it enables you to use them like any other digital building block in your code. For example, you can combine a cost model made in Excel with a structural calculation in FEM to find the cheapest solution that satisfies the structural requirements. This can also be done with e.g.: Grasshopper, Dynamo, SCIA, Plaxis, RFEM, AxisVM, Diana, Excel, ANSYS, Deltares D-Series and many more.


No alt text provided for this image

 What’s next?

As an engineering community we still have a great challenge: the distribution of knowledge. What do you think is the best way of distributing digital building blocks and making knowledge available to others? I would like to hear your opinion about this topic, so please leave your comment.

Personally, I think there are two groups: the programmer, who can read, understand, and use a code; and the end-user who cannot program.

For the first group, good distribution channels are still missing. As a result, many of these specialists are programming the same theories or creating programs for solving the same problems again.

Lieke Melsen: “We lose enormous amounts of time by programming the same models. If there was a central place where these models where available, we could invest that time in going forward.”

I believe that there will soon be marketplaces where specialists can offer the software applications they made, so they can be used as digital building blocks to solve larger or more specific problems. There should be a financial compensation, such that companies and freelancers see this as an investment, and the creation of specific engineering tools is stimulated. After all, they are the ones that have this valuable knowledge. Are you interested in such a marketplace or making specific software that other people can use? Please leave a comment in this article.

For the second group, the ones that cannot read code, another solution must be found. I am a strong believer in user interfaces and online software applications. This is the topic of a next article: how to make a professional application. Turning your code into something that everyone can use.

Philip Vollet: “A big benefit of web-based applications is that the different disciplines have access to a common environment and make decision based on the latest version of the information.

 

Want to know more?

This is the first of a series of articles about engineering and Python. The next articles will be published soon. We will talk about how you can make professional engineering applications that everyone can use, as well as on how you can make parametric design tools using Python and common engineering software like Grasshopper, Dynamo, SCIA, RFEM and IDEA. To write these articles we interviewed engineers that make these kinds of tools on a daily base. Real pros!

Stay tuned! Connect with me or follow, so you do not miss the next article!

Maybe you wonder why I am writing this. I am from the company VIKTOR and we are on a mission to unleash the world’s real engineering potential. We are developing a platform where engineers can build their own web-based applications using Python. We work closely together with engineering, construction and manufacturing companies and help them boost their digital transformation. We would love to hear your feedback on our ideas, try out the platform, and help us create the perfect tools that enables you to:

Automate the boring. Engineer the awsome!


Giovanni Greatti

Retired - PCB & ICT Adivsor

4 年

Very excellent article Anande ... I shared also in Twitter! Stay tuned and have a really nice w/e... Rgds, Giovanni

回复
Carlos Eduardo do Nascimento

Engenheiro Civil | Projetos | Estruturas

4 年

Thanks for sharing

回复
Eleni Smyrniou

Geotechnics and AI | Medior Advisor/ Researcher at Deltares

4 年

Interesting article Anande. And also really nice to scroll through the comments and read the experience of other engineers. I think also accessibility is for me a big factor. Usually every engineer ends up having their own personal automation tools. Would be nice to have a generic library instead!

回复
Joeri van Zuilen

BIM Regisseur bij Antea Group

4 年
回复

要查看或添加评论,请登录

Anande Bergman的更多文章

社区洞察

其他会员也浏览了