Introduction
Hey there, fellow earthlings! If you’re pursuing a degree in any of them STEM fields or related fields then this article might be of interest to you. I’m Saraswathi and I come from a city called Pondicherry in the Southern part of India. Growing up I was always a curious kid and had a whole lot of questions about the universe and the laws of nature – most of which could be answered by Physics and hence I was fascinated with Physics. My love for Physics extended to Math and when it came to choosing a major for college I was looking at various fields which were at the intersection of Physics and Math – turns out Computer Science was one of them (or Computer Science was used in most Physics and Math research) and the only one that was taught at our local University, so as fate would have it I pursed my Bachelors degree in Computer Science.
While pursuing my Bachelors degree I was looking into ways to supplement my pocket money and like any immature college kid I thought investing it was the only sensible option (it was too little to invest). So I opened a small trading account – and started doing trades everyday. Although I didn’t make much, given my principal investment was low, I made enough to keep me interested in learning more. I started learning about technical indicators, also learnt that most trades in the real world are done by High Frequency Trading (HFT) Algorithms – thus I started looking into Big data analysis and Statistical models & Algorithms. I wanted to learn more about this and got an opportunity to work under a Professor who was doing research related to Big Data Analysis.
This experience motivated me to pursue a Masters degree with a focus on Big data analysis and Machine Learning – I eventually went on to pursue a Masters degree in Computer Science with a Machine Learning and AI specialization at the University of Texas at Dallas. I’m currently working as a Software Developer at a company that provides software solutions for Electric Utilities across the United States and this is also my first job out of college. I work on various projects for the Operations Analytics team which includes software solutions that provide an integrated analysis platform for engineers and system operators of electric utilities (power companies). It uses AMI and detailed data to help users analyze system performance. I also work on Machine Learning projects related to Power consumption forecasting and other topics for electric utilities.
Software Development Fellow
career options
Having expertise in Software Development, Computer Science and Machine Learning opens up a wide range of career paths. Here are some common options:
This is a broad category that includes roles focused on designing, developing, and maintaining software systems and applications. Software engineers can work in various domains such as web development, mobile app development, backend systems, cloud computing, etc.
Frontend developers specialize in creating the user-facing aspects of websites and web applications, translating design mockups into responsive and interactive interfaces using HTML, CSS, and JavaScript frameworks like React or Angular. They focus on optimizing user experience by ensuring intuitive navigation, smooth interactions, and consistent visual design across different devices and browsers.
Backend developers are responsible for building and maintaining the server-side logic and databases that power web applications, handling data storage, retrieval, and processing. They work with languages like Java, Python and Ruby, and frameworks like Spring Boot, Node.js or Django, to design robust and scalable backend systems that support the functionality and performance requirements of modern web applications.
Full-stack developers have expertise in both frontend and backend development, capable of working on all aspects of web application development from UI design to server-side logic and database management. They possess a broad skill set that allows them to build end-to-end solutions independently or collaborate effectively with specialized frontend and backend teams.
Mobile app developers specialize in creating applications for smartphones and tablets, leveraging platform-specific development environments and SDKs like Swift for iOS or Java/Kotlin for Android. They focus on delivering engaging and responsive user experiences tailored to the unique characteristics and constraints of mobile devices, ensuring compatibility with various screen sizes, input methods, and platform guidelines.
Game developers design and implement interactive entertainment software for various platforms using game engines like Unity or Unreal Engine, combining programming skills with creativity to create immersive gaming experiences. They collaborate with artists, designers, and other developers to bring game concepts to life, implementing gameplay mechanics, graphics rendering, and audiovisual effects to captivate players and deliver compelling gaming experiences.
Software Development Fellow
skills
What are the main hard skills you use on a daily basis in your current job?
In the domain of backend development, I apply my knowledge of the Java programming language and the Spring Boot framework to create scalable and efficient microservices. By utilizing Spring Boot's tools for building microservices, I develop backend systems that meet the requirements of modern applications. I also employ Spring Data for seamless integration with various database technologies, ensuring optimal performance. With a solid understanding of dependency injection and MVC architecture, I design backend solutions that are well-structured and maintainable.
In the realm of big data processing and analytics, I utilize cutting-edge technologies to extract meaningful insights from large datasets. I apply Apache Spark for distributed data processing tasks, leveraging its capabilities for real-time data analytics and machine learning. Additionally, I implement real-time search and analytics solutions using Elasticsearch, enabling rapid retrieval and analysis of data. I also utilize Apache Kafka for stream processing, orchestrating data pipelines that facilitate continuous data ingestion and processing.
I implement continuous integration and deployment practices to streamline the software delivery lifecycle. I utilize Bamboo for continuous integration, orchestrating automated build and test processes to ensure the reliability and quality of software releases. With Kubernetes, I design and manage scalable containerized applications, enabling seamless deployment and scaling in dynamic environments. Moreover, I leverage AWS deployment and management for architecting cloud-native environments that optimize resource utilization and enhance application scalability and performance.
In frontend development, I apply my skills in crafting engaging and intuitive user experiences using the Angular framework. I utilize Angular's features and ecosystem to design responsive and interactive web applications that meet user needs. I also implement robust state management solutions using NGXS, facilitating efficient data management across application components. With HTTP clients for server communication, I ensure seamless interaction between frontend interfaces and backend services, delivering dynamic and performant web applications.
I leverage AWS to design and manage scalable and reliable cloud-based solutions. I utilize AWS deployment and management to architect cloud-native environments that optimize resource utilization. With container orchestration using ECS, I design and manage containerized applications that integrate seamlessly with AWS services. Additionally, I utilize a wide range of AWS services such as EC2, S3, EKS, Secrets Manager, Systems Manager, OpenSearch, MSK RDS, and Lambda to build resilient and cost-effective cloud solutions.
What are the main soft skills you use on a daily basis in your current job?
Effective communication is crucial for conveying technical concepts and discussing project requirements, facilitating productive discussions, and ensuring alignment between technical and non-technical stakeholders.
Strong problem-solving skills enable developers to analyze issues, identify root causes, and devise effective solutions, essential for troubleshooting technical issues and optimizing software performance.
Developers need to adapt quickly to new technologies and methodologies, embracing change, learning new skills, and adjusting their approach to meet evolving project requirements.
Strong teamwork and collaboration skills are essential for working effectively in multidisciplinary teams, contributing ideas, and communicating effectively to achieve project objectives.
Effective time management and prioritization skills enable developers to meet deadlines, deliver high-quality work, and maintain focus on critical project objectives, ensuring productivity and efficient use of time.
Saraswathi
’s personal path
Tell us about your personal journey in
Software Development Fellow
:
My job search was quite a challenging one given the fact that I was looking for my first job out of college and a lot of job postings required a few years of experience. I have applied for countless job postings most of them related to Software Development, Data Science and Machine learning. Mostly I used LinkedIn to search for job postings, also used sites like Handshake etc. I also interviewed for many different positions with various companies of all sizes – this helped me to get over the fear of interviewing since I pretty much got used to technical interviews by that point.
Most of my interviews involved three phases: first an online coding challenge, next a couple rounds of interviews with developers and finally an interview with the team lead and the team members in some cases. I would also encourage people to get some sort of practical experience – so the first few internships or job opportunities can be at smaller companies or startups as they can be a way to get into the industry. What we might have considered a dream job may not be the right fit for us; the universe might have a much more exciting experience for us!
How I landed my current job is a bit of an unconventional story. I graduated in the Fall and was looking for jobs around that time. It was Christmas break and I had no interviews scheduled due to the holidays - so I was watching a Christmas Holiday themed movie and it was set in a beautiful green place with lush nature – I googled about it and found that it was Saint Louis, Missouri. So I searched for jobs in Saint Louis, Missouri that matched my qualifications and found only one job posting – to which I applied immediately and eventually interviewed and received a job offer too. Like I said the universe seemed to have something interesting for me which I might not have thought about – if not for that movie I watched :)
What would you tell your younger you regarding building your current career?
If I were to give some advice to my younger self, this would be it – might sound philosophical but its what’s helped me the most: Life is an experience; we are all essentially living different versions of the possible experiences offered by the universe. So, it's important to enjoy the process while moving towards our goal. There will be pretty challenging and hard situations thrown at us – but this only makes us stronger in the end. Being equanimous in success and failure is a valuable trait. Just do your duty to the best of your ability without worrying about the results – this itself will give us peace of mind.
Final thoughts & tips
Software Development is an ever-evolving field – so we are going to be forever students which is a good thing, after all if things are stagnant, it could get boring after a while. Machine Learning would lead to revolutionary advancements in the future – getting some exposure to new advancements in ML is great. Take calculated risks and follow your dreams. Just like it takes years of practice to become a skilled Swordsmen – so does any other field, in my case Software Development – so don’t give up hope and keep working at it. No one path is the correct path – there are multiple ways to success and happiness, so find your special path!
Resources to dig in more
Sphere Online Judge
Site to practice competitive programming questions
Fullstack-development
Few full stack development projects
Kaggle.com
Site to practice competitive Machine learning challenges
Professor Leonard Youtube Channel
This YouTube channel covers a wide range of Statistics and Math concepts required for Machine Learning and Computer Science