Fellow presentation and intro to your career path
Greetings, I am Rehana Shaikh, an experienced Software Architect and Full Stack Developer originally hailing from the western region of India. My family and I relocated to the United States last year due to my husband's work transfer.
My fascination with understanding the inner workings of gadgets and their mechanisms has been a lifelong trait. This innate curiosity inspired me to pursue a bachelor's degree in Electronics and Telecommunication. During my undergraduate studies, my desire to delve deeper into this field led me to discover the captivating realm of programming.
To further quench my thirst for knowledge, I pursued a master's degree in advanced computing and initiated my career as a software engineer. Presently, I stand as a seasoned software architect, boasting a diverse background that spans various technologies and platforms. My expertise encompasses mastery of cloud computing platforms such as Google Cloud Platform (GCP), AWS, and Microsoft Azure, as well as the refinement of skills in .NET Core, Angular, and more.
Join me as I take you through my professional journey, offering insights into thriving in this ever evolving and dynamic industry.
Career options in Software Architecture and Full Stack Software Development
The realm of software architecture and full stack development offers a rich tapestry of career avenues. Whether you are crafting innovative web applications, architecting cloud-native solutions, or diving deep into API development, this field has something for every aspiring technologist.
- Software Engineer/Developer
Develop and maintain software applications; the backbone of the tech industry.
Example: "The Social Network" (Mark Zuckerberg)
- Front-End Developer
Craft user-friendly interfaces for websites and apps, ensuring a seamless user experience.
Example: "The Internship" (Google's web development team)
- Back-End Developer
Manage server-side logic and databases, powering the functionality of web and mobile applications.
Example: "The Matrix" (Architects of the Matrix)
- Full-Stack Developer
Master both front-end and back-end development, creating end-to-end solutions for digital products.
Example: "The Imitation Game" (Alan Turing)
- Mobile App Developer
Build applications for smartphones and tablets, shaping the mobile experience.
Example: "Iron Man" (Tony Stark developing his apps)
- Game Developer
Design and code video games, bringing interactive worlds to life.
Example: "Tron" (Programmers inside a digital world)
- DevOps Engineer
Automate software development and deployment processes, enhancing collaboration between teams.
Example: "The DevOps Handbook" (Not a movie, but a book)
- Cloud Engineer/Architect
Architect and manage cloud-based infrastructure, powering scalable and reliable applications.
Example: "The Cloud" (Documentary on cloud technology)
- Data Scientist/Engineer
Analyze data with programming (Python, R) to gain insights and drive decision-making.
Example: "Moneyball" (Using data in baseball)
- Machine Learning Engineer
Create machine learning models and AI systems for various applications, enabling intelligent automation.
Example: "Ex Machina" (AI and robotics)
- Security Engineer
Protect software systems from cyber threats by identifying and mitigating vulnerabilities.
Example: "Hackers" (Computer security enthusiasts)
- Quality Assurance Engineer
Ensure software quality by testing and debugging applications to eliminate bugs and issues.
Example: "The QA Guy" (Short film about QA)
- Product Manager
Lead the development of software products, shaping their direction and features in line with user needs.
Example: "Steve Jobs" (Product development at Apple)
- Technical Lead/Team Lead
Guide and mentor development teams, making critical technical decisions and ensuring project success.
Example: "Glengarry Glen Ross" (Leadership)
- Freelancer/Consultant
Work independently on various projects for clients or companies, offering specialized expertise.
Example: "Up in the Air" (Consulting)
- Entrepreneur/Startup Founder
Launch and manage your own software development company or startup, taking innovative ideas to market.
Example: "The Social Network" (Facebook's founding)
- Academic/Researcher
Pursue a career in academia or research institutions, contributing to computer science advancements.
Example: "A Beautiful Mind" (Academic achievements)
- Technical Writer
Create documentation and educational materials related to software development, facilitating understanding and learning.
Example: "Adaptation" (A writer's journey)
Main hard skills you use on daily basis in your current job
- A Software Architect needs to have cloud mastery, such as in Google Cloud Platform (GCP), because modern software systems are increasingly hosted in the cloud. Proficiency in GCP empowers architects to design solutions that leverage cloud-native services effectively. Architects use this skill to make informed decisions about how to structure and scale applications in the cloud, ensuring optimal performance, scalability, and cost-efficiency.
- Backend expertise in technologies like .NET is essential because architects are responsible for designing the entire system. Understanding .NET enables architects to make informed decisions about system components and integrations, ensuring the backend can support the intended functionality and performance requirements of the application.
- Fundamental knowledge of architecture concepts like containerization (e.g., Docker) and orchestration (e.g., Kubernetes) is vital. Architects use this knowledge to design applications that can be containerized for portability and efficiency, and they leverage orchestration tools to manage the deployment, scaling, and orchestration of containerized services.
- To acquire these skills, individuals can take online courses such as those on Udemy. For example, the course "Google Cloud Platform (GCP) - Complete Course" on Udemy provides a comprehensive introduction to GCP. This course covers various GCP services and demonstrates how to use them in real-world scenarios. Similarly, for backend expertise, courses like "Complete ASP.NET Core 5 MVC & CRUD API" on Udemy can help individuals gain proficiency in .NET for backend development. Finally, courses like "Docker Mastery: with Kubernetes +Swarm from a Docker Captain" offer hands-on learning for containerization and orchestration.
- Cloud Mastery
I have developed proficiency in Google Cloud Platform (GCP), including Google Kubernetes Engine (GKE), through practical project work and the acquisition of Google Cloud certifications. This expertise empowers me to design resilient and scalable cloud-native applications effectively.
- Backend Expertise
With a strong background in .NET Core and Python, coupled with proficiency in SQL and API development, I am well-prepared to architect robust backend systems and APIs that deliver high performance and reliability.
- Containerization and Orchestration
My extensive knowledge of Kubernetes, Docker, and Helm Charts lets me efficiently deploy and manage applications in various environments. This expertise streamlines the process of scaling and orchestrating complex software solutions.
- In summary, Software Architects use their cloud mastery, backend expertise, and architecture knowledge to design robust, scalable, and efficient software systems. Learning these skills can be facilitated through online courses like those available on Udemy, which provide practical, step-by-step instruction and real-world examples to help individuals acquire the necessary expertise.
Soft skills you use on daily basis in your current job
Effective Communication: Effective communication is a critical skill for a software architect because they often serve as a bridge between technical teams and non-technical stakeholders. In their career, a software architect would:
- Collaborate with Cross-Functional Teams
Software architects work closely with developers, designers, project managers, and business analysts. They need to convey their architectural decisions, rationale, and technical constraints to these team members effectively.
- Translate Technical Concepts
Architects should be able to explain complex technical concepts in a way that non-technical stakeholders can understand. For example, they might need to discuss the trade-offs between different architectural approaches and their impact on project timelines and budgets with project managers or executives.
- Align with Business Objectives
Effective communication ensures that architectural decisions align with the organization's business goals. Architects need to justify why a particular architecture choice is the best fit for achieving those objectives.
- Manage Stakeholder Expectations
Architects also manage stakeholder expectations by providing realistic timelines, setting priorities, and addressing concerns. This helps in maintaining transparency and trust throughout the project.
Problem-Solving Acumen: Problem-solving is at the core of a software architect's role. They encounter various challenges in designing complex software systems, and their problem-solving skills come into play in the following ways:
- Analyzing Complex Issues
Architects break down intricate problems into smaller, more manageable components. For instance, if a system faces performance bottlenecks, they may conduct in-depth profiling and analysis to identify specific areas that need optimization.
- Designing Elegant Solutions
Architects devise elegant and efficient solutions that address the root causes of problems. They consider numerous factors, such as scalability, security, and maintainability, to arrive at the best-suited architecture for a given problem.
- Trade-Off Analysis
Problem-solving often involves making trade-offs between various aspects of a system. Architects evaluate these trade-offs and make informed decisions that strike the right balance between conflicting requirements.
- Continuous Improvement
They also apply their problem-solving skills to iteratively improve existing systems. This involves identifying areas for enhancement, proposing architectural changes, and overseeing the implementation of improvements.
Adaptability and Learning Agility: The technology landscape evolves rapidly, making adaptability and learning agility crucial for a software architect. Here is how they apply these skills:
- Staying Current
Architects keep up to date with the latest trends, tools, and frameworks in software development. This involves continuous learning through courses, conferences, and self-study.
- Technology Evaluation
They evaluate innovative technologies to determine their suitability for specific projects. For example, when adopting a new database technology, architects assess its features, performance, and scalability.
- Tool Selection
Architects select the right tools and technologies for a project based on their understanding of the available options. They might choose microservices architecture, serverless computing, or containerization, depending on project requirements.
- Futureproofing
Learning agility allows architects to future-proof their designs. They anticipate potential changes in technology and business needs, ensuring that their architectures can evolve and adapt without significant disruptions.
In summary, effective communication, problem-solving acumen, and adaptability are essential skills for a software architect. These skills enable architects to work collaboratively, tackle complex challenges, and stay relevant in a dynamic industry.
My personal path
My journey started with a bachelor's degree in electronics, but my career path eventually led me into the world of IT. During my college years, I had the opportunity to participate in campus placements with CDAC, where I faced a whirlwind of interviews. Each day, I found myself in 5-6 interviews for different positions, ranging from .NET development to Java programming and database management.
The competition during these interviews was fierce, with more than 600 candidates vying for just three available positions. This experience taught me the importance of resilience and the value of making a lasting impression during interviews.
After this challenging phase, I eventually transitioned to Sigma, where I was not only offered a new job but also enticing opportunities for onsite work and relocation during the retention process. This shift marked a significant milestone in my career, emphasizing the importance of adaptability and seizing opportunities when they arise.
However, my journey took another turn when I aimed for a position at Serverless Solutions LLC. The biggest hurdle I faced during this endeavor was navigating the complex choice between tech stacks, with the decision centering around AWS and GCP. This challenge highlighted the need to stay up to date with industry trends and make informed decisions about technology choices.
What would you tell your younger you regarding building your current career?
Reflecting on my journey, I would offer the following advice to my younger self: "Patience and continuous learning are your greatest allies. Understand that every experience, whether it leads to success or a temporary setback, contributes to your personal and professional growth. Embrace the journey, keep an open mind, and seize every opportunity to enhance your skills and knowledge."
In addition, I would emphasize the significance of networking and building professional relationships. Often, it is not just what you know but who you know that can open doors to new opportunities. Finally, meticulous preparation is key. The intensity of the interview process I faced for my current position at Serverless Solutions LLC reinforced the importance of being well-prepared for every step of your career journey.
Final tips and insights
To all aspiring software architects and full stack developers, remember that your path may not be linear, and that is okay. Embrace challenges, keep honing your skills, and stay curious. In the dynamic world of technology, your tenacity and passion will be your guiding lights.