Introduction
My name is Shritesh Bhattarai. I am a Senior Software Engineer at Remix Labs building a visual programming platform. I live in San Francisco but grew up in Kathmandu, Nepal. My interests include travelling, playing video games, listening to heavy-metal music and gluten-free cooking.
Software Development Fellow
career options
I was always interested in computers and programming since my childhood. I used to spend most of my waking hours in front of the QBasic help manual trying out all the different functions and making animated pictures with code. Later, it was making videogames with C++ or websites with PHP. Programming was my hobby and passion and studying computer science was a no-brainer. I joined the computer science program at Tennessee Tech university with a focus on Software Development and Scientific Applications. There I found my love for programming languages and paradigms, which I now work on at my job. My career path is fairly unique as I have worked at my own companies for most of my career. I also got my current role because of my open-source software contributions.
Design, code, and test computer software or mobile apps. May develop system-level software, such as operating systems or database systems.
Work on user interfaces and the aesthetics of a website or app using languages such as HTML, CSS, and JavaScript.
Work on the server-side, managing databases and ensuring that the server, the application, and the database run smoothly together.
Handle both front-end and back-end development tasks. Well-versed in multiple programming languages and frameworks.
Test software to find and fix bugs. This role is crucial to ensure the software's usability and functionality.
Manipulate large amounts of data and use it to train models, typically in a machine learning context. This role requires strong statistical skills and proficiency in languages like Python or R.
Software Development Fellow
skills
What are the main hard skills you use on a daily basis in your current job?
Every software job will require you to have proficiency in one or more programming languages that you work with. At my current role, I work with Rust, Go, Swift, Dart, OCaml, Elm and JavaScript. I learned many on my own, working on various projects and some on the job.
Software eventually grows and a good design helps keep it maintainable. There is a vast literature on this topic and well-established patterns but only a few are used at a time depending on the task at hand. Also, knowledge of when to use such patterns comes with experience.
More than writing code, you will be debugging why your code doesn’t work as expected. Debugging is both an art and science. Knowledge of how to use debuggers, whether in an IDE, a standalone debugger and from backtraces is essential to scale up as a software developer.
What are the main soft skills you use on a daily basis in your current job?
Our team is distributed all over the world across different time zones. We meet face-to-face for a daily virtual standup and all the work happens in the form of written communication. I think this is already becoming the norm everywhere else after the COVID-19 pandemic. Clear articulation and meeting the reader where they are at is even more essential for someone in a field as abstract as software development.
As an organization with a flat structure without managers, it is crucial to self-organize and prioritize the task to work on. I regularly consult with the rest of the team if there are any blockers or high-priority tasks for the product. I personally am a fan of sticky notes on my desktop.
Most software systems are built of different components that work together. Understanding their relationships and the outcome of a change in one component over another and as a whole is extremely important.
Shritesh
’s personal path
Tell us about your personal journey in
Software Development Fellow
:
My personal path is a story of me unintentionally working on things that someone found useful. After high school, two friends and I started an online feature magazine which got featured by a news channel. Their upper management then asked us to work on their web strategy and infrastructure and required us to incorporate a company so that we could get paid. It later grew into a thriving design agency that celebrated its 9th anniversary last month. Similarly, I had run a web development workshop in college for a student club and was later approached by someone who was looking for a web developer for his new business idea. We started a company together, raised capital and worked together for five years on a product with thousands of customers. In the meantime, I was actively contributing to an open-source software community on the side. When the startup ultimately shut down, I tweeted that I was looking for a job and my current employer reached out to me because they knew of my open-source work. I met with the team, loved what they were building and joined the same week.
What would you tell your younger you regarding building your current career?
I would tell my younger self to surround myself with more than just programmers. My biggest growth has been when I’m working with someone with complementary mindset and skills. Similarly, I should have worked with open-source communities earlier. The entire industry runs on OSS, and with communities like GitHub and HuggingFace, it is the easiest way to build your skills and career and put yourself out there. It even looks good on your resume.
Final thoughts & tips
I think there is an aspect of luck involved in my career. I was in the right place at the right time. But I also believe that I did and presented the work which demonstrated my skills and expertise without needing to resort to a resume or portfolio. This should be replicable by folks trying to break into the industry.
Resources to dig in more
The Pragmatic Programmer by David Thomas and Andrew Hunt
An amazing book on becoming a software craftsman and having a fulfilling career.
Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages by Bruce Tate
Learning to learn programming languages and paradigms.
Remote: Office Not Required by Jason Fried and David Heinemeier Hansson
The bestseller book on working remotely.
Thinking in Systems by Donella H. Meadows
An essential read on systems thinking. Probably the most important book I’ve ever read.
Crossing the Chasm: Marketing and Selling High-Tech Products to Mainstream Customers by Geoffrey A. Moore
The de-facto book on building and selling software products to customers.