Logo
    Search

    Supper Club × NX Monorepos with Victor Savkin

    enMay 13, 2022

    Podcast Summary

    • Monorepos and NX Dev Tools: Making Monolithic Repositories AccessibleMonorepos, with tools like NX Dev Tools, offer benefits of code sharing and better project organization, making them increasingly popular. NX aims to make these ideas more accessible to a wider audience.

      Monorepos and the tools that support them, like NX Dev Tools, are becoming increasingly popular in the developer community. Victor Safkin, a former member of the Angular core team at Google, now leads the project to create a build system for monorepos that is usable by a wider audience. Monorepos, or having multiple projects in a single repository, offer benefits like easier sharing of code and better project organization. Google, being a large tech company ahead of the industry, has been using such systems internally for years, but the tools they built have struggled to gain adoption outside of the company. NX Dev Tools aims to make these ideas more accessible to the broader community. The Syntax Supper Club, a podcast sponsored by companies like Whiskey, Web, and Whatnot and Strapi, had Victor on to discuss monorepos and NX in more detail.

    • Choosing Between Monorepos and Multirepos for Project ManagementFor smaller organizations, multirepos like Yarn Workspaces offer accessible solutions with fewer demands. Monorepos, such as Blaze (Bazel), offer more integration and control but require substantial resources and engineering efforts.

      While there are effective tools like Blaze (Bazel) for building and managing large-scale projects, they come with significant complexity and require substantial resources and engineering efforts. For smaller organizations, alternatives like Yarn Workspaces offer more accessible solutions with fewer demands. The distinction lies in the level of integration and control offered, with monorepos providing a more unified development experience at the cost of increased complexity. Early criticisms of these tools outside of tech giants have since softened as more organizations explore their potential benefits. Ultimately, the choice between these approaches depends on an organization's size, resources, and development priorities.

    • Managing Large-Scale Projects with Monorepos: Challenges and BenefitsMonorepos offer advantages for managing large-scale projects, including order, prevention of chaos, and effective communication, despite initial challenges for smaller teams or those new to development.

      Using a monorepo approach for managing large-scale projects, such as those used by companies like Google and Facebook, comes with its own set of challenges that aren't immediately apparent. While it may seem cumbersome to manage multiple packages within the same repository, it ensures order and prevents chaos. This approach becomes increasingly valuable as projects grow in size and complexity. At the beginning, the benefits of using a monorepo may not be apparent, especially to those new to the concept. For instance, TypeScript, which requires explicit typing and compilation, may seem like an unnecessary nuisance at first. However, its importance becomes clearer over time. Monorepos can be particularly challenging for smaller teams or those new to the development world. They may find it hard to understand the benefits of monorepos, especially when they've been told for years that splitting projects into smaller units is the way to go. Despite these challenges, monorepos do offer significant advantages, particularly for large-scale projects. Git, the popular version control system, is capable of handling large repositories, and there are ways to scale it even further. Companies like Microsoft use Git to manage their massive projects. In summary, while monorepos may seem daunting at first, they offer numerous benefits for managing large-scale projects. It's essential to understand the long-term value of these tools and to communicate that effectively to team members.

    • NX – Managing Monorepos with EaseNX is an efficient build system for managing monorepos, offering a better development experience by understanding dependencies and providing a comprehensive view of your workspace.

      NX is an extensible build system designed for managing monorepos, or large repositories containing multiple related projects. It automatically understands the relationships between packages and modules within the repo, creating a graph of dependencies. NX creates a comprehensive view of your workspace, allowing you to build, test, or lint projects with ease. It also supports plugins to provide additional information. Unlike Google's massive custom solutions, NX is a more suitable choice for most companies and teams, offering a better development experience at a smaller scale. NX's monorepo capabilities make it an efficient solution for managing complex projects with interconnected dependencies, streamlining the build and development process.

    • Anex automates tasks and provides a unified developer experienceAnex streamlines development by understanding workspace relationships, automating tasks, and handling complex dependencies in large teams

      Anex, a hypothetical tool, offers a more efficient and scalable development experience by understanding the relationships between different parts of a workspace and automating tasks accordingly. It can replay terminal outputs, build apps on multiple machines, and manage dependencies in a distributed system, all while providing a unified developer experience. However, achieving this level of scalability and maintaining the system in a large organization with numerous developers and dependencies can be challenging. The tool's real value lies in its ability to handle complex dependencies and distribute tasks efficiently, making the development process faster and more manageable for large teams.

    • Automating code updates and dependency management with NXNX simplifies managing code updates and dependencies for large organizations by automatically detecting and updating all dependencies in a workspace, ensuring consistency and avoiding potential compatibility issues.

      Having a robust system in place for managing code updates and dependencies is crucial for large organizations, even if it may not seem immediately important for speed. When major updates to libraries like Next.js and React occur, manually updating each project can be a complex and time-consuming process, especially when dealing with multiple tools and dependencies. This is where NX comes in. When upgrading from one version to another, NX can automatically detect and update all dependencies in a workspace, ensuring consistency and avoiding potential compatibility issues. For example, when moving from Next 11 to Next 12, NX can update the package.json file with the new versions and run recipes to automatically update config files and source code. Moreover, NX can handle complex cases where multiple tools need to be updated simultaneously, such as Cypress and Storybook. By fetching metadata about the dependencies and providing compatible versions, NX can reconcile the updates and create a migrations file to automatically update the workspace. In essence, NX simplifies the process of managing code updates and dependencies, making it easier for large organizations to keep up with the latest versions and maintain their systems effectively. By automating the update process, NX saves time and reduces the risk of compatibility issues, ultimately ensuring a smoother development experience.

    • Next.js Automated MigrationsNext.js simplifies workspace migrations by automating large-file transformations and providing plugins to ensure compatibility with new tools or frameworks, saving time and reducing manual effort.

      Next.js, a popular React framework, offers automated large-scale file transformations and composable utilities through its virtual file system. This enables the seamless migration of workspaces to new versions of tools or frameworks, such as Cypress, with minimal manual intervention. The tools can automatically rewrite specs or config files to work with the new version, but there may be some edge cases where manual intervention is required. Next.js also provides plugins that shield users from potential issues, ensuring compatibility in most cases. For instance, when TSLint was deprecated, Next.js offered a solution by writing migrations to map TSLint rules to SLLint rules automatically. This significantly reduces the time and effort required for companies to migrate their workspaces, allowing them to focus on new features and projects instead of being bogged down by manual migration processes. Overall, Next.js's automated migration capabilities save time, reduce manual effort, and help keep projects up-to-date with the latest tools and frameworks.

    • Understanding NX's Two Parts: Core and Technology-SpecificNX is a versatile tool beyond build and monorepo management. It's a task orchestrator, allowing custom executors and generators for technology-specific needs, making it more composable and expressive than NPM scripts.

      NX is more than just a build tool or monorepo manager. It's a generic task orchestrator that can run processes across machines and cache files, making it technology-agnostic. The first part, NX Core, is responsible for managing tasks and is completely technology-agnostic. The second part is where NX becomes technology-specific, allowing you to write custom executors and generators. An executor is like a custom script that provides metadata, while a generator creates new artifacts. This makes NX more composable and expressive than NPM scripts, which are not very composable. By understanding these two parts, you can better integrate NX with your existing tools and workflows. For instance, if you have services using Parcel or Vite, you can still use NX alongside them by leveraging its generic task orchestration capabilities and writing custom plugins for specific technologies.

    • Using NX for Monorepos: Build and Manage Larger ProjectsNX is a flexible monorepo solution with core features and optional plugins for code sharing, project generation, build automation, migrations, and scale handling.

      NX is a set of tools and plugins that can be used to build and manage monorepos, offering features like code sharing, project generation, and build automation. The core of NX is comparable to other tools like Turbo, but its plugins provide additional affordances, such as migrations and scale handling. NX doesn't replace existing tooling, like Babel or TypeScript compilers, but rather integrates with them. The plugins are optional and can help larger teams save time on tasks like migrations. NX's approach of offering a core with optional plugins is a more flexible and industry-friendly solution compared to full-stack closed tools that aim to implement everything from scratch.

    • Effectively using existing tools instead of building new onesThe team prioritizes using existing tools, emphasizing ease of adoption and minimizing wait times through caching and skipping builds.

      The team focuses on wrapping and distributing existing tools effectively, rather than building new ones from scratch. They acknowledge the expertise of other teams in areas like compilers and type checkers, and prefer to use these tools instead. The team values ease of adoption and the avoidance of having to rebuild or replace existing tools. They also discussed the importance of caching and skipping builds to minimize wait times after making changes. Strapi, a sponsor of the podcast, was highlighted as an open-source headless CMS that simplifies building back end APIs and offers a wide range of plugins. The team emphasized the importance of using tools that fit well with the rest of the tech stack and make development easier, rather than taking on the challenge of building everything from scratch.

    • Caching: Reusing Previous Computations for Faster BuildsCaching identifies unique computations through hashing and allows reuse of previous results, leading to substantial time savings in CI builds and local development.

      Caching is a crucial technique used in software development to significantly speed up the build and deployment process. By identifying unique computations through hashing, caching allows developers to reuse the results of previous builds instead of repeating the same process each time. This leads to substantial time savings, especially during continuous integration (CI) builds where multiple applications can be checked and built in parallel. Caching also helps in local development by avoiding unnecessary rebuilds and reducing the impact of constant file changes. Furthermore, CI systems can intelligently analyze PRs and determine which parts of the repository need to be rebuilt, optimizing the overall build process.

    • Understanding the relationship between Caching and Distribution in CICaching saves computation time by retrieving previously computed results, while distribution runs and distributes tasks across multiple agents for parallel processing. Both techniques are essential for efficient CI, with caching enabling distribution and distribution enabling caching.

      Caching and distribution are related concepts in the context of Continuous Integration (CI). Caching is a technique used to save computation time by retrieving previously computed results from memory instead of recomputing them. Distribution, on the other hand, is a way to run and distribute tasks across multiple agents to enable parallel processing and reduce overall CI time. While caching can help reduce overall CI time on average, it may not help in reducing the worst-case scenario CI time. Distribution, on the other hand, can help in scaling up the CI process and reducing the worst-case scenario CI time by distributing tasks across multiple machines. Both caching and distribution are essential for efficient CI, and they work together to optimize the CI process. In essence, caching enables distribution by allowing the computation results to be shared across multiple agents, and distribution enables caching by distributing the workload and reducing the overall CI time. By understanding the relationship between caching and distribution, teams can optimize their CI process and ensure that their builds are running efficiently and effectively.

    • Distributing workloads for efficient processing in large systemsDistributed caching like GitHub actions can significantly reduce CI times and minimize costs by optimizing task distribution for time-consuming processes like linting, building, and testing.

      As systems grow larger in enterprises, they will inevitably exceed the capabilities of a single machine. To address this, the question becomes how to effectively distribute workloads for efficient and fast processing. Distributed caching, such as GitHub actions, can significantly reduce CI times and minimize costs by optimizing the distribution of tasks. This strategy can be particularly effective for time-consuming processes like linting, building, and testing. For example, in a large-scale app with multiple modules and shared libraries, distributing the build process can reduce hours-long CI times to just 15 minutes. However, achieving sub-15 minute CI times for very large repositories with thousands of engineers requires more intensive engineering efforts. It's also worth noting that tools like these can also help with processing image assets and other media, making the entire development process more streamlined and efficient. Ultimately, the goal is to minimize waiting times and make the most of your development resources.

    • TypeScript benefits for small projects and new developersTypeScript's sophisticated tooling and editor integration make it valuable for projects of all sizes, including smaller projects and those for new developers

      TypeScript, a programming language, is not only beneficial for large-scale projects due to its ability to handle complexity and provide guidance for developers, but it can also be useful for smaller projects and new developers due to its sophisticated tooling and editor integration. For instance, tools like NX can help generate and set up a React Native app, making it easier for beginners to get started. Additionally, the editor integration and unique features of TypeScript can improve the developer experience, making it a worthwhile consideration for projects of all sizes. Regarding hardware preferences, the speaker uses a MacBook Pro 14, appreciating the power and capabilities of the M1 chip. For keyboards, they prefer the HHKB, a unique Japanese mechanical keyboard, for its pleasant typing experience. The speaker also uses an iPhone and varies their text editor depending on the situation. These insights provide a glimpse into the value of TypeScript and the importance of considering ergonomics and tooling for developers, regardless of project size.

    • Versatility and Adaptability in Coding ToolsUsing versatile coding tools like IntelliJ, Lunar VIM, and Versus Code, and learning timeless tools like Bash or Vim, or modern languages like JavaScript/TypeScript, can significantly enhance productivity. Keep a weekly notebook of new discoveries and create simple diagrams to solidify learning.

      Having a versatile toolkit and being adaptable to different coding environments can significantly enhance productivity. The speaker shared their personal experience using IntelliJ, Lunar VIM, and Versus Code for different tasks, emphasizing the strengths of each tool for specific editing jobs. While IntelliJ is great for heavy development, Lunar VIM is convenient for small edits, and Versus Code is widely used and offers fantastic tooling. If starting from scratch, the speaker recommends learning timeless tools like Bash or Vim, as they have proven longevity. However, for practicality and versatility, JavaScript/TypeScript is also a solid choice due to its wide usage and excellent tooling. The speaker offered advice for beginners, suggesting that keeping a weekly notebook of new discoveries and creating simple diagrams to illustrate the concepts can help solidify learning and create a visual reference for future reference.

    • Relying on a network for web development updatesStay informed through a network of knowledgeable peers, be excited about potential type checking in JavaScript, and explore NX for development opportunities.

      Staying updated in web development doesn't require extensive use of social media or constant consumption of information. Instead, building a strong network of knowledgeable peers can help keep you informed. Scott, a senior engineer, shared that he relies on his network to share interesting developments, rather than spending time on Twitter. He also expressed excitement about the potential of type checking making its way into the JavaScript spec, which could lead to faster system performance. Additionally, he emphasized the importance of JavaScript as a lingua franca in web development, allowing for effective collaboration and a broad applicability of tools. Finally, he encouraged developers to check out NX, a JavaScript and TypeScript development platform, and engage with the community for learning opportunities.

    • Effective tooling for managing monoreposUnderstanding tool capabilities and limitations, effective communication, and considering development experience are crucial for managing monorepos with effective tooling. Evaluate options carefully to make informed decisions and streamline workflows.

      Importance of effective tooling when working with monorepos. Monorepos offer numerous benefits, such as easier code sharing and improved project organization. However, managing a monorepository system can present unique challenges, particularly when it comes to tooling. The panelists shared their experiences with using tools like Lerna, Yarn Workspaces, and Nx Monorepo to manage their monorepos. They emphasized the importance of having a clear understanding of the tool's capabilities and limitations, as well as the need for effective communication and collaboration within the team. Another important consideration is the impact of tooling choices on the development experience. For instance, some tools may offer better integration with specific frameworks or libraries, while others may provide more robust features for managing dependencies and building projects. Ultimately, the choice of tooling depends on the specific needs and goals of the project. It's crucial to carefully evaluate the available options and consider the trade-offs before making a decision. In summary, effective tooling is essential for managing monorepos and maximizing their benefits. By understanding the capabilities and limitations of different tools, and carefully considering the development experience, teams can make informed decisions and streamline their workflows.

    Recent Episodes from Syntax - Tasty Web Development Treats

    790: State of JS 2023 Reactions

    790: State of JS 2023 Reactions

    Scott and Wes dive into the 2023 State of JavaScript survey, breaking down the latest trends and pain points in front-end frameworks, build tools, and JavaScript runtimes. Tune in for their hot takes and insights on what’s shaping the JavaScript landscape this year!

    Show Notes

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott: X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    789: Do More With AI - LLMs With Big Token Counts

    789: Do More With AI - LLMs With Big Token Counts

    Join Scott and CJ as they dive into the fascinating world of AI, exploring topics from LLM token sizes and context windows to understanding input length. They discuss practical use cases and share insights on how web developers can leverage larger token counts to maximize the potential of AI and LLMs.

    Show Notes

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott: X Instagram Tiktok LinkedIn Threads

    CJ: X Instagram YouTube TwitchTV

    Randy: X Instagram YouTube Threads

    788: Supabase: Open Source Firebase for Fullstack JS Apps

    788: Supabase: Open Source Firebase for Fullstack JS Apps

    Scott and CJ chat with Paul Copplestone, CEO and co-founder of Supabase, about the journey of building an open source alternative to Firebase. Learn about the tech stack, the story behind their excellent documentation, and how Supabase balances business goals with open-source values.

    Show Notes

    • 00:00 Welcome to Syntax!
    • 00:30 Who is Paul Copplestone?
    • 01:17 Why ‘Supa’ and not ‘Super’?
    • 02:26 How did Supabase start?
    • 08:42 Simplicity in design.
    • 10:32 How do you take Supabase one step beyond the competition?
    • 12:35 How do you decide which libraries are officially supported vs community maintained?
      • 15:17 You don’t need a client library!
    • 16:48 Edge functions for server-side functionality.
    • 18:51 The genesis of pgvector.
    • 20:59 The product strategy.
    • 22:25 What’s the story behind Supabase’s awesome docs?
    • 25:26 The tech behind Supabase.
    • 35:46 How do you balance business goals with open source?
    • 42:01 What’s next for Supabase?
    • 44:15 Supabase’s GA + new features.
    • 48:24 Who runs the X account?
    • 50:39 Sick Picks + Shameless Plugs.

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott: X Instagram Tiktok LinkedIn Threads

    CJ: X Instagram YouTube TwitchTV

    Randy: X Instagram YouTube Threads

    787: You Should Try Vue.js

    787: You Should Try Vue.js

    Scott and CJ dive deep into the world of Vue.js, exploring what makes this frontend framework unique and why it stands out from React and Svelte. CJ gives a comprehensive tour, covering everything from getting started to advanced features like state management and Vue’s built-in styles.

    Show Notes

    Vue.js: The Documentary.

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott: X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    786: What Open Source license should you use?

    786: What Open Source license should you use?

    Scott and CJ dive into the world of open source, breaking down its meaning, benefits, and the various types of licenses you’ll encounter. From permissive licenses like MIT and Apache 2.0 to copy-left licenses such as GNU GPLv3, they’ll help you choose and apply the right license for your project.

    Show Notes

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott: X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    785: What’s Next for NextJS with Tim Neutkens

    785: What’s Next for NextJS with Tim Neutkens

    Scott and Wes dive into the world of Next.js with special guest Tim Neutkens from Vercel. They explore the latest updates, including the React Compiler and React Server Components, discussing their impact on developer workflows and the future of Next.js development.

    Show Notes

    • 00:00 Welcome to Syntax!
    • 00:30 What does the React Compiler do?
    • 05:04 Will React Compiler help with managing Context?
    • 06:39 What happens if you’re not using a React Compiler?
    • 09:30 Will this work on any NextJS version?
    • 12:18 What are React Server Components?
    • 16:28 Shipping all the data inside an encapsulated component.
    • 20:17 Clearing up the frustrations around retrofitting server components.
    • 23:13 Handing migration.
    • 28:30 Is this just a fetch request with props?
    • 36:41 How closely are the NextJS and React teams working?
    • 41:53 Will we ever get Async Client Components?
    • 43:52 Async Local Storage API.
    • 45:31 Turbopack.
    • 57:51 Sick Picks & Shameless Plugs.

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott: X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    784: Logging × Blogging × Testing × Freelancing

    784: Logging × Blogging × Testing × Freelancing

    In this Potluck episode, Scott and Wes tackle listener questions on modern blogging, website environmental impact, and using LangChain with LLMs. They also cover CSS hyphens, unit vs. integration testing, and balancing web development with new parenthood.

    Show Notes

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott: X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    783: How We Built a Netflix Style “Save for Offline” Feature Into Syntax

    783: How We Built a Netflix Style “Save for Offline” Feature Into Syntax

    Scott and Wes dive into the world of browser caching for audio files, exploring the File System API and the Cache API. They discuss size restrictions across different browsers, how tools like Riverside.fm leverage IndexedDB, and walk through code examples for creating, retrieving, and managing cached audio data.

    Show Notes

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott:X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    782: The Developer’s Guide To Fonts with Stephen Nixon

    782: The Developer’s Guide To Fonts with Stephen Nixon

    Scott and CJ are joined by Stephen Nixon of ArrowType to delve into the world of fonts and type for developers. They explore the intricacies of font creation, the utility of variable fonts, and offer tips for making visually appealing typography on the web.

    Show Notes

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott:X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    781: Potluck - The Value of TypeScript × Vue vs Svelte × Leetcode

    781: Potluck - The Value of TypeScript × Vue vs Svelte × Leetcode

    In this potluck episode of Syntax, Scott and CJ serve up a variety of community questions, from the nuances of beginner vs. advanced TypeScript to the pros and cons of SvelteKit. They also discuss falling out of love with React, shipping private packages via NPM, and the eternal struggle of always starting but never finishing projects.

    Show Notes

    Sick Picks

    Shameless Plugs

    Hit us up on Socials!

    Syntax: X Instagram Tiktok LinkedIn Threads

    Wes: X Instagram Tiktok LinkedIn Threads

    Scott:X Instagram Tiktok LinkedIn Threads

    Randy: X Instagram YouTube Threads

    Related Episodes

    S2E06 | Developer's Odyssey with Katerina Skroumpelou

    S2E06 | Developer's Odyssey with Katerina Skroumpelou
    SHOW SUMMARY:
    In this episode of NgXP, get ready for a new inspiring People of Angular episode with Google Maps and Web Technologies GDE, Katerina Skroumpelou. Katerina shares her strong example of how to boldly develop new skills and achieve greater heights throughout your career, including how to expand your network and find the opportunities that keep you increasingly passionate.

    CONNECT WITH US:
    Katerina Skroumpelou @psybercity
    Brooke Avery @JediBravery
    Erik Slack @erik_slack

    89: Docker All The Web Things

    89: Docker All The Web Things

    This week on The Web Platform Podcast, Erik Isaksen, Danny Blue, and Leon Revill talk with Mano Marks (@ManoMarks) all about Docker and how containerized deployments can help you from the time you start your web project all the way to the time you need it to scale up. Is Docker good for small applications, large applications, or both? Is it all just and adorable excuse to put a whale mascot on merchandise? Likely not. Mano Marks informs three primarily front end developers on the exciting ways your can use Docker, from simple push button server solutions to creating Quake...yes, Quake.

     

    Resources

    #19 Dlaczego (nie?)powinno się robić wdrożenia w piątek popołudniu?

    #19 Dlaczego (nie?)powinno się robić wdrożenia w piątek popołudniu?
    Jest piątek, wybija godzina 15:00. Pozostała zaledwie godzina do końca pracy. Do Twojego zespołu dociera informacja, że koniecznie teraz musicie wdrożyć na produkcję zmiany, które w ostatnim czasie wprowadziliście. Wdrożenia w piątek = istny koszmar? 😲

    Pojawia się natychmiastowa negacja pomysłu, czy raczej z swobodą udajecie się w odpowiednie miejsce aby kliknąć w magiczny przycisk wrzucaj wszystko na proda!

    Czy w ciemno wdrożyłbyś aktualnie rozwijaną wersję aplikacji na produkcję?

    Ile rzeczy zostało zintegrowanych do rozwijanego kodu, które zaważają nad pewnością stabilności aplikacji? Ile z tych rzeczy nawet nie została w pełni ukończona, a jest już widoczna w systemie?

    Pomimo, że praktyki związane z CI/CD 🚀 są bardzo dobrze znane, to często je pomijamy – stosując w swoim zwinnym podejściu elementy kojarzone głównie z modelu kaskadowego. Ustalamy zasady zero wdrożeń w piątek. Mamy obawy, że tworzone przez nas oprogramowanie może nie być do końca stabilne. Brakuje nam odpowiednich testów, a sami mieszamy dostarczane przez nas elementy – może nauczyliśmy się nie dostarczać spaghetti code, ale zamiast continuous integration wychodzi nam spaghetti integration.

    Dlaczego wdrożenia w piątek podnoszą nam ciśnienie? Gdzie leży problem? Od czego zacząć aby bo rozwiązać?

    W tym odcinku staramy się odpowiedzieć właśnie na te pytania.

    W jaki sposób i jak często dostarczasz ze swoim zespołem zmiany na wdrożenie produkcyjne? Praktykujecie CI/CD? Z jakich narzędzi korzystacie?

    Zachęcam Cię do pozostawienia swojej odpowiedzi w komentarzu – dziękuję 👍

    #019: Benefits of Continuous Integration

    #019: Benefits of Continuous Integration

    📚 ABOUT THE EPISODE

    In the 19th episode of the main series Grzegorz Godlewski, Marek Urbanowicz and Artur Wolny discuss their experiences and preferences regarding the implementation of Continuous Integration. We really encourage you to give this episode a listen, as we're sure that having a great CI implementation is key to launching products faster and with better developer experience! 

    Tune in for experience and inspiration! 🎧

    📑 TOPICS COVERED

    👉 The common misconception about Continuous Integration
    👉 How implementing Continuous Integration can benefit your team & product
    👉 What it takes to have a successful CI implementation
    👉 Some tools/products which you might consider for your implementation

    ⌚ TIMELINE

    00:00:00 - Intro
    00:01:19 - How do we define Continuous Integration
    00:05:59 - The benefits of Continuous Integration
    00:16:20 - Challenges and requirements for CI
    00:23:36 - CI tools for pipelines (NodeJS)
    00:29:19 - Wrap up

    🔗 LINKS FROM THE EPISODE

    Continuous Delivery by Jez Humble and Dave Farley
    https://martinfowler.com/books/continuousDelivery.html

    Bulb light indicator
    https://en.wikipedia.org/wiki/Build_light_indicator

    🤝 CONTACT US / COLLABORATION

    If you:
    - want to send us your valuable feedback
    - you would like to appear on the show as a guest
    - you would like to help out the show to grow
    - you would like to sponsor the show

    Then please contact us via: podcast@artistryofcode.com
    You can also check out our website: https://artistryofcode.com

    😍 FOLLOW US ON SOCIAL MEDIA

    Facebook: https://www.facebook.com/ArtistryOfCode
    Twitter: https://twitter.com/ArtistryOfCode
    LinkedIn: https://www.linkedin.com/company/artistry-of-code
    Reddit: https://www.reddit.com/r/ArtistryOfCode/

    Grzegorz Godlewski
    LinkedIn: https://www.linkedin.com/in/ggodlewski/
    Twitter: https://twitter.com/GGodlewski

    Marek Urbanowicz
    LinkedIn: https://www.linkedin.com/in/marek-urbanowicz-0ba65254/
    Twitter: https://twitter.com/UrbanowiczDev

    Artur Wolny
    LinkedIn: https://www.linkedin.com/in/artur-wolny-35150664/

    Destiny of Manufacturing EP 0304- cedric daniels University of Memphis

    Destiny of Manufacturing EP 0304- cedric daniels University of Memphis

    Destiny of Manufacturing EP 0304- cedric daniels University of Memphis
    Discusses what employers should expect from employees and what the top prospects in engineering expect. This is very insightful for manufacturers trying to make sure their package is something that will attract tomorrows engineers