SJ blog

Civil Software Engineer

Software engineering has always had a weird characteristic that sets it apart from other engineering disciplines.

Take civil engineering, for example. It involves the design, construction, and maintenance of public and private infrastructure such as roads, bridges, dams, buildings, and water systems.

Now take building a dam. When a government decides to build one, a group of civil engineers start doing their measurements, designs, and calculations, and in the end, they do their magic!

They come up with comprehensive and detailed lists of designs, specifications, and instructions that show exactly how the dam should be built.

When you go to the construction site, you don’t see civil engineers working with forklifts, mixers, cranes, drills, or welding tools! There are other masters and skilled workers who actually build the dam. The civil engineers there monitor the project and steer the construction process.

That wasn’t the case for software engineers! We usually took on the whole job ourselves. Imagine software engineers wanted to build that imaginary dam. They would do all the engineering and design, but they would also operate the machines, weld things, lay the pipes, and pour cement all over the place. They would do everything needed to build the dam, just in different phases.

I have always believed our job as software engineers has two different parts: first, the engineering part, and second, the development part. We actually had to write all those functions, configuration files, and OS setups by hand.

But things have finally changed! Now we can stop doing the construction work ourselves and focus only on the engineering part.

In the age of AI and agents, we can finally hand over the labor to those workers, and they will do the construction work. Now we can sit back, steer, and guide the construction like a civil software engineer :)