I've been extremely disappointed with University: with the exception
of Mathematics and Physics, the notions which were being taught were
quite outdated, and most of the time unreliable. Witnessing the
thesis defense of a certain (now appointed) engineer, and fully
aware of the amount and quality of his knowledge, I decided to
follow my own independent formative path.
I've participated in various open source projects, which allowed me
not only to gain proficiency with different programming languages but
also made me get accostomed with projects maintained in ways which
allow great numbers of developers to contribute and develop without
interfering with each other's work.
In the meanwhile, I've partaken in some jobs covered by NDA, which
rewarded me with a decent amount of expertise in various fields.
Such expertise revealed to be fundamental for my current job, where I've been able to join right away a project already in development for years (and for a big client such as Magneti Marelli, working on a product for Alfa Romeo) without any internal training, if not for project-specific details. Approximately, I've contributed 5 bug fixes or feature implementations per week since my second week on the project, for a development cycle which lasted for more than a year.
With time I've been tasked with the direction and design of various
projects focused on voice and intent recognition and the development of
intuitive VUIs (voice user interfaces).
The most interesting project has definitely been developing a framework
to create, deploy and manage multimodal virtual assistants able to
maintain the same conversation with the user across different channels.
An implementation is available
here.
Better to light a candle than to curse the darkness (Laozi)
This is something I believe to be fundamental: if problems are
there, they should be dealt with.
It's far too often possible to observe people (especially
programmers) getting troubled by issues which make them lose time
(and temper). Yet, instead of dealing with what is causing the
current problem, they tend to use dirty workarounds to get through...
Just to face a new issue right after.
Being able to choose the right tool and methodology for the job
usually avoids such loop, both making the worker less stressed and
making him do a better job overall!
For a detailed list of what I can do and use, look below!