Developer Tea

Sources of Truth

Episode Summary

How do you determine what is valid, authoritative, useful, and true in your daily decisions and actions?

Episode Notes

How do you determine what is valid, authoritative, useful, and true in your daily decisions and actions? What are your "sources of truth"?

✨ Sponsor: Voyage

Voyage is a tool built by and for developers. Voyage saves hours of your time by automating staging environments of your full-stack app for each pull request; and it includes feedback tools with each deployment so you don't have to juggle emails, slack messages, and excel spreadsheets from your counterparts.

Set sail with Voyage and save time and headaches with our automated staging environments. Head over to https://voyageapp.io to get started today!

📮 Ask a Question 

If you enjoyed this episode and would like me to discuss a question that you have on the show, drop it over at: developertea.com. 

🧡 Leave a Review

If you're enjoying the show and want to support the content head over to iTunes and leave a review! It helps other developers discover the show and keep us focused on what matters to you.

Episode Transcription

What is your source of truth? That's what we're talking about on today's episode of Developer Tea. My name is Jonathan Cutrell listening to Developer Teain my goal on this show. This help Jordan Developers like you find clarity, perspective and purpose in their careers. Let's get into this topic. Source of truth. So the time when we hear this as developers, what it means to us is that there's some data store. There's some point upstream from us or there's some state that we are treating as authoritative. And relying on that state, rather than, for example, relying on a cached version of that state, the closest that you can get to the source of truth reflecting in whatever your application is or however you're using that information, the closer you get to the source of truth, the more likely things are to be accurate. Now whether or not they're good or correct is a different question altogether, but at least you know that the application that you're developing, if you have a single source of truth, is going to kind of work in harmony with itself and other applications that rely on that same source of truth will follow suit. And you can see how this breaks apart when you start to have multiple sources of truth that are supposed to reflect each other, but because the coupling between those sources of truth is loose at best, you end up having a lot of disparity. Disparity between those two sources of truth, but also it kind of compounds. As you take the information from one and you take the information from another and you combine them very often, the combination ends up creating a third source of truth and none of them are actually true at all. This can be problematic for our applications obviously because we're trying to deal with state all the time and if we don't have a trustable source, right, if we don't have one place where state is determined, right, we have a place where state is correct and we don't really care about any other representation of state other than that place. Okay, so why are we talking so much about this seemingly more technical than usual concept, because this doesn't just apply to code. I want to talk to you today about your sources for truth, they go beyond your code. But first, let's talk about today's sponsor, Voyage. Voyage is built by and for developers. It saves hours of your time by automating your staging environments for your full stack app, not just your front end, for each of your pull requests. It includes feedback mechanisms with each deployment so you don't have to juggle emails, Slack messages, Excel spreadsheets and a billion different tools all trying to do the same thing, which is create discussion around the work you're doing. You've spent a lot of time building a complete application. So why would you only deploy part of it? Managing a partial deployment is like a completely different application altogether because you have to stand up your long running staging API, for example, for your front end deployment to talk to. And then if that staging API gets out of sync with what your front end is expecting, then you have a lot of bugs that come out of that as well. So what Voyage does, they look at your whole stack and they deploy that instead. Multiple repositories, services, it's not a problem. Voyage will deploy your complex application. However, you built it to be deployed. And remember, the big deal here is that you're going to have the ability to have staging environments for every PR and then to collect feedback. Now, who is the feedback coming from? This is not just your normal PR review process. This feedback can come from anybody. They don't even have to have a GitHub account. And all of it will flow back to GitHub, or maybe you're using JIRA. All of it flows back to those originating kind of PR discussions on those platforms. So again, no GitHub account required, but everything is going to go back there. So you can stay in your flow. You can stay in your review process, without having to exit and go to all of those other tools that we already mentioned. Voyage is safe and secure. You get unique deployments for each PR. Those deployments stay alive as long as the PR stays alive until it's closed. And the subscription plan, even includes the ability to password protect your deployments. So go and check it out. Head over to voyage app dot IO. That's voyageapp.io. Save time and headaches with the automated staging environments available at voyageapp.io. Thanks again to voyage for sponsoring today's episode of Developer Tea. Now, I want to give a disclaimer as we get back into this subject of sources of truth. There's a lot of different kind of definitions of truth, philosophical definitions of truth, that we aren't really trying to get into for this episode. That's not really the goal of this particular episode to try to create an existential crisis or something like that. That's not what we're trying to do. Instead, what I want to kind of scope this down to is the sources of information that you believe and are willing to act on. So this is practical information. We're not talking about high level information that you don't really act on anyway. We were not talking about the meaning of the universe or the meaning of life. Instead, we're talking about the kind of information that might make you consider your behavior. It might make you change your behavior. It might make you change the way that you write that particular piece of code. So getting down to the very practical day to day, what information do you believe? Most people in these particular or in this particular kind of environment, we're talking about day to day activity, day to day decision making. Their source of truth is their own self. Above all other kind of sources, we believe ourselves. And what that means is the information that we take in, we can evaluate and then kind of rewrite. We determine the version of that information that we want to kind of bring into our list of acceptable information. So most of the time, the source of truth that we're using is actually a modified and a filter mechanism that we're using to change information in ways usually that kind of line up with our previously held beliefs. And so this isn't me kind of coming down on anybody that's listening to this episode and telling you that you shouldn't trust yourself. That's not once again, that's not the goal of this episode. Instead, it's to give you the opportunity, the moment in time to evaluate what sources of truth do you use in your practical everyday life? Are you trusting yourself too much or possibly not enough? Now, there's not really a good framework that I can give you for how much you should trust yourself. But one thing is almost certainly true. If you only trust yourself, if you are skeptical of anyone else's opinion or if you hold your opinion higher than anyone else's, then you are kind of headed for a very dangerous path. Because when we learn from other people, we necessarily have to set aside our preconceived ideas of what truth is in that particular instance. And you'll notice in the beginning of this episode, when we were talking about sources of truth, when it comes to our code and it comes to data, for example, state, we use the term authoritative. How do we, as humans, lend authority to sources of information? This is a topic that we certainly can't cover in one episode of this show. But it is a topic that is worth diving into yourself to go and understand how do I lend credibility, authority to other sources of information. If you ask yourself that question, think about your list of things that you believe, not actual beliefs, but sources that you attend to believe, sources you tend to trust. What's common amongst those sources? And if you were to ask yourself, why exactly? What specifically gives me reason to trust this source? Is there a reason that I shouldn't trust this source? And this isn't to say that your list needs to be thrown out and you have to start from ground zero. But rather, it's to explain the fact that the way that we lend credibility is complex. It's not as simple as who is correct and who's not. Who is right most of the time even is not enough. There are so many things that get tied into this. All of our psychology, our behavior, our experiences, all of this gets tied into how we lend credibility and how we determine authority in a given subject. But it's worth investigating so that you can start to expand and understand that there's likely more, there's likely more information out there. There's more authority out there than you are exposing yourself to. And that learning requires that we set aside the illusion that we are the only people we can trust. Thanks so much for listening to this episode of Developer Tea. Thank you again to today's sponsor Voyage. You can set sail with Voyage and save time and headaches with the automated staging environments they provided. Voyage app.io. That's voyage app.io. We're so thankful for our sponsors on this show. They are the reason we're able to continue doing Developer Tea, especially at the frequency that we do this show. So please go and support our sponsors. We are very picky about who we let sponsor this show and I'm very grateful that Voyage is sponsored today. Thank you so much for listening to this show. I'd love for you if you got through this episode and you feel energized by it, especially to join our Discord community. Head over to developertea.com slash discord. If you're not familiar with discord, discord is a community tool that allows you to do things like what you're probably used to, which is messaging each other. But there's also a bunch of other features. There's a lot of cool tools that we're hopefully going to get to explore this year as the community grows. Head over to once again developertea.com slash discord. Thank you so much for listening to this episode and until next time, enjoy your tea.