1. What initially sparked your interest in becoming an NLP engineer?
My interest in becoming an NLP engineer was sparked by my background in cognitive science and my fascination with the human brain.
Even with recent innovative technology, the brain remains unmatched in its capabilities. However, artificial intelligence, particularly natural language processing (NLP), captivates me because it tries to mimic the human brain’s ability to understand and generate language.
2. As a principal developer, can you walk us through a typical day in your role?
As the Head of Engineering, my typical day begins with checking my email and Slack to address any immediate questions from engineers and clients. I prioritise understanding client requirements and assigning tasks accordingly to ensure efficient workflow.
Throughout the day, I join calls with the customer experience (CX) team to answer technical questions from clients and assist with tasks that require automation. Then, I review design proposals, providing feedback to ensure they align with client needs.
3. Outside of work, what hobbies or interests help you unwind?
Outside of work, I find gardening to be a great way to unwind and disconnect from devices, allowing me to relax my eyes and mind. I also enjoy traveling and exploring new places, which helps me recharge.
Recently, I've developed an interest in camping with friends, enjoying the beauty and tranquillity of nature. These activities provide a refreshing break and help me maintain a healthy work-life balance.
4. What are your favourite tech stacks or development tools, and why?
As an NLP engineer, my favourite tech stacks and development tools include Python for its simplicity and extensive libraries, TensorFlow and PyTorch for building and training deep learning models, with PyTorch's dynamic computation graph being particularly intuitive.
I also rely on Hugging Face Transformers for implementing state-of-the-art NLP solutions, Jupyter Notebooks for interactive data analysis and prototyping, Docker for ensuring consistency across development environments and simplifying deployments, and Git for efficient version control and team collaboration.
These tools collectively streamline development, enhance productivity, and enable the creation of robust NLP solutions.
5. How do you stay focused during long coding sessions?
I stay focused during long coding sessions by breaking my tasks into smaller, more manageable steps, setting goals, and taking regular breaks to prevent burnout.
Also, staying hydrated and energised with some snacks, especially chocolate, helps keep me focused over longer stretches. Other times, I step into the garden for a brief change of scenery and fresh air. Switching tasks periodically also helps keep my mind fresh and maintain productivity throughout the session.
6. Do you have a favourite programming language? Which is it and why?
Yes, Python is my favourite programming language for many reasons.
First off, it’s relatively simple and easy to read. Python's extensive standard library and vast ecosystem of third-party libraries and frameworks also make it versatile for a wide range of applications, from web development and data analysis to machine learning and artificial intelligence.
7. If you could describe being a principal developer in one word, what would it be?
The word would be "Transformative" because this field has the power to revolutionise how we interact with technology and understand human language.
8. Continuous learning and staying updated with emerging technologies are crucial in the fast-paced world of software engineering. How do you stay ahead of the curve and keep your skills sharp?
I prioritise continuous learning and skill development to stay ahead of the curve. Sometimes, this means taking online courses. Other times, I’m reading through leading industry-related materials. Collaboration with peers also helps with mutual learning and improvement.
9. How have you evolved as a principal developer during your time at Proto?
During my time at Proto, I've honed my foundational skills in natural language processing, mastering techniques such as tokenisation, parsing, and topic modelling. I’ve also gained practical experience working with large-scale datasets and implementing advanced NLP models, such as transformers and recurrent neural networks, to tackle complex language understanding tasks.
10. What’s the best part about working at Proto?
The best part about working at Proto is the opportunity for continuous learning and growth. As an NLP engineer, I've had the chance to expand my technical skills and knowledge significantly.
Beyond NLP, I've also improved my social skills by engaging with clients, collaborating with full-stack developers, and learning from DevOps experts.
11. What advice would you give an upcoming software engineer?
For upcoming NLP engineers, my advice is to focus on building a strong foundation in the fundamentals of natural language processing while staying curious and exploring various subfields within the discipline.
Also, practice with real-world datasets to gain practical experience and embrace continuous learning.
12. What was your biggest teaching/learning moment as a developer?
My biggest teaching and learning moment as a developer came when I encountered a particularly challenging bug in a project I was working on.
I was initially very frustrated. But I took a deep breath and approached the problem methodically, breaking it down into smaller components and carefully examining each piece of code until I identified and fixed the bug.
Through this process, I gained a deeper understanding of the underlying technology and improved my problem-solving skills.