** this blog post was written 2 months ago, while I was still in my software engineering boot camp
Currently working through my Software Engineering Bootcamp through Flatiron School. We are learning about Object Oriented Programming and I came across this quote:
“We are modern craftspeople, building structures that make up present-day reality, and no less than bricklayers or bridge builders, we take justifiable pride in our accomplishments.”- Sandi Metz, Practical Object-Oriented Design in Ruby
Well, that's funny. I used to be a bricklayer/ bridge builder. Ok, not exactly, but as a civil engineer, it wasn't too long ago that my field ancestors probably WERE laying bricks.
Here I want to explore the transition of working on real concrete things (with actual concrete most of the time!) to building something I cannot see or touch.
I worked in the field of geotechnical engineering. This involved designing structures that interacted with the soils, such as foundations, roads, utilities underground and tunnels. The process involves design sure, but there is a physical construction phase as well. I’ve actually been to the sites and seen the designs implemented in real life to come together as a structure. A bridge foundation being poured, roads being paved and excavations into the ground to expose the soils.
One of the things I worried about in my transition to coding was the loss of tangibility. You cant really SEE your code... Sure, now I’m writing small programs that can manipulate data and after writing it I can see it works. But my code doesn't take up space in the real world as a concrete dam would. I'm worried I’ll miss seeing the soils.
Most often, software engineers are working on a small part of a larger application. This means you rarely get to work with the entire operation. So will I feel like I’m working on something I can’t fully grasp?
What coding has provided though, is immediate confirmations. I may not be able to see what I’m building, but I can very quickly see that I’m headed in the right direction (ok, usually the wrong direction). You can quickly check your results, and re-adjust and do it over and over. You can run small parts of your code, or use tests, experiment with inputs, etc etc. All this at a much more efficient and interactive way than you could with the design of a foundation.
So I suppose I exchanged tangibility in the end product to more tangibility in the process itself. All I know for sure is that the joy and rush I feel from seeing all the green text on passing tests makes me want to keep chasing that feeling.