This week we interviewed Davide, PHP Ecosystem Developer at Contentful: he told us what led him to choose this career path after his language degree and what are the pros and cons of being a remote worker.
Can you tell us what your job as a PHP Developer is about and how you chose this career path against your languages degree?
Starting from the second part of the question: I have a diploma as an IT technician but my first work experience in this field was not fully positive and thus it led me to wonder whether all the problems I had were due to the job specifically or to the field in general. For this reason, at that time, I decided to undertake a different study path because I have always been interested in languages.
As time passed, I realised that informatics is an essential part of me, and that first bad experience was due to the work environment, not to the work field itself. For this reason, as I was about to get my languages degree, I started being attracted again by programming: unexpectedly I got a call from a company that had found an old CV of mine online so I started working as a developer again.
The positive aspect of having a languages degree is that my work opportunities are wider. For this reason, after one year since I started again coding, I sent my application to a German company based in Berlin. I did several online interviews and some in person, and then I started working there as a writer for the marketing department. The company operates in the Saas (software-as-a-service) field and in the marketing department they needed someone who could write very well and had supporting IT skills: for these reasons, I was chosen for this role. Everything was fine apart from the fact that programming was far more attractive than my role as a writer, therefore, also due to personal needs that led me to go back to Italy, I found an agreement with the company to change role and start working for the engineering department as a PHP Ecosystem Developer, 100% remotely.
What are the most interesting aspects of your job? What do you like the least?
An interesting part of my job is that (almost) everything I do is released as open-source. By visiting the Contentful Github page, you can see a lot of tools released with open source licenses in order to foster transparency and collaboration with the community.
Moreover, there’s a real focus on job quality, and often there’s the chance to achieve more than satisfying compromises in the eternal fight between forthcoming deadlines and perfectionism. My company works with agile methodologies and there’s a constant feedback mechanism that guarantees that every project is carried out in the best possible conditions and objectives are achieved as a result of a collective effort.
There are just few things I don’t like and I am really grateful for that. Obviously, working remotely for a company where almost all employees are located a central office has many difficulties that are not insignificant. Sometimes there’s the risk of feeling misfit: for this reason communication skills are important, so as having colleagues who make an effort to include remote workers in chat conversations rather than limiting themselves to those in person. Luckily in my team 3 out of 9 people work remotely, thus I don’t feel alone in this situation.
The only other negative aspect of my job is the occasional lack of variety. Working for an agency has the advantage of continuously managing different projects and challenges, while in a product company you frequently have to deal with a single problem for long periods of time. Luckily these problems are frequently interesting and involving so it’s hard to get bored!
What advice would you give to any colleague who wants to distinguish in his/her job?
This is a hard questions. Honestly I don’t believe that there are many companies with teams dedicated to integrate “core” service with third-party systems in such a transparent way as it happens in my case. The first recommendations I would like to give is to try being part of dedicated communities, be aware of trends, of events, and generally of what happens. It’s not necessary to play an active role in these communities but it’s important never to stop paying attention to them. I can hardly know if I’ll be asked to create an integration between our services and a newly-born framework, or if I’ll be asked to modify existing integrations to make them more them more up-to-date with new technologies. For this reason, I make a great effort to integrate the latest standards and to do everything to the letter in order to offer to the community a high quality and innovative tool.
Another factor that is also fundamental relates to testing. My philosophy is “if the code is not tested, it is potentially a source of bugs” independently from the what the entity of the bugs may be. When I started my job I inherited some code snippets from the developer who was in my position before me. About 90/95% of the code was tested: the remaining 5/10% contained bugs. A developer should always strive to test 100% of the code. Of course, this is not always possible and even when code is 100% tested this doesn’t mean that is completely free from bugs. I personally prefer and recommend to work using TDD methodologies and to write appropriate tests.
How do you think your role will evolve in the future? What tools do you use to keep you up-to-date?
Being mine a very particular role, that is different from an agency developer, it’s hard to understand how it may evolve in the future. I would like to get a role closer to the clients, give them architectural support and help them to define best practices. It frequently happens that our clients try to modernize their architectures: they get rid of old monoliths and try to replace them with smaller and more easily manageable components. Given my role as a software developer, I believe I have a unique perspective on how the core product of my company works and what the requirements of the developers working on the PHP platform are: for this reason, I see in my future an increasing integration among the different development stages, both internal and external.
To stay up-to-date with current trends I use different tools: blog, newsletter, conferences…the most difficult thing is to understand what is worth to be followed.
Unfortunately PHP has not a good reputation because for many years it has been seen as a “toy” language full of problems; there are indeed frequent security issues on WordPress, which keeps supporting old and unmaintained PHP versions (it supports PHP 5.2, a version that hasn’t received security updates for more than 7 years). Generally speaking, in the PHP ecosystem, there are dedicated communities I like to recommend, among them PHP-FIG, the PHP League, PHP The Right Way, PHP Unit, Symfony, Zend Framework, Laravel (on the last one I’ve some personal reservations). These communities frequently offer food for thought: for this reason I follow many of their members on Twitter where they frequently share notable links that point to forums, mailing lists, blogs etc. I believe that it’s better to follow people rather than project themselves because projects are the outcome of the collaboration of bright people.