diff --git a/guides/chalet_starters_guide_software_engineering.md b/guides/chalet_starters_guide_software_engineering.md new file mode 100644 index 00000000..e35c1a2c --- /dev/null +++ b/guides/chalet_starters_guide_software_engineering.md @@ -0,0 +1,137 @@ + + +# Chalet: A Starter Guide for Software Engineers + +Are you **new**? Skip to our "[**New Joiner**](#new-joiner)" steps, then come back to the rest of this + +Welcome to the **Chalet**\! Whether you're new to **Made Tech** or joined when the whole company could fit in a sedan, you may be wondering what to do with yourself. + +Before going any further, make sure you're in the [\#chalet Slack channel](https://madetechteam.slack.com/archives/C03F23K2RL0). + +Here is a list of things we did in our time at the Chalet: + +* [AI Policy](#ai-policy) +* [Little Projects](#little-projects) +* [Test Driven Development](#tdd) +* [Katas](#katas) +* [Certification/training](#amazonazure-certification) + +## + +## **What is Chalet Time?** + +Chalet time is when people are not on client work. For example... + +* A two week gap between someone finishing their apprenticeship and going onto a client project. +* A month between a new starter joining the company, getting Security Clearance (SC), and their first client project. +* A lead designer having three days between their current client project and the next. + + +Occasional chalet time is a common part of a business like ours, as client work isn’t always going to perfectly match our skills and availability. It's a good time to focus on other activities. + +You can also reach out to your people manager or buddy for more guidance on how you should spend your chalet time and how long you should expect to be there. For example, if you already have SC, you could offer to support other projects on small issues or pair with other programmers. + +This time should be recorded as ‘Bench/Chalet’ in timesheets, unless doing something more specific like ‘Hiring’ or ‘R\&D’ + +## **AI Policy** + +Please read over our AI [docs](https://github.com/madetech/handbook/blob/main/guides/ai/start_here.md) to understand how Made Tech is currently using it as a tool. From here, there are further links going over best practices, security measures, and other bits and pieces. + +Across projects, clients will have different policies on AI usage. Make sure to ask your team what the policy is for you. + +## **Little Projects** + +This is one of the most fun ways to spend your time at the Chalet, and certainly the one with the most freedom. Little projects can come in any form, can be open source, and in any tech stack. + +However, it is recommended that you keep the scope small, extensible, and somewhat disposable. This is due to the fact that you could be pulled out of the Chalet at any moment, and realistically you shouldn't be spending too long a time there. + +That being said, here are some things we’ve done with our time in the Chalet, if you’re looking for inspiration: + +* Use Docker Compose to create a few services (each in a different language like Python or GoLang) and get them to talk to each other via a Redis cache (or a RabbitMQ), with the focus on using Grafana to display metrics as they put/get items to the cache/queue and display a beautiful todo list + +* Create an API and attach it to a Lambda (in AWS) and get it to allow you to call it from anywhere. For examples of what kind of API you could write: an API to guess what an acronym means, an API to tell your daily horoscope, an API to recommend daily recipes. Write it in any language, and it won’t cost a penny, as Lambdas are free for development + * You may want to investigate Madetech’s AWS sandbox account: [Details here](https://github.com/madetech/handbook/blob/794d3443d7f2e81bd3b2124a34ff02fee69757ce/guides/cloud/aws_sandbox.md) + +* You know that annoying niggle you have about that thing? That coding library or that task? What if you fixed it? Get involved in open-source, develop something you would like to see in the world, or give back to something you’ve utilised before. + +* Play with AI tooling such as Claude, build Agentic Agents with Gemini Gems. Reach out in different COP channels for recommendations + +If you need help with something for your project, do reach out in the \#chalet channel and see if anyone can help guide you. Or try \#cop-engineering. And don’t worry if your question is stupid, just means there’s more people who can help answer and feel good about it + +There’s also focus time sessions that you can join, links in \#x-focus + +## **Amazon/Azure Certification** + +You could consider getting some certificates. This is a generally boring process, but you do get a fancy PDF that says congrats after it, and what’s more valuable than that\! + +You can follow our guide here: [https://github.com/madetech/handbook/tree/main/guides/cloud](https://github.com/madetech/handbook/tree/main/guides/cloud) + +Many people recommended this Udemy course, which you can buy with your Learning Budget: [https://www.udemy.com/course/aws-certified-developer-associate-dva-c01/](https://www.udemy.com/course/aws-certified-developer-associate-dva-c01/) + +Of course, there are different levels of certificates. Go for one that matches your experience. + + +## **TDD** + +Here at Made Tech, we prioritise Test Driven Development in all our work. +Starting with our docs [here](https://learn.madetech.com/technology/core-skills/tdd/%20) you can read more about our approach, while digging further into core aspects and fundamentals. +You can prove your TDD might by gaining [Badges](https://learn.madetech.com/technology/core-skills/tdd/#Giraffe:~:text=Triangulation-,Badges,-Any%20Made%20Tech) and becoming a Giraffe, Wolf, and finally Dragon. + +Here are some resources about learning and gaining these badges: + +* Giraffe badge: [https://drive.google.com/file/d/1u\_NVorEZ4DGRb0iXmoMhuOn7I208o9r4/view?usp=drive\_link](https://drive.google.com/file/d/1u_NVorEZ4DGRb0iXmoMhuOn7I208o9r4/view?usp=drive_link) +* Lessons from Giraffe assessments video: [https://drive.google.com/file/d/1nEaE3mQCspM6rsq7PwwOMxv66lTl365l/view?usp=drive\_link](https://drive.google.com/file/d/1nEaE3mQCspM6rsq7PwwOMxv66lTl365l/view?usp=drive_link) +* Slides, have helpful links to other resources and previous talks: [https://docs.google.com/presentation/d/1to2ErZ9kMEOFVPf9pnTXUZmpObBnkxYOSStswYmAWa8/edit?usp=sharing](https://docs.google.com/presentation/d/1to2ErZ9kMEOFVPf9pnTXUZmpObBnkxYOSStswYmAWa8/edit?usp=sharing) + +From there, you may end up at Martin Fowler’s website reading about [TestDoubles](https://martinfowler.com/bliki/TestDouble.html) and [Mocks](https://martinfowler.com/articles/mocksArentStubs.html) which are important bits to grasp in line with TDD. + +Here are some extra docs about [Test Smells](https://blog.xnsio.com/2009/02/01/smells-in-test-that-indicate-design-problems/) to go through at a high level. + +While **Uncle Bob** will always remind us to keep [trying](https://www.youtube.com/watch?v=tL89VP3nuwc) and [trying](https://blog.cleancoder.com/uncle-bob/2014/12/17/TheCyclesOfTDD.html) with TDD \- as it is a way of working/skill to learn and build up. You probably won’t grasp it in one sitting, and perhaps not even on your own \- paired programming is always encouraged at Made Tech. + +## **Katas** + +Once you’ve begun to get your head around TDD, you can practise with our [Katas](https://learn.madetech.com/technology/katas/). + + +A great kata to finish off with for TDD is one of the [Gilded Rose](https://github.com/emilybache/GildedRose-Refactoring-Kata) Katas\! +Pick a language you know, but not very well and see if you can add the requested feature to this mighty code base + +Running kata sessions is also a great way to practice mentoring and test your own skills. Why not see if anyone in the Chalet would be interested in working with you? If you’re not looking to lead, katas can still provide great opportunities to practice pair programming with TDD. + +## **New Joiner** + +First, **Welcome**\! Hope you have a wonderful time with us. Here’s a quick refresher on how we utilise Slack: + +Any channel that starts with \``x-`\` is a "fun" channel, like x-animal-anarchy, x-games or x-lgbtqiaplus. + +Any channel starting with `cop-` are **C**ommunity **O**f **P**ractice channels, intended as the public-facing forum to discuss your section of the company. Feel free to join any of these that you’re interested in (you’ll be shocked to know there’s a very large overlap between \#cop-data and \#cop-engineering) + +And if you’ve not used Slack before, when learning a new channel, it’s best to check the top tabs for information, specifically Pins and Bookmarks. + +You should also set some details in your bio like Profile, like job role, name pronunciation, and pronouns. + +To help grow your familiarity, here are some channels you can join (or may have already joined and are unsure of the format) + +[\#guild-systems-design :](https://madetechteam.slack.com/archives/C06LVRLBY3E) +This channel is about building your system design knowledge, primarily through a weekly meeting on Monday to test your knowledge through various challenges. Feel free to come along and try your best at the challenge and expand the scope of your experiences. Why not try hosting a session and create a challenge to intrigue and invigorate others? New hosts are always welcome\! Just ask in the channel if you want more guidance. + +\#cop-{your-cop}: +We’ve already spoken about this, but the one for your service line is very useful to join. Like the guild system they have a weekly (or so) session that you can join and host as well, very useful for getting to know your colleagues. + +[\#guild-ai](https://madetechteam.slack.com/archives/C08HKGH9VMY): +This channel is about discussing AI in all aspects. Here you will find discussions about the latest news and advances, along with conversations about how people are using AI to solve real problems. + +[\#eng-bookclub](https://madetechteam.slack.com/archives/C03CP6DNKQU): +Join here to participate in group discussions on different topics chosen from different books. It is currently not very active, but feel free to ask what people are currently reading/interested in. + +[\#x-dev-conferences](https://madetechteam.slack.com/archives/C01RJ5Z2R25): +Conferences that devs are going to. You can use a learning day and see what’s going on in our industry with fellow Made Techers. + +[\#tdd-core-skill:](https://madetechteam.slack.com/archives/CBXN91G5D) +The place to grow your TDD skills. There’s a particular focus on gaining your [‘badges’](https://learn.madetech.com/technology/core-skills/tdd/#Giraffe:~:text=Triangulation-,Badges,-Any%20Made%20Tech) \- animal-themed badges that represent where you are in your TDD journey. Worth trying to get one while you have some time, and feel free to chuck any questions you have about TDD in here. + +[\#data-and-ai-chalet](https://madetechteam.slack.com/archives/C08S1CM0FHA) +If you're a member of the data service line, jump in here and see what your colleagues are doing\! Maybe jump in even if you’re not, it’s always nice to participate. + +You can also set up your Jetbrains IDE with Made Tech’s license [using the instructions here](https://askmadetech.zendesk.com/hc/en-gb/articles/23931884197661-How-do-I-get-a-Jetbrains-or-IntelliJ-licence) diff --git a/guides/chalet_time_policy.md b/guides/chalet_time_policy.md deleted file mode 100644 index 7f42daef..00000000 --- a/guides/chalet_time_policy.md +++ /dev/null @@ -1,168 +0,0 @@ -# Chalet time policy - -This document describes how people should spend time when not on client work. This is known as Chalet Time. - -Chalet time should be used to build skills, grow Made Tech’s business and contribute to Communities of Practice. - -## What is chalet time? - -Chalet time is when people are not on client work. For example... - -- A two week gap between someone finishing the software engineering academy and going onto a client project. -- A week between a new starter joining the company and their first client project. -- A lead designer having three days between their current client project and the next. - -Occasional chalet time is a common part of a business like ours, as client work isn’t always going to perfectly match our skills and availability. It's a good time to focus on other activities. - -## Getting started in the chalet - -Please follow these steps when you join the chalet. - -### 1. Join the [`#chalet`][1] Slack channel. -This channel provides up-to-date information on chalet activities and practices. You can use it to ask questions and arrange collaborative work. -### 2. Add mandatory chalet meetings to your Google Calendar. -You can find Google Calendar links for chalet meetings pinned to the top of the [`#chalet`][1] Slack channel. -Members of the Chalet are expected attend these meetings, so that we can: - -- Help people use their chalet time well -- Share opportunities and events -- Help people with blockers -- Build a sense of community - -### 3. Join the [Chalet Community Board][2]. -Use this board to discover tasks you can undertake while in the chalet, including work with Made Tech departments and Communities of Practice. You can also learn about chalet members and their current projects. - -## Responsibility for using chalet time usefully - -Chalet members and their line managers will be responsible for ensuring this time is used usefully. - -Line management should therefore focus partly on: - -- Agree weekly goals to use chalet time according the highest priorities -- Check progress against goals for chalet time in bob -- Agree a plan to get someone onto billed client work -- Identify blockers someone has doing activities with their chalet time -- Identify if someone needs help reaching out to a part of the organisation, so that they can assist or shadow. This could involve introducing someone to a team or advocating on their behalf. - -Each Head of Capability Practice is ultimately accountable for everyone in their practice using chalet time the right way. This will be measured by the average amount of people’s time billed to a client, also known as utilisation. - -## Priorities for chalet time - -The priorities for using chalet time will always stay the same, but the activities that a chalet member should do will depend on their roles and availability. - -If there are no activities that need to be done that match the chalet member's role and availability, chalet time should be used for the next highest priority. For example, if there are no activities that someone could do to find new opportunities on client teams or new business and revenue, that person should do hiring activities. - -### 1. New opportunities on client teams - -1. Billed opportunities, where clients pay for someone’s time -2. Invested opportunities, working on a client team, but not billed to begin with, showing value first -3. Shadowing, getting experience of how teams work - -### 2. New business and revenue - -1. Bid writing - leading / pairing / shadowing / case studies / research -2. Support marketing team create content, like blogging, case studies, talks that promote Made Tech - -### 3. Hiring - -1. Pairing on interviews -2. Outreach to potential candidates - -### 4. Research and development - -1. Product development -2. Research projects - -### 5. Communities of Practice (CoP) - -- CoPs have regular meetings and ongoing activities. To participate in these, search Slack for channels starting with `#cop`. -- CoPs will post opportunities to the [`#chalet`][1] Slack channel and the [Chalet Community Board][2]. - -### 6. Learning time - -- Reading -- Training courses -- Conferences -- Pairing and group learning - -### 7. Holiday that can flexibly be moved - -## Booking & scheduling chalet time - -### 1. New opportunities on client teams - -Billed or invested time will be booked by the Scheduling team, just like when someone joins a client team. The chalet member will fill out timesheets for time spent in this team. - -Shadowing should be recorded as ‘Bench/Chalet’ in timesheets. - -### 2. New business and revenue - -Bid writing will be booked by the Scheduling team. The chalet member will fill out timesheets for time spent on the bid. - -Marketing activities should be recorded as ‘Bench/Chalet’ in timesheets. - -### 3. Hiring - -This time should be recorded as ‘Hiring’ in timesheets. - -### 4. Research and development - -This time should be recorded as ‘R&D’ time in timesheets. - -### 5. Communities of Practice - -This time should be recorded as ‘Bench/Chalet’ in timesheets. - -### 6. Learning time - -If your learning activity will make you unavailable for a delivery (eg. a conference or exam) please book this as 'Learning Time' in Bob and let your line manager know. Record this as 'Learning Time' in timesheets. - -Learning activities that won't make you unavailable for a delivery (eg. reading, group learning) should be recorded as ‘Bench/Chalet’ in timesheets. - -We're actively reviewing the Learning process so this may change. If you have any questions please post them in the [`#supply-learning-and-development`][4] Slack channel. - -### 7. Holiday - -Chalet members will [book holiday][5] in the normal way. - -## Responsibility to make activities visible and doable - -Various parts of the business will be responsible for making people aware of activities they can do with chalet time: - -### 1. New opportunities on client teams - -A list of live client accounts is pinned to the [`#chalet`][1] Slack channel. This can be used to learn about clients, and to find opportunities to join client teams. - -Line managers of chalet members will help find opportunities and advocate for them to join client teams, either billed, invested or shadowing. - -### 2. New revenue and business - -Each week, the Bids team will send the Scheduling team details of bids that chalet members can contribute to. - -The Marketing team will share tasks that chalet members can do to promote Made Tech. These will be posted in the [Chalet Community Board][2]. If you need more information about a task, ask the person who created the ticket or post in the [`#team-marketing`][3] Slack channel. - -If you have an idea for a blog post contact James Holloway of the Marketing Team. You can also contact relevant CoPs and teams for input. - -### 3. Hiring - -The Scheduling team will give the Talent Team Coordinators access to the Kimble report of who has chalet time. They can be asked to do extra hiring interviews, or undertake training to do so. - -### 4. Research and development - -The R&D team will add tasks to the [Chalet Community Board][2]. These tasks often involve helping to build products or research new opportunities. - -### 5. Communities of Practice - -Capability and Delivery Heads will maintain a visible backlog of tasks in the [Chalet Community Board][2]. Chalet members can undertake these to improve their community of practice. - -## Length of chalet time activities - -Chalet time activities must be able to deliver some value in small blocks of time: half day, 1 day or 3–5 days. This is so that chalet time can add value if someone joins a client team at short notice. - -Some activities may need more than 5 days. These should still be able to deliver business or personal value in increments of a half day, 1 day or 3–5 days. - -[1]: https://madetechteam.slack.com/archives/C03F23K2RL0 "Chalet Time Team Slack Channel" -[2]: https://trello.com/b/7lSGB2Xw/chalet-community-board "Chalet Community Board" -[3]: https://madetechteam.slack.com/archives/C01MMH7DGUA "Marketing Team Slack Channel" -[4]: https://madetechteam.slack.com/archives/C0226JKA39T "Supply Learning and Development Slack Channel" -[5]: https://github.com/madetech/handbook/blob/main/benefits/taking_holiday.md "Taking Holiday"