Build opinions to become wise

25 Aug 2016 - Tags: me

I am Gianluca, I am 24 years old and I work as Software Engineer.

I like my work because there are really a lot of different kinds of Software Engineer, mainly because you can work in pretty much every environment like technology, food, cook, sport, fashion.

Also because there are a lot of stuff to do, if you like to work on a product, you build features to make happy other people to buy a car or to read a news on a online news paper.

If you like play with cables, racks, switchs you can work in a big or small farm and design fancy datanceters.

But I like this work because a lot of people have opinions. There are opinions built on top of big study or after a long experience but everyone is happy to share them and use them to build a new product.

I am a good PHP developer, because I worked for a while with this language and I tried to catch and verify good opinions from a lot of developers that come from different parts of the world and from different experiences.

I am happy so share someone of them with you:

<?php
namespace Opinion\One;

class Good {

    private $important;

    public function __contruct($somethingThatIReallyNeed)
    {
        $this->important = $somethingThatIReallyNeed;
    }
}

Usually I force myself (and when I can other people :P ) to inject objects from contructor if our object (Good) can not work without them.

This is a good way to be sure that your object will be completed, because you can not forgot nothing!

I use Zend Framework from a lot of time and I remember one class ServiceLocatorAwareInterface.

I have an opion, I hate this class.

If you implement this interface your service has a service locator! It’s powerfull today that you need to finish your ticket and go away with a new feature. After months a lot of people improve this service and they start to use a lot of other services without think about for what reason you built your service. Just because it’s really simple get random services from service locator.

Be wise, don’t allow people to write bad code and use your constructor to inject your dependencies!!

I have also architecture opinions like:

When you think about “How can I resolve this problem?” you must start from design pattern! They are documented and tested from a lot of developers and in more use cases.

Imagine your colleague that come to you around 5pm to ask how an entire libraries is designed, you can just reply “It’s just a SOAL client, see you tomorrow!” and you go to play basketball.

Or if you are building an API, OAuth2 could be a good choice for your anthentication service. It’s tested, there are a lot of clients and documentations. Your clients will be good to know that you are just using Oauth2 and nothing strange.

Well, I am not here to share all my opinion in a single post, all of them are just examples of what I mean for opinion.

An opinion is really important! But it’s just an opinion!

As a Software Engineer you need to have an opinion because every day people will try to have opinion for you: Microservices, containers, one big repository, golang/rust.

To build an opinion you need to make experience and to study it’s a big effort but to be really wise you need also to stay ready to change your opinion.

In my opinion this is the main difference between smart and wise people. I prefer the second one!