- 25 years doing various electronic designs, re-engineering or integration
- 21 years managing IP networks
- 20 years using Linux for server and desktop applications
- 18 years doing code at a professional level
- 18 years using version control as a core key of the software development process(CVS, Git)
- 16 years of technical support experience (on the phone and in the field)
- 10 years working mainly remotely while keeping a strong work discipline, professionalism and ethics
- 6 years experience managing customers projects of up to 5M$/year
- 4 years managing a team of 4 1st level support technical
- 2 years managing a team of 2 2nd level technical and 2 certified engineers
- Strong believer of the following keys of engineering team management:
- Daily stand-up and weekly 1-on-1 team management strategies
- Knowledge sharing
- Strict versioning using Git
- Peer code/design reviews
Programming language experience
- Ruby, Golang, C, Perl, Bash, x86 Assembly, PHP, HTML, HTML/CSS/JS/jQuery, Electron just to name a few languages I am deeply familiar with.
- I use the language I feel will be the best for the task at hand
Hardware platform experience
- Arduino (Atmel)
- Onion Omega
- Anything Linux and open-source
- Information sharing is the key to success
- GitLab is an essential tool for engineering team management and project management.
- Don’t work on something if there is no GitLab ticket for it.
- Use shipit-cli (https://gitlab.com/intello/shipit-cli) so that all merge request are uniform.
- Rebase and squash to before merge to maintain a clean head
- Maintain a changeling using Semantic versioning
- If you develop for Linux use Linux or macOS not Windows.
- If it exists and it’s open-source and does 80% of what you need why re-invent it ? Add to it, use it and share it when ever possible.
- Thrive on open-source, share it, embrace it.
- Automatization for uniformity, avoid snow flakes (Ansible, scripts,…)