An Effective Software Developer
"Effective: from Latin effectivus, from efficere 'accomplish'. Successful in producing a desired or intended result - Oxford Dictionary of English
As it ‘s hard to describe yourself, I think the best way to define myself is “effective software developer.”
I’m pragmatic, not dogmatic: too often an experienced developer tends to follow rules or best practices without asking himself if they are effective or not. Although I’m a long time Agile practitioner, I’m ready to put some practices aside if this helps to reach the goal quicker. I usually keep the practices that contribute to reducing the time to get feedback, like continuous integration, build automation, etc., but I don’t follow any more vanity metrics like code coverage or the number of tests: wrong or evil, too many tests are an anti-pattern exactly like no tests.
I know how to research for answers: it’s not just know how to use Google or Stack Overflow, but knowing how to find the root cause of a problem, how to spot similar patterns in a problem I already solved. Most problems, or features to implement, are situational, and you cannot rely on forums or brute force solution, but you need to have enough experience to find the best way to solve them.
I have passion: although the passion is not value for my clients, I couldn’t be at the top of my profession if I wouldn’t love my job. Since I was a kid programming with my ZXSpectrum, I’m excited about building programs, learning new technologies, solving problems. When I focus on a challenge, I abandon all other my priorities, and I’m truly into that problem: it doesn’t matter, if it is a client work, a personal pet project, if I’m in the office, or in a crowded tube, I must finish it!
I’m leaving my ego at the door: when working in a team, I’m pursuing the goal of having a very efficient team, and even if I’m the most experienced team member, I give other team members the opportunity to learn, experiment, fail, and eventually succeed: my goal is to increase the capacity of the team. Doing everything by myself, although it could be faster in the short term, is not sustainable in the long term, and it is, of course, disrespecting for the other members of the team.
- I’ve implemented a Flappy Bird in Swift the same day Apple released it:
- I’ve implemented the software for hardware devices actually sold in Apple Stores:
- I swiftly relocated from Italy to London with my wife and two kids in less than a week.
I really enjoy to do presentation, and I think that presenting yourself using a visual way is more engaging than a dry CV: