/software-engineering-workexperience

A Practical & Relevant Work Experience Project For Students Who Are Interested In Software Development.

Primary LanguageKotlinMIT LicenseMIT

🚀 Software Engineering - The Experience 🚀

CICD Code Climate Test Coverage Latest Version GitHub License

Table of Contents 📑

Introduction 📜

Welcome to our Software Engineering work experience tour! Today, we present you with a unique opportunity to gain valuable work experience in the vast field of software engineering and development. This project is designed to give you a taste of what it's like to work as a software engineer, and hopefully inspire you to pursue a career in this rewarding field.

The aim is to provide you with a sneak peek into what a typical day in the life of a software engineer looks like. You'll be interacting with our expert team of developers, architects, designers, and project managers, understanding their roles and responsibilities, and experiencing firsthand how they work together to bring concepts to life.

Not only will you get to learn about the different technologies, tools, and methodologies used in the software development life cycle, but you will also understand the value of problem-solving techniques, teamwork, communication, and time management skills that are crucial for success in this field.

Throughout the day, you will be encouraged to ask questions, engage in discussions, and even work on mini-tasks that mirror real-world problems and projects. We want you to dive in, experience, learn, and, most importantly, enjoy the process.

Remember, software engineering is not just about writing code. It's about creating solutions, fostering innovation, and making a tangible impact on the world. Computer code is one of the many tools that we use to achieve this goal.

On The Agenda 📅

The Basics & The Project 🔬

The experience will be divided into various sessions, each focusing on different aspects of software engineering. The time required for each session is mentioned alongside, providing you with a comprehensive insight into the life of a software engineer.

  1. Onboarding - Laptop collection & Introduction to our team. (5 minutes)
  2. Why We Do What We Do - Introduction to the company and our mission. (5 minutes)
  3. How We Work - Agile, Scrum, Kanban, etc. (15 minutes)
  4. The Software Development Life Cycle - From concept to production. (15 minutes)
  5. The Tools of the Trade - IDEs, Git, Slack, etc. (15 minutes)
  6. Research Break (Self-Learning Session) - A chance to review and reinforce what you've learned so far. (2 hours)
  7. Lunch Break - A chance to relax, recharge and have lunch on us! (1 hour)
  8. Project Kickoff - Introduction to the project and the problem statement. (15 minutes)
  9. Dev-analysis Phase - Understanding the requirements and designing the solution. (1 hour)
  10. Kick-off Ceremony - Presenting your analysis and proposed solution to the team. (10 minutes)
  11. Implementation Phase - Working on the solution. (2 hours)
  12. Sign-off ceremony - Presenting your final solution to the team, and handing it over to the testers. (10 minutes)
  13. The Wrap Up - Feedback, Q&A, and closing remarks. (15 minutes)

Extra Hands-on Activities 👨‍💻

Throughout the experience, you may also have the opportunity to:

  • Team Collaboration Experience - Engage in agile practices such as stand-up meetings, sprint planning, and retrospectives. This will allow you to experience how our team collaborates, communicates, and prioritizes tasks to achieve our goals. This can happen at any time, providing a hands-on understanding of agile methodologies and our team's dynamics.
  • Shadowing Professionals - Gain insights by shadowing experienced professionals, understanding their daily tasks, challenges, and how they overcome them. Shadowing allows you to experience programming practices to the extreme, such as pair programming and test-driven development.

The availability, order and duration of these activities may vary, but each session is designed to provide a unique insight into the field of software engineering, allowing you to engage, learn, and have fun!

Learning Objectives 🎯

By participating in this 2-day immersive experience of software engineering, we aim to equip you with the following knowledge and skills:

  • Understanding the Role of a Software Engineer: Get a hands-on understanding of the diverse roles and responsibilities that a software engineer undertakes, and how they fit within the broader tech industry.
  • Familiarity with Work Environment: Gain familiarity with the professional environment in which software engineering teams operate, including the software development life cycle, Agile, Scrum, Kanban, and other work methodologies.
  • Introduction to Essential Tools: Get acquainted with the tools of the trade, including Integrated Development Environments (IDEs), version control systems like Git, and programming languages like Kotlin.
  • Collaboration and Communication: Understand the importance of teamwork, communication, and collaboration in software development, and how cross-functional teams work together to deliver projects.
  • Critical Thinking and Problem-Solving: Exercise critical thinking and problem-solving skills by participating in a mini-project, from understanding the requirements to designing and implementing the solution.
  • Project Management: Learn about the different stages of a project, from kickoff to sign-off, and the practices associated with each stage, such as presenting your analysis and proposed solution to the team.
  • Shadowing Professionals: Gain insights from experienced professionals in the field by shadowing them, understanding their daily tasks, challenges, and how they overcome them.
  • Career Exploration: Explore the possibilities of a career in software engineering and gain insights to make informed decisions about your future career path.

By the end of this tour, you will have a better understanding of the field of software engineering, the skills necessary to succeed in it, and the value that software engineers bring to organizations and society. We hope this will inspire you to consider a rewarding career in this field.

Getting Started 🏁

Prerequisites 👓

  • A workstation, can be your own laptop, or a laptop provided by us.
  • Access to the internet, our team will provide you with guest WiFi details if you're on-site.

Setup 🛠️

  1. Create a GitHub account (Or log in to your existing account)
  2. Fork this repository to have your own copy of the project.
    • Keep the forked repository public, so that our team can access it and so you can show it off to your friends and family!
    • If you want to learn about forking in detail, read this guide.
  3. We are going to use the Kotlin Playground to write and run our code as our cloud-based IDE.
  4. Join our Slack or Teams workspace to communicate with our team and ask any questions.
    • We will provide you with the workspace details on the day of the tour.
    • This is entirely optional if you're working with us on-site, as you're more than welcome to ask us in person.
  5. Yourself!

Research Break Learning Resources 📚

During the research break, you will be given the opportunity to review and reinforce what you've learned so far. You can use this time to explore the different tools and technologies that you've been introduced to, and learn more about them.

To help you with this, we've compiled a list of resources that you can use to learn more about the different topics covered in this tour. Feel free to explore these resources, or use your own. The choice is yours!

These resources can be found in the project's Wiki page: Wiki - Software Engineering Work Experience.

The challenge 🏆

When you're ready you can find the challenge details in the following page: Challenge - The Firmament Project.

Remember, this is not an exam, we want you to have fun and learn as much as you can, so don't worry if you don't understand something, just ask us, and we'll help you out!