5 Software Development Tools That Make Our Life Easier at Stream

New
7 min read
Jeroen L.
Jeroen L.
Published June 21, 2024

At Stream, we are dedicated to developing high-quality software that efficiently delivers real-time experiences for Chat and Video. Developers can use our SDKs with their platform of choice to accelerate their product’s real-time experience to new heights.

To achieve our goals of providing you with the best Chat and Video SDKs possible, relying on the right development tools is crucial. The software development landscape is packed with tools claiming to make developers' lives easier. Still, today, we shine the spotlight on five specific tools that have the most significant impact on our workflow at Stream. These tools enhance our productivity, streamline our processes, and enable us to deliver robust SDKs swiftly and reliably.

Of course, we use more than five tools at Stream; but it is these five that are at the core of everything we do. If any of these five tools are removed or unavailable indefinitely, we must drop everything we do and get a replacement.

Let’s introduce these five tools we use at the core of our development efforts:

  1. Visual Studio Code, our primary tool for editing code
  2. GitHub, to store and share our code and collaborate using GitHub Issues and related processes and features.
  3. GitHub Actions, to build, check, and deploy our code
  4. Docker, our underlying infrastructure foundation, runs most of our server-side code.
  5. Slack, to communicate about everything we are doing with the above-mentioned tools.

As said, there are more tools, services, and utilities involved. A lot more, things like more than a couple of products offered by Amazon Web Services, GoLang, Swift, Kotlin, Python, Xcode, GoLand, PyCharm, and a terminal program. And to be honest, we could list all. But we wanted to stick with five big ones. Otherwise, we’d have to give this article the title “A Million Software Development Tools That Make Our Developer Life Easier at Stream.”. That would be exhausting to read (and write), to say the least.

We will share specific resources and tips for the five tools mentioned above that greatly help us.

1. Visual Studio Code (VS Code)

Visual Studio Code (VS Code) is the go-to code editor for most of our developers, and for good reason. Developed by Microsoft, VS Code is a free, open-source, and cross-platform editor known for its efficiency and versatility. Through its extension ecosystem, you can add A LOT of functionality to VS Code.

Key Features

  • IntelliSense: IntelliSense offers intelligent completions based on variable types, function definitions, and imported modules. It facilitates faster coding by reducing the amount of code you need to type and helps prevent errors by suggesting contextually relevant code.
  • Debugging: VS Code includes built-in debugging support for Node.js, Python, and more. It allows you to set breakpoints, step through code, inspect variables, and view call stacks seamlessly within the editor.
  • Extensions: With an extensive marketplace, VS Code supports a wide range of extensions that cater to different languages and development needs. Extensions such as Python, Docker, and GitLens enhance productivity by adding custom functionalities and tools directly into the editor. Some more common extensions we use are Prettier, ESLint, Error Lens, GitHub CoPilot, Docker and Dev Containers.

Implementation at Stream

At Stream, we use VS Code for many things, from writing and debugging code to managing version control. We also write a lot of our documentation in Markdown, using VS Code. For instance, our project templates are integrated with Docker and Kubernetes extensions, which provide syntax highlighting and enhanced IntelliSense tailored for our containerized environments. The GitHub pull requests extension is also heavily used, allowing seamless code review and issue tracking directly from the editor.

We also heavily use PyCharm, Xcode, Android Studio, and other tools that are or platform-specific. But when we need a more or less generic tool, we default to VS Code. Some of our developers have eloquent tastes for tools like Nova, Vim or even SpaceMacs.

2. Docker

Containerization with Docker has revolutionized application development, shipping, and deployment. Docker provides a consistent runtime environment, encapsulating the application and its dependencies within containers, ensuring they run uniformly across different environments.

Benefits

  • Consistent Environments: Docker isolates applications from their environments, ensuring they behave the same way regardless of where they are deployed. This consistency reduces "works on my machine” issues.
  • Isolation: Each container operates independently, enhancing security and stability by isolating applications.
  • Scalability: Docker simplifies scaling applications using container orchestration platforms like Kubernetes, enabling efficient deployment and scaling across multiple servers.

Implementation at Stream

Docker plays a pivotal role in our development and deployment processes at Stream. We package our services within Docker containers to ensure consistency across various development, testing, and production stages. For instance, our CI/CD pipelines leverage Docker to create test environments that mirror production exactly. Additionally, we use Docker Compose to manage multi-container applications, further simplifying service orchestration during development.

3. GitHub

GitHub is not just a code repository; it's a platform for collaboration and version control that fosters efficient team workflows and code quality. GitHub supports every phase of the software development lifecycle by providing tools for code hosting, version control, and collaboration.

Collaboration Features

  • Pull Requests: These facilitate code reviews by allowing team members to propose, discuss, and review changes before merging them into the main codebase.
  • Code Reviews: GitHub's code review tools enable teams to leave comments, suggest changes, and approve alterations. This process helps maintain high code quality and promotes knowledge sharing among team members.
  • GitHub Actions: GitHub Actions allow you to automate workflows directly from your GitHub repository. These workflows can include testing, building, deploying, and more, all defined via simple YAML configuration files.

Role at Stream

At Stream, GitHub is the backbone of our version control system and underpins our collaboration workflow. Pull requests and code reviews ensure that all code changes are thoroughly vetted and meet our quality standards before they are merged. Integrated issue-tracking and GitHub Actions CI/CD help streamline our development process by automating repetitive tasks and providing visibility into project progress.

4. GitHub Actions

GitHub Actions automate the entire software lifecycle directly from GitHub repositories. This feature allows us to integrate and efficiently automate testing, linting, building, and deployment processes.

Advantages

  • Automated Testing: Sets up workflows to run tests automatically on every push, pull request, or scheduled event. This ensures high code quality and catches issues early in the development cycle.
  • Seamless Deployment: Facilitates continuous deployment strategies to development, staging, and production environments, reducing manual effort and accelerating release cycles.
  • Build Management: Automates compiling source code into executable code, ensuring reliable and reproducible builds.

Implementation at Stream

At Stream, GitHub Actions streamline various aspects of our development process. For instance, we have workflows that automatically run unit and integration tests on every pull request, ensuring changes meet our quality standards before merging. We also use actions to automate our deployment process, making our CI/CD pipeline more efficient and reducing the risk of human error. These capabilities are crucial in supporting our rapid development cycles and maintaining high standards.

We even have a GitHub repositories that gets scraped for content using a GitHub Action, the results are then committed to another repository for further processing. The act of pushing to this other repository triggers the next step in our build process.

5. Slack

Communication and collaboration are key factors in successful software development, and Slack has become an indispensable tool for fostering these at Stream. Slack’s real-time messaging and diverse integration capabilities help streamline our workflow and keep the team connected.

Features

  • Channels: Channels allow us to organize conversations by project, team, or topic, providing focused spaces for communication. This structure helps keep discussions relevant and organized.
  • Integrations: Slack integrates with various tools and services, such as GitHub, JIRA, and CI/CD pipelines. These integrations bring all notifications and updates into one place, reducing the need to switch between multiple applications.
  • Bots: Custom bots and automation workflows enhance Slack’s functionality. Track office attendance, build status updates, social media posts containing specific tags or terms, ans so much more. By utilizing bots on Slack we are able to make Slack the central hub of pretty much everything going provided it is relevant to our work at Stream.

Implementation at Stream

Slack enhances team collaboration and communication at Stream by providing a platform where all team members can interact seamlessly. Channels help us keep communications organized, while integrations ensure we never miss important updates from tools we already use. Custom bots, such as those that notify the team of build failures or pull request updates, further streamline our workflow and keep everyone informed about ongoing developments.

Since a large part of our team works remotely, we also use Slack integrations to indicate office attendance. This allows us to warn people when our office space is nearing capacity and arrange lunch for the right number of people.

To make Slack work well, we have some rules in place.

  • Make sure your profile information is accurate and up to date with an actual picture of you.
  • Integrate Google Calendar or another tool that has a similar effect on your Slack status. People use Slack to check if you are available or in a meeting before contacting you.
  • If you are absent due to PTO, illness, etc., make sure to have a status that indicates you are unavailable. (Just unavailable is good enough; it doesn’t need to indicate exact reasons.) This allows you to enjoy your time off in peace or recover with as few disturbances as possible.
  • Try to use open Slack channels as much as possible for transparency reasons. We actively encourage people to use DMs and private channels only when necessary.
  • There are some more common sense practices we adhere to.

Conclusion

These five tools—Visual Studio Code, GitHub, GitHub Actions, Docker, and Slack —have become integral to our development workflow at Stream. They enhance productivity, ensure code quality, and foster effective collaboration. We can optimize our workflows and deliver high-quality software efficiently and reliably by leveraging these tools. As we continue to evolve and improve our processes, these tools will remain vital to provide top-notch software efficiently and reliably. We encourage other developers to explore and integrate these tools into their workflows to experience similar benefits.

Additional Resources

To help you get started with these tools, here are some additional resources: