300 episodes

Will and BJ first met in college and have been friends ever since. You can tell this through their dynamic conversations. Will bring a wide knowledge base to the conversation through his years of experience as a senior developer and aspiring software architect. Whereas BJ being a journeyman developer is learning as he works in the field. He shares those lessons and more each week. Because of their varied experiences topics range from the technical to the every day life of a software developer. Whether you are just starting out or in the twilight of your career you'll find something useful and informative on Complete Developer Podcast.



There are plenty of podcasts out there focused on languages and coding. What we are doing with the Complete Developer Podcast is to also cover the other areas of life as a developer.

Complete Developer Podcast BJ Burns and Will Gant

    • Technology
    • 4.9 • 95 Ratings

Will and BJ first met in college and have been friends ever since. You can tell this through their dynamic conversations. Will bring a wide knowledge base to the conversation through his years of experience as a senior developer and aspiring software architect. Whereas BJ being a journeyman developer is learning as he works in the field. He shares those lessons and more each week. Because of their varied experiences topics range from the technical to the every day life of a software developer. Whether you are just starting out or in the twilight of your career you'll find something useful and informative on Complete Developer Podcast.



There are plenty of podcasts out there focused on languages and coding. What we are doing with the Complete Developer Podcast is to also cover the other areas of life as a developer.

    Enneagram Wrap Up

    Enneagram Wrap Up

    While you don’t want to be too quick to categorize someone, categorization does serve a purpose. It gives you a mental model for dealing with situations, and mental models can be very helpful once their accuracy is sufficiently tuned by real world experience. However, mental models that are just learned from a book can be very risky. Because no idea you get from a book is really yours until you’ve actually tested it, tweaked it, and made it your own, now we need to discuss some of the dos and don’t for using the enneagram in the real world. Like design patterns, enneagram types don’t really exist – rather they are a type and categorization of things that do exist. The distinction is important, because to do well at anything requires that you submit to reality, rather than to a generalization of reality. While the latter is tempting and makes you feel like you have an explanation for everything, it’s fraught with peril, because you don’t. Reality is messy and requires learning when to apply book knowledge and when not to do so.

    There are many things you can do with a personality test that will give you bad results over the long term, even if those same things worked in the short term. Human beings are notoriously difficult to classify into rigid groupings, whether you are talking about a dozen hunter gatherers living in a rain forest, or 500 programmers working in a sky scraper in New York City. While you can easily create a mental model of the world that works more than half the time, it’s very difficult to create one that works ninety percent of the time, and impossible to create one that does so every time. Further, another issue rears its ugly head – when you classify people and tell them about it, most of them don’t like it very much. In short, if you think any of this stuff is ever going to give you a full explanation of what someone did, full foresight into what they might do, and a perfect understanding of the reasons why, you are sorely mistaken.

    That doesn’t make a system like the enneagram useless, however. It just means you have to look at things differently. You have to shift your approach so that your mental model is constantly being tested and refined, use the system to improve yourself (instead of trying to control others), and to use the tool to have better interactions with others. Such a system is more useful than one that attempts to offer perfect understanding and predictions, because it actually works in the real world.

    The enneagram can be a useful tool, provided that you understand what it is intended to provide and what it is not. Used properly, it can give you a better mental model when working with other people, when trying to improve yourself, or when adding members to your team. However, it is not a panacea and has limited capability when you try to use it for prediction, fixing other people, or for dealing with bad behavior by yourself and others. Like any tool, it has its strengths and weaknesses and you’ll find that you need to apply it before you really grasp what they are.



    Episode Breakdown







    It’s a model of clusters of behavior, not a predictive algorithm

    You will not be able to accurately and consistently predict others’ behavior based on their type. It’s good for analysis after the fact and for refining your feedback loops to handle things better next time. It’s not even a good predictor of your own behavior – again it’s a retrospective and feedback loop tool, not a predictive one. You can tell yourself all day that you will respond as healthy person of your enneagram type in a particular situation, but you might not be in a good head space at the time, or you may be in a group of people whose behavior trends in a different direction.





    Categorization helps you make sense of the world,

    • 57 min
    Risks of Older Code

    Risks of Older Code

    Old technology runs the world. No matter how much you’ve kept up on newer technology, you’ll find some seriously deprecated stuff floating around out there. Many times, especially earlier in your career before your hourly rates are too high, management will try to convince you to work on “legacy technology”. Sometimes the technology has some good points. While we’re not in favor of just throwing out old stuff because it’s old, older technology does come with a lot of downsides, especially for those not experienced with it. For one, it makes it harder for you to get a job anywhere else, which can mean that using older technology is a career-limiting move. For another, older technology may have been superseded by a newer version of the same technology, making it harder to get technical support. Finally, older technology might also limit your development options in ways that add a lot of work, work that management largely won’t understand.

    While many powerful systems have been built with older technology (and are adequately maintained), you’ll often run into situations where older technology is being used in a business, simply because of inertia, or because someone “used silverlight once and never again” {Will has a story}. People in general have a bias towards things they know and understand – it’s one of the reasons civilization works as well as it does. People can reason about things more easily when there are fewer variables involved. However, in technological professions, the “old and established” might better be understood as “the crusty and barely working”. Our job is to speed up and improve processes to the best of our ability – old technology can often get in the way of this for a variety of reasons. Further, the businesspeople in your company will not understand when you try to express why the software is getting in the way – they just assume we’re whining (and we are sometimes, to be fair).

    While older technologies can definitely work well for the purposes for which it was designed, we are frequently confronted with situations that the original authors of any technology didn’t consider. We have a security landscape that, at best, could be characterized as a cross between a dystopia and Idiocracy. Every day, more demands are placed on old systems, with new requirements for reporting, compliance, accessibility, integration with third party systems, or even compliance with new security restraints. The speed at which things change is always increasing, and we often find ourselves staring at our screens, realizing that the software we are maintaining today will not survive an upcoming event horizon. There is hope though – the newer a technology is, the more likely it is that someone else has already done at least some of the legwork required to bring it up to snuff. However, we can’t actually express it this way to management. Instead, as developers, we have to learn how to explain things to business people in a way that convinces them, rather than trying to explain it to them as if they themselves were developers.

    To company leadership, outdated software doesn’t look like a real problem. Instead, they treat it like an asset that is already paid off (instead of the liability it is). The problem with the way many software developers advocate for newer technology is that they do it from the perspective of a software developer, rather than the perspective of a business owner. While there are plenty of merits to using newer frameworks and technologies to get the job done, most of the things that developers like about newer frameworks don’t matter at all to the people in charge. However, if you can characterize the risks in terms the business people can understand, you’ll have a lot better luck convincing them to let you use newer technology to do your w...

    • 55 min
    Essentials of Debugging

    Essentials of Debugging

    Debugging is an essential part of software development. No matter how great of a developer, or how meticulous you code, you will run into time where your code doesn’t do what it is expected to do. Sometimes this is an error in the actual code, other times it may be an unexpected interaction that your code has with the rest of the system

    When this happens you have a bug. Wikipedia defines a software bug as an error in the design or implementation (coding) of a program or application. Debugging is the the process of locating the source of the bug and then fixing the underlying problem causing the bug. While it seems straight forward, bugs can be tricky as they may not present themselves in the area of code where the problem actually exists. Many times you will notice a problem in one area of the application but the actual code causing the problem is in a totally different area or even layer of the application.

    While it is important to understand what a bug is, it is just as important to understand what a bug is not. Network errors, server outages, and slow connection are not software bugs. You may want to update your code to better handle these situation, but they do not constitute bugs. It is important to know what is a bug so that you are not wasting your time trying to fix something that is not in your control.

    The process for tracking a bug is broken down here, though for most people once they’ve done it a few times it starts to become automatic. You will begin to notice patterns in the bugs you fix so that you can just know that it is in a certain place in the code and that is where you look first. These patterns aren’t perfect but they often provide a starting point. Use the information here to develop that sense of where you need to look, but remember that patterns aren’t perfect and you may have to go back and follow the bug from broad to narrow to determine what part of the code is causing the problem.



    Episode Breakdown







    Before you begin, you must be able to replicate the bug consistently.

    It’s not possible to fix a bug that you can’t replicate. You’ll never know if you’ve actually fixed it or if it was even are real problem to begin with. In order to be able to track and understand what is causing an issue that issue needs to happen on a consistent basis. Inputting the same values must create the same results, even if they are wrong for it to be a consistently replicable bug.

    The term consistently inconsistent refers to something that happens with enough regularity to be noticed but does not happen every time. Typically when you see something is consistently inconsistent it will be related to a race condition. Many times users, and even some less experienced QA, will blame the app or your code for issues with their own machine or connection. This typically stems from a lack of understanding how computers function. Slow internet connection isn’t a bug unless you are Ops. With these cases patience goes a long way in explaining to users.





    Check the documentation to make sure this is an actual bug and not an unexpected feature.

    If you are using an outside service or you didn’t write the code yourself check the documentation to make sure that you haven’t found a feature that the user didn’t know about. When you are the one building the application and QA throws something back to you check the Acceptance Criteria, if you have them, to make sure it is doing what it is supposed to be doing.

    The idea is to understand what a bug is and what a bug is not. A bug occurs when the application is not functioning as it is supposed to function, that doesn’t mean how a particular user expects it to function…unless that user is the product owner. Sometimes bugs aren’t actual problems with the application or the code,

    • 56 min
    Fixing Your Work Life Balance

    Fixing Your Work Life Balance

    Being a workaholic is one thing (and over-diagnosed by internet “bro science” experts, but whatever), but work/life is something that many people struggle with. We value our work and we often enjoy it. Furthermore, we often feel a sense of loyalty to our teammates. We also are often concerned that if we don’t work more than expected, that we’ll be first on the chopping block when the inevitable round of layoffs occurs. This is especially true for older developers who have been around the block a few times.

    When we talk about overwork, the first and most important thing to know is that the typical suggestion of “just work less, man” doesn’t actually fix anything. It’s a complex phenomenon arising out of a number of issues, such as insufficient staffing, poor planning, fear of losing your job, comradrie with teammates (and a desire not to disappoint them), or even a misunderstanding of what constitutes a “good enough” work ethic all play a role. Further, because overwork produces short-term gain at the expense of long-term mistakes, it often establishes a feedback loop that causes you to have to overwork even more. Once you make a habit of working too much, the problems you create become reasons to stay a little later to get things done. Adding to the madness, more than likely your manager is aware of at least some of these problems, increasing your fear of getting fired if you were to cut back to a reasonable number of hours. If you don’t want to quit your job to get away from being overworked, you need a strategy that takes these things into account.

    Fortunately, many bad work situations with inherent feedback loops would solve themselves if the feedback loop wasn’t present. Overworking is one of those work situations that relies on a positive feedback loop. If you can get rid of the inputs to the feedback loop, the actual problems start to become tractable. If instead, you decide to try to simply work your way out of being overworked, you’ll be in an even worse situation afterward. The key to it all is very similar to much of the debugging we do every day – you determine which of the inputs to the system is causing a problem and then you either keep the input out of the system or you modify the system to be tolerant of the input.

    Poor work/life balance is corrosive to your quality of life. Not only does it chew up time and attention for the things that matter, but it destroys your health and your enjoyment of life. Even more insidious, it often contains a feedback loop that causes it to perpetuate itself. This can stymie any effort you make to fix the problem. However, if you understand that you are dealing with a feedback loop instead of a linear system, it can become easier to fix. Provided, of course, that you acknowledge the feedback loop and do things to reduce its power until you can fix the problem.



    Episode Breakdown







    Start tracking your time and tasks accurately.

    While your intuition about where your time is going may be right, you can’t really prove that things are better until they are measurable. The goal here is to fix your work/life balance, not to constantly be trying to test out different ways to do it. Measurement also has another interesting side effect in that it changes behavior. Everyone has a couple of recurring tasks that they despise – you’ll often find that you become more efficient at these tasks, simply because you realize how miserable they make you and for how long.

    Time spent on various tasks is proof of their actual priority. You can tell a lot about someone’s financial priorities by looking at their bank statement. You can do the same with their priorities in general by looking at where they spend their time. The other reason you want to do this is that you may be able to correlate how you feel on certain days w...

    • 59 min
    Web Hooks

    Web Hooks

    The term webhook is an extension of the term hook, altering the behavior of a system, first used by Jeff Lindsay in 2007. Webhooks are user defined callbacks that allow for the alteration of data or behavior of a website through a third party application. They are typically not built or maintained by the developers who are using them so they have to be able to interact with a variety of systems.

    Webhooks are used for a variety of functions. Most commonly they are used in continuous integrations systems to trigger builds and releases as well as in tracking systems to notify developers of bugs before they become a problem. A common website use is in payment processors so that they client does not have to worry about personally identifiable information or financial security, those are on the third party providing the webhook.

    When triggered the client will send an HTTP request to the webhook’s URL where the service will act on the information and call back into the client’s system with a return object. Events like submitting an order request or accepting a pull request into the main branch are typical triggers for webhooks. The URL, triggering events, and sometimes the return objects are configurable when setting up the webhook.

    At some point in your career you are likely to find yourself building or maintaining a webhook, if not you will definitely be consuming them. Understanding the basics as well as some of the best practices around them will help you to navigate what could otherwise be a confusing world of HTTP requests and callback logic. Use the information here to better understand how to build and work with webhooks. It is not comprehensive, but more of a starting place for you to better understand and show you where to look in order to dive deeper.



    Episode Breakdown







    User Interface For Setting-Up Webhook

    For each disparate event that your system emits there needs to be the ability to let it call a different webhook. It may be a different system that they want it to call into. Users need to be able to configure different environments (dev, test, uat, prod) and be able to configure them individually. Developers do not need access to production, nor should you want access as a developer.

    Your calls need to have an authentication mechanism such, as a key-pair, to make sure that you are who you say you are. These need to be different between environments. The user interface needs to automatically test the webhook to check that is actually working once it is set up.





    Testing Mechanism for Developers

    Developers need to be able to shape the data and send it through the process for each webhook available. Make sure to include the ability to test error conditions. That makes manual testing easier for the developer while setting up. The developer also needs to be able to see how their system responded and in what kind of time period it did so.

    Special characters and things like dates need to be rich input so that developers can see how the system will handle it based on what they send in via JSON. Constraints that are on the outgoing payload needs to also apply to the testing and incoming payload.





    Understand Return Object Shape

    Be specific about what is expected in the return especially with HTTP status codes so that consumers know what to expect when using the webhook. The return payload needs to be in the HTTP body, not in headers or other weird areas. Make sure this is highlighted in the testing interface if incorrect.

    Provide examples or sample return objects so that consumers can build for what they will receive before they begin consuming. Be lenient in the what you accept, but be specific about formatting of known types. Make sure that the return error codes are understandable and easy to find in the documentation. Allow developers to manually validate their return payload...

    • 53 min
    Enneagram Type 1: The Perfectionist

    Enneagram Type 1: The Perfectionist

    The Enneagram of Personality, or just the Enneagram, is a representation of personalities using a geometric figure, also called an enneagram (little e), to express nine interconnected personality types. While each type is unique it is related to other types through the circle connecting the type to each of it’s wings and the lines or arrows in the center connecting the type to the ones it imitates in times of stress or growth. The Enneagram is used in business management training to better understand interpersonal dynamics in the workplace.

    Types eight, nine, and one constitute the gut triad. This triad is primarily motivated by anger. Those in the gut triad tend to filter life at a “gut level” or by instinct. Because of that, they tend to be motivated by a desire to be independent and stay in control of their own life. Of the three, Ones internalize their anger and focus it on themselves by seeing their own faults.

    At their best, Ones are committed to a life of service and integrity. They are able to forgive themselves and others for being imperfect. They are principled, but patient while they wait on the world to get better.

    At their worst, Ones are fixated on small imperfections, whether those imperfections are their own or those of others. They become obsessed with managing minutea and asserting control over external circumstances.

    Ones bring an attention to detail and desire to make the world better that can really make things better. They apply their high standards to both themselves and others and can often inspire the people around them to greater things. However, because the world isn’t a perfect place and never will be, this tendency can make them resentful of any imperfections they notice, whether within themselves or within others. If you are a One, remember that no is perfect and no one HAS TO BE perfect. This includes you. The world is exactly how it has to be. Friends of Ones can help them by being reliable, showing them that they are useful, by being understanding that imperfections in the world bother them more than others, and understanding that they can’t really express it.



    Episode Breakdown



    Main Characteristics



    The Enneagram Type 1 is “The Perfectionist” or “The Reformer”

    Their devotion to improve the world is the reason the One is called the Perfectionist. They strive to overcome adversity, especially of the moral sort, so that the human spirit can work through them to improve the world. They are discerning, wise, realistic, and noble. They can be morally heroic. The Perfectionist’s downfall is being overly critical and perfectionistic. They can start having problems with resentment, impatience, and anger.

    Ones have a strong sense of purpose and a wish to be *useful* in the best sense of the word. They feel they have a mission in their lives and they aim to get it done. This sense of mission doesn’t stop the One from feeling like they need to justify their actions to themselves and others. This causes the One to spend an excessive amount of time thinking about the consequences of their actions.

    As a member of the Gut or Anger triad, Ones can be grounded and in touch with their instincts. However, they can easily persuade themselves that they are only proceeding on logic and objective truth (in truth, no one is doing that). They can end up searching for a rationale for what they feel they must do.

    While trying to remain true to their principles, Ones will try to avoid being affected by their instinctual drives. This can easily result in a personality type that has problems with repression, resistance, and aggression. They are often seen as having excellent self-control, but they don’t FEEL like they do. If they aren’t careful, they can end up feeling as if they have to keep a lid on their emotions to avoid hurting the people around the...

    • 1 hr 2 min

Customer Reviews

4.9 out of 5
95 Ratings

95 Ratings

Kadus90 ,

Long time listener, first time commenter

I’ve been listening to your shows for years and never took the action to properly thank you for the good that you’ve done for me and the community. When I first started listening I was lost in what I wanted to do with my life and binging through the earlier episodes started to give me confidence in my ability to improve and make my on again off again programming learning journey a consistent one. Last year I decided to actually put it to use and committed to myself that I would be a developer by the time my next birthday (the end of May) rolled around. After quitting my job and going through a bootcamp (Ironhack), I am happy to say that I achieved that goal back in January. Although you didn’t know it, this show kept driving me to improve with every listen. Thank you for helping me build more confidence in myself, learn important concepts

Sdjbaby ,

Good for anyone new in IT!

I’m a computer Information systems student graduating in May so I’ve been doing all of the things that I need to do so that I can get a good entry level job afterwards, so listening to a lot of the episodes with topics on personal development outside of education has been soooo helpful for me! Since I worked most of college and had to support myself I didn’t get a lot of time to work on personal projects or anything outside of school so I’m having to put the recruiters’ microscope on my personality and ability to learn and work with people very well and listening to this podcast has gave me so many good pointers, especially the LinkedIn and Social anxiety episodes!

westtk ,

Great newbie advice digest

I've been listening to Will & Beej for a few years now. The consistency and breadth of this show is awesome, and a perfect complement to more technical podcasts. Even though some episodes wander towards backend topics I never touch, there’s plenty of content to satisfy anyone. My only complaint is the length of the episodes; the intro & outro are pretty long and detract from the core content. Regardless, this podcast is on my subscription list and will probably stay that way as long as they keep going.

Top Podcasts In Technology

You Might Also Like