# What my father taught me about software development

Matheus Richard

My father is a construction man. Not one that works for a company, he worked mostly by himself or with a couple of others. One of the hardest jobs I’ve ever seen! I worked with him a couple of times. I know he didn’t like to see me working in this job—and I clearly wasn’t the most skilled employee—but I knew he could use some help. Between calluses and scratches, I occasionally received some tips and advice from him, but only now do I understand how those were helpful in my career as a developer.

## Theory and practice walk side-by-side

One day my father asked me:

Father: What would you do if you didn’t have a set square/triangle?

Me: Ammm… I… have no idea?

Father: You could build one! Here’s how: you make a line in the vertical with three units (cm/meters/etc.), then another in the horizontal with four units, and join two of their points. Then you add a third line joining the other two points and adjust it so that its length is five units.

I stopped and thought for a second. All of that made sense. Somehow, my father knew the Pythagorean theorem. I’ve always been amazed by how much math he could do (multiplication and division of large numbers, percentages) without almost no formal knowledge. He surely doesn’t know how to do them in the conventional way I learned at school.

Later, I would see him watching youtube videos for civil engineers, and he would learn things that helped him in his job, although he never went to college.

That made me realize that knowledge comes in various forms. Some people start on the practical field, while others on the theoretical side. Either way, when learning, it is good to have those two things walking side-by-side. This Donald Knuth quote well summarizes this thought:

“If you find that you’re spending almost all your time on theory, start turning some attention to practical things; it will improve your theories. If you find that you’re spending almost all your time on practice, start turning some attention to theoretical things; it will improve your practice.”

My father had all sorts of tools, each with a unique purpose. For instance, he had a laser level that would shoot straight lines even if placed in a steep spot. Yes, they were expensive, but they made work easier and faster. The pay-off was huge!

Much more than “use the right tool for the job”, my father made me realize the importance of having good tools to do the work better/faster than I could. I always hated doing repetitive tasks manually, so I tend to automate everything I can, even small things like directory navigation.

Additionally, it is also essential to master the standard/most used tools. In software development, that means learning your language semantics deeper than just syntax, knowing its standard library, or the hotkeys for your text editor/IDE. Those are skills that will help you every day. Invest in it!

It’s cliché, but work smarter, not harder.