\u003C/a>\u003C/figure>\u003C/div>\n\u003C!-- /wp:image -->\n\n\u003C!-- wp:heading -->\n\u003Ch2 id=\"h-the-how-a-trip-through-processes\">\u003Cstrong>\u003Cem>The\u003C/em> \u003Cem>How\u003C/em>: a Trip Through Processes\u003C/strong>\u003Cbr>\u003Cbr>\u003C/h2>\n\u003C!-- /wp:heading -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>So how does a development team meet all these lofty requirements? With a whole host of tools and processes! Let’s go over the difference between how you’d introduce a change to a personal project and all the processes involved in pushing one to the DoLitter codebase. \u003Cbr>\u003Cbr>\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>Depending on the size of the team and codebase, your workplace may not use all of these, or it may have even more niche tools. Don’t worry about remembering all the names and acronyms. Focus on the problem each tool is trying to solve, and if it’s a tool you see often, make sure to \u003Ca href=\"https://stackoverflow.blog/2019/07/30/find-help-online-mindfully-and-effectively/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\">research it further\u003C/a>. \u003Cbr>\u003Cbr>\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:heading {\"level\":4} -->\n\u003Ch4 id=\"h-git-workflow\">\u003Cstrong>Git Workflow\u003C/strong>\u003Cbr>\u003Cbr>\u003C/h4>\n\u003C!-- /wp:heading -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>If code is how you make changes to software, a version control system like git (and less popular alternatives like Mercurial and SVN) is how you track and share your work. When you work on your own projects, git can be a helpful tool to revert to previous versions of your code or share your code with others. At DoLitter, however, its power is greatly amplified. \u003Cbr>\u003Cbr>\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>With git, (and its closely-associated web interfaces like \u003Ca rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\" href=\"http://github.com\" target=\"_blank\">GitHub\u003C/a> and \u003Ca href=\"https://gitlab.com/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\">GitLab\u003C/a>), you can share bits of your work, have your code reviewed, check out what other devs are working on, merge your work with that of others, and even view individual commits. Git can also help merge changes and resolve conflicts when multiple people work on (and commit to) the same file. All this helps DoLitter ensure that you contribute high-quality code that benefits from the context of your colleagues. \u003Cbr>\u003Cbr>\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>Once you’re confident in your code changes, you submit a pull request (a change you want to contribute to the codebase), and the new code will be reviewed by several members of the team—sometimes colleagues with specific domain knowledge or focus, and sometimes anyone willing to take a look.\u003Cbr>\u003Cbr>\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>While learning, you’ve probably come across three main activities in git: pushing, pulling, and committing code. At work, you’ll need to get comfortable with:\u003Cbr>\u003Cbr>\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:list -->\n\u003Cul>\u003Cli>creating branches, which delineate a new feature or line of work\u003C/li>\u003Cli>submitting pull requests (“PRs”) for your local changes to be \u003Cem>pulled\u003C/em> into the central, or “master” repository\u003C/li>\u003Cli>resolving merge conflicts when several engineers make changes to the same code\u003C/li>\u003Cli>maintaining a clean git history by ensuring descriptive and accurate commits \u003C/li>\u003Cli>\u003Ca rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\" href=\"https://www.atlassian.com/git/tutorials/rewriting-history/git-rebase\" target=\"_blank\">rebasing\u003C/a>, a common alternative to merging that helps maintain a cleaner, linear project history\u003C/li>\u003Cli>\u003Ca rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\" href=\"https://www.atlassian.com/git/tutorials/cherry-pick\" target=\"_blank\">cherry-picking\u003C/a>, which allows you to move commits between branches\u003C/li>\u003Cli>\u003Ca href=\"https://www.atlassian.com/git/tutorials/inspecting-a-repository/git-blame\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\">blaming\u003C/a>, which shows you who previously touched the code you’re working with. It may sound accusatory, but it's not. It's there so you know who to ask for context, not to point fingers.\u003Cbr>\u003Cbr>\u003C/li>\u003C/ul>\n\u003C!-- /wp:list -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>Understanding git will make it much easier for you to save, manipulate, share, and review code you’ve written. Get comfortable with it, and you’ll find it much easier to collaborate. \u003Cbr>\u003Cbr>\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:heading {\"level\":4} -->\n\u003Ch4 id=\"h-testing-and-staging-and-prod-oh-my\">\u003Cstrong>Testing and Staging and Prod, oh my!\u003C/strong>\u003Cbr>\u003Cbr>\u003C/h4>\n\u003C!-- /wp:heading -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>On personal projects, you can often push code right into production—your seven users are pretty tolerant of bugs (thanks, Mom!). However, DoLitter uses several different programming environments to help you write code quickly, test efficiently, and deploy it confidently. For example, before the code goes live, it’s a great idea to use it in an environment similar to what your users will see. \u003Cbr>\u003Cbr>\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>You can accomplish this by pushing to a “staging environment”; an internal-only clone of your production environment meant to replicate the experience your users will have. Then, if your code has passed automated tests and internal review, you can merge it into production. To keep track of different needs for different environments, DoLitter has explicit configurations, stored in config files.\u003Cbr>\u003Cbr>\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>Upon being uploaded to the production server, the code usually undergoes a final build process. And then, lo and behold! Your changes are live. But, have you ever wondered what exactly happens during the deploy process?\u003Cbr>\u003Cbr>\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:heading {\"level\":4} -->\n\u003Ch4 id=\"h-the-deploy-process\">\u003Cstrong>The Deploy Process\u003C/strong>\u003Cbr>\u003Cbr>\u003C/h4>\n\u003C!-- /wp:heading -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>Although you can still \u003Cstrong>\u003Ca rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\" href=\"https://firebase.google.com/docs/hosting/deploying\" target=\"_blank\">firebase deploy\u003C/a> \u003C/strong>your personal project, DoLitter needs to ensure that changes pushed to production (“prod”) are ironclad and don’t break anything. Your team may deploy several times a day, or whenever a new change is merged into the master branch, following a process called “continuous integration.” This process may be managed by a Continuous Integration tool like \u003Ca href=\"https://circleci.com/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\">CircleCI\u003C/a>.\u003Cbr>\u003Cbr>\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>So, what exactly happens during a deploy? To start, you’ve been working in a local “development” environment, which gives you the ability to see changes nearly instantly. However, what gets deployed to production often aren’t the exact files you work with on your local machine. \u003Cbr>\u003Cbr>\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:list {\"ordered\":true} -->\n\u003Col>\u003Cli>The files you use are bundled into one, compiled to another language, and \u003Ca rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\" href=\"https://en.wikipedia.org/wiki/Minification_(programming)\" target=\"_blank\">minified\u003C/a> by stripping out whitespace and shortening variable names.\u003C/li>\u003Cli>A suite of single unit tests and compound integration tests runs over your code to ensure there are no glaring syntax or logic errors.\u003C/li>\u003Cli>Additional tools like \u003Ca href=\"https://codeclimate.com\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\">CodeClimate\u003C/a> may measure your code quality (by analyzing your syntax for best practices), while others check for visual changes, load-test the build to ensure it’s able to handle an influx of users, and even measure performance.\u003C/li>\u003Cli>If your code passes all the tests, the build is successful, and you have a version of the app you can show to users.\u003Cbr>\u003Cbr>\u003C/li>\u003C/ol>\n\u003C!-- /wp:list -->\n\n\u003C!-- wp:heading {\"level\":4} -->\n\u003Ch4 id=\"h-error-monitoring\">\u003Cstrong>Error Monitoring\u003C/strong>\u003Cbr>\u003Cbr>\u003C/h4>\n\u003C!-- /wp:heading -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>Your code is live. Time to see how it does in production. Once your code is in production, there are a host of platforms that tell you how it’s doing. Tools like \u003Ca rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\" href=\"https://airbrake.io/\" target=\"_blank\">Airbrake\u003C/a> or \u003Ca href=\"https://sentry.io/welcome/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\">Sentry\u003C/a> help you find errors your application hits in production, which can happen due to: \u003Cbr>\u003Cbr>\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:list -->\n\u003Cul>\u003Cli>faulty third-party connections, like when an API you talk to times out\u003C/li>\u003Cli>inconsistencies in your data \u003C/li>\u003Cli>logic errors in edge cases not caught by tests\u003Cbr>\u003Cbr>\u003C/li>\u003C/ul>\n\u003C!-- /wp:list -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>In addition, monitoring tools like \u003Ca rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\" href=\"https://www.datadoghq.com/\" target=\"_blank\">Datadog\u003C/a> and \u003Ca href=\"https://newrelic.com/\">NewRelic\u003C/a> focus on live application \u003Cem>performance\u003C/em>. They track how long your website takes to respond to requests and even which areas of your code take the longest to load. Sometimes, the code doesn’t throw any errors, but still runs slowly; performance monitoring can help you figure out where the problem is. Finally, if errors do arise, server logging tools like \u003Ca href=\"https://papertrailapp.com/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (opens in a new tab)\">PaperTrail\u003C/a> can help you track down the error.\u003Cbr>\u003Cbr>\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:heading {\"level\":4} -->\n\u003Ch4 id=\"h-whew-that-s-a-lot\">\u003Cstrong>Whew, that’s a lot!\u003C/strong>\u003Cbr>\u003Cbr>\u003C/h4>\n\u003C!-- /wp:heading -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>When you begin to work on a production-scale web application, you realize there’s a lot more to being a developer than just writing code. Learning a new codebase can be a challenge—but learning the industry tooling and workflows alongside it can be downright daunting. Many new developers feel like they go from knowing \u003Cem>something\u003C/em> to not knowing much at all. This experience is common and completely normal, but it becomes easier as you get used to the tools and workflows companies use.\u003Cbr>\u003Cbr>\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>Your first job is likely to involve a flurry of tools and processes that make writing code feel like an afterthought. Remember, you were hired not just to write code, but to maintain and build out an application—and doing this effectively involves mastering your tools and learning to appreciate the problems they solve. With time, you’ll find yourself writing more robust and effective code—and helping DoLitter dependably deliver kitty litter all over the world.\u003C/p>\n\u003C!-- /wp:paragraph -->\n\n\u003C!-- wp:paragraph -->\n\u003Cp>\u003Cbr>\u003C/p>\n\u003C!-- /wp:paragraph -->","html","2019-09-05T14:10:56.000Z",{"current":754},"they-didnt-teach-us-this-a-crash-course-for-your-first-job-in-software",[756,763,768,770,775,780,785,790,794,799],{"_createdAt":757,"_id":758,"_rev":759,"_type":760,"_updatedAt":757,"slug":761,"title":762},"2023-05-23T16:43:21Z","wp-tagcat-beginner","9HpbCsT2tq0xwozQfkc4ih","blogTag",{"current":762},"beginner",{"_createdAt":757,"_id":764,"_rev":759,"_type":760,"_updatedAt":757,"slug":765,"title":767},"wp-tagcat-bulletin",{"current":766},"bulletin","Bulletin",{"_createdAt":757,"_id":764,"_rev":759,"_type":760,"_updatedAt":757,"slug":769,"title":767},{"current":766},{"_createdAt":757,"_id":771,"_rev":759,"_type":760,"_updatedAt":757,"slug":772,"title":774},"wp-tagcat-career-advice",{"current":773},"career-advice","career advice",{"_createdAt":757,"_id":776,"_rev":759,"_type":760,"_updatedAt":757,"slug":777,"title":779},"wp-tagcat-code-for-a-living",{"current":778},"code-for-a-living","Code for a Living",{"_createdAt":757,"_id":781,"_rev":759,"_type":760,"_updatedAt":757,"slug":782,"title":784},"wp-tagcat-first-job",{"current":783},"first-job","first job",{"_createdAt":757,"_id":786,"_rev":759,"_type":760,"_updatedAt":757,"slug":787,"title":789},"wp-tagcat-for-work",{"current":788},"for-work","For Work",{"_createdAt":757,"_id":791,"_rev":759,"_type":760,"_updatedAt":757,"slug":792,"title":793},"wp-tagcat-programming",{"current":793},"programming",{"_createdAt":757,"_id":795,"_rev":759,"_type":760,"_updatedAt":757,"slug":796,"title":798},"wp-tagcat-stackoverflow",{"current":797},"stackoverflow","Stackoverflow",{"_createdAt":757,"_id":795,"_rev":759,"_type":760,"_updatedAt":757,"slug":800,"title":798},{"current":797},"\"They Didn't Teach Us This\": A Crash Course for Your First Job in Software",[803,809,815,817],{"_id":804,"publishedAt":805,"slug":806,"sponsored":12,"title":808},"1b0bdf8c-5558-4631-80ca-40cb8e54b571","2025-08-21T14:00:25.054Z",{"_type":10,"current":807},"research-roadmap-update-august-2025","Research roadmap update, August 2025",{"_id":810,"publishedAt":811,"slug":812,"sponsored":12,"title":814},"5ff6f77f-c459-4080-b0fa-4091583af1ac","2025-08-20T14:00:00.000Z",{"_type":10,"current":813},"documents-the-architect-s-programming-language","Documents: The architect’s programming language",{"_id":16,"publishedAt":17,"slug":816,"sponsored":12,"title":20},{"_type":10,"current":19},{"_id":818,"publishedAt":819,"slug":820,"sponsored":12,"title":822},"f0807820-02d7-4fc5-845f-3d76514b81c0","2025-08-11T16:00:00.000Z",{"_type":10,"current":821},"renewing-chat-on-stack-overflow","Renewing Chat on Stack Overflow ",{"count":824,"lastTimestamp":825},28,"2025-06-23T15:56:54Z",["Reactive",827],{"$sarticleModal":748},["Set"],["ShallowReactive",830],{"sanity-qeaBP-D6QS6IDiHAmTd-W6Iuo5MOvLzhnajyff_O3bU":-1,"sanity-comment-wp-post-12625-1755822910249":-1},"/2019/09/05/they-didnt-teach-us-this-a-crash-course-for-your-first-job-in-software/?cb=1"]