Complete Developer Podcast show

Complete Developer Podcast

Summary: 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.

Join Now to Subscribe to this Podcast
  • Visit Website
  • RSS
  • Artist: BJ Burns and Will Gant
  • Copyright: Complete Developer Podcast. All Rights Reserved.

Podcasts:

 Increasing the Value of Your Time | File Type: audio/mpeg | Duration: 51:32

Others value of your time such as bosses, coworkers, friends, and family is determined by the value you place on your time. Find fulfillment in what you do by living purposefully and better contribute to the world around you. By increasing the value of the time you have you will be able to spend more time doing the things you value. Time is a commodity and you can have more value with less time spent.

 Knowing When to Automate | File Type: audio/mpeg | Duration: 50:18

Automation helps to get rid of repetitive task and allows you to do things even when you are not present. You are able to react to changing conditions when they occur and make sure systems stay up when the cost of failure is high. This could include non-critical system failures that could lead to cascading failures in critical systems. It also avoids interruptions of higher priority tasks when the workforce is limited.

 Seven Don’ts Your First Week | File Type: audio/mpeg | Duration: 40:42

The second half of starting a new development job talks about what not to do during your first week of a new job. You want to come in and make a good first impression. These are seven things that will hinder building a good first impression.

 Seven To Dos Your First Week | File Type: audio/mpeg | Duration: 40:46

Going in to your first week of a new job you need to have a plan. It makes you look more experienced and helps boost your confidence. Also you will build a good first impression. In addition establishing rapport early helps keep you from losing motivation.

 Improve Your Nonverbal Communication Skills | File Type: audio/mpeg | Duration: 50:43

“A “majority” of the meaning we attribute to words comes not from the words themselves, but from nonverbal factors such as gestures, facial expressions, tone, body language, etc.” ~ Edward G. Wertheim We use non-verbal cues to reinforce our communications. They can help us show our emotional state, level of interest in a topic, and regulate the flow of conversations. This episode will focus heavily on understanding the different types of non-verbal communication and what they can mean, discuss some of the patterns that can be seen, and end explaining how non-verbal cues can miscommunicate intentions or how to avoid sending the wrong message. Disclaimer: Nonverbal communication and cues differ vastly between cultures. This variance can be as subtle as the amount of space between people when communicating or so vast that hand gestures used by children in one culture would be very offensive in another. That said while we do have international listeners our knowledge is based on American culture so unless otherwise specified the nonverbal meanings we discuss will be for communication in America. Episode Breakdown * 07:21 What is non-verbal communication? “When we interact with others, we continuously give and receive wordless signals.” ~ HelpGuide.org Non-verbal communication or bodylanguage helps to reinforce or modify the messagee (what is said in words). It can show the emotional state of the speaker or listener and regulate the flow of communication. Bodylanguage contains messages to the other person such as if you care about what they are saying or if you are being truthful. It is also used in defining relationsips and providing feedback for the person speaking. * 11:22 The 5 Roles of non-verbal communication Edward G. Wertheim, Ph.D. listed in his chapter on “The Importance of Effective Communication” five roles that non-verbal communications play in our interactions with each other. Repetition shows the ability to understand and repeat the message. Contradiction show a difference in view to the message or speaker. Substitution is the use of non-verbal communications in place of verbal messages such as a head nod, eye roll, etc. Complementing adds to the verbal message. Finally accenting adds emphasis to a message such as pounding on a table to make a point. * 15:45 Types of non-verbal communication There are several types of non-verbal communication including we can exert some control over in conversations facial expressions, body posture, gestures, eye contact, touch, and personal space. Others such as paralanguage and physiological changes are less controllable. * Facial Expressions These include smiling, frowning, or even blinking. Facial expressions are mostly universal across culture but the intensities may vary. Children learn to read facial expressions at very early in development. * Body movements and posture These can include hand gestures, nodding, or shaking of the head. How you sit or stand shows your receptiveness to the message. An open posture is one of facing the person with hands apart and legs uncrossed. It communicates interest, openness, or readiness to listen. A closed posture with arms folded and legs crossed communicates boredom, disagreement, or discomfort * Gestures Specific movements to exchange information between people. They can be divided into four categories: emblems, illustrators, regulators, and adapters. Emblems are gestures that serve as words such as OK, come here, or stay. The hitchiking thumb is an emblem gesture. Of all the gestures these vary most by culture. Illustrators accompany words to illustrate or add meaning to a message.

 Behavioral Design Patterns | File Type: audio/mpeg | Duration: 49:35

Closing out the series introducing design patterns the guys discuss behavioral design patterns. These deal with communication between entities. They provide easy and flexible communication between objects.

 Writing Better How To Content | File Type: audio/mpeg | Duration: 52:03

From tutorials to ReadMe to product instructions producing How To content creates challenges not found in other content we write as developers. Choose your content carefully and have a clear and succinct title. Write a clear introduction and use a step by step approach. The media platform you use affects your content, tone, and approach to teaching. Finally editing is the most important part of writing and you are your worst editor.

 The Role of Recruiter with Lena Mills | File Type: audio/mpeg | Duration: 57:13

“Java is to JavaScript as Car is to Carpet” This week Will and BJ invited their friend and the only recruiter Will works with to join as a guest host as they discuss the role of recruiters in finding the right position for developers. Lena Mills is a senior recruiter at a leading provider of technology professionals for initiatives ranging from web development and multiplatform systems integration to network security and technical support. Lena has been recruiting for more than two years and specializes in sourcing talent in the following areas: Applications/Web Development, Business Intelligence, Data/Database Management, ERP Integration/Customization, Programmer Analysis, Project Management/Business Analysis, System Integration. “I think that building relationships is the number one thing and that’s the top tip I give to both junior developers and senior developers.” Episode Breakdown * 9:44 Why Talk To A Recruiter “You can optimize a system if you know the input variables, but if you believe the variables are different than what is actually coming into the system your optimization is always going to be wrong” Many developers have deep misunderstanding of how recruiters work in the development ecosystem. Unrealistic expectations and ignorance of how the economics actually works leads to surprise and suboptimal results. Lena offered to take some time to help developers better utilize the resources that recruiters provide. * 11:45 The Recruiting Process Recruiting is broken down into recruiters that work with developers and account managers that work with companies in the area that are seeking developers. While her office does have a database of developers and she is active on LinkedIn and other job boards Lena gets most of her business through referrals and networking events. Account managers will see jobs posted online or through networking with companies and human resources departments. The recruiter knows the developers available and looking for a postition. Then they find the developers that match the job posting. * 14:20 Working With Multiple Recruiters “I never tell people not to work with multiple recruiters or agencies, I just say it’s always a good idea to keep track of everything” Keep a spreadsheet of who you are working with and where they have submitted your resume. Will prefers to only work with Lena so he doesn’t have to worry about being submitted multiple times to the same position. Junior developers like BJ looking to get into the market benefit from working with multiple agencies or recruiters. It is important to find recruiters that you feel comfortable with and can trust. They should be willing to help you by giving you advice and helping edit your resume. “Commodity products have advertisers and luxury products have agents.” At some point you want to make the jump from commodity to luxury product. Otherwise you get limitted on the roles you can find and keeping up with the spreadsheet becomes tedious. As a junior developer saturate the market as much as possible to help find the person you trust and want to work with exclusively. Will made the transition around the 4-5 year mark. Part of this is the maturity in knowing how the system works and another part is finding the person you know and can trust to place you in the best position. *

 Structural Design Patterns | File Type: audio/mpeg | Duration: 58:28

Continuing the series on design patterns with structural design patterns. Design patterns are a way of thinking about abstract concepts in Object-Oriented Programming. Structural design patterns deal with the relationships between entities. They make it easier for objects to work together.

 Improving Your Listening Skills | File Type: audio/mpeg | Duration: 57:18

Much of this outline comes from SkillsYouNeed.com. We highly recommend looking at the site. Will and BJ start by talking about why you need to improve you listening skills by explaining the differences in hearing and listening and the benefits of being an active listener. They then provide tips for improving listening skills by removing distractions and putting your focus on the person speaking. Next they define what it takes to become an active listener and signs of active listening. Finally the guys discuss some of the hindrances to becoming an active listener and how to avoid them

 Why Your DBA Hates Your ORM | File Type: audio/mpeg | Duration: 59:26

An ORM integrates a unit of work pattern that allows you to modify multiple objects then push the changes back to the database as a unit. This returns a chunk of data known as an aggregate root. The ORM pulls the data from the database and allows the developer to edit the data as an object in the code then returns it to the database. The ORM figures out what SQL to generate to send the data back to the database. This is called a unit of work pattern. It is effectively a transaction as it either all goes to the database or none.

 Creational Design Patterns | File Type: audio/mpeg | Duration: 50:56

A constructor is a function that is used to build an object and it is part of that objects definition. Calling a constructor causes cohesion between the code and the object being instantiated. Making changes in the objects can cause problems when calling the constructor. Strongly typed languages tend to catch these errors at compile time however dynamic languages such as JavaScript may not catch the errors until runtime or later. The creational design patterns are ways to break this cohesion

 The Value in Not Working | File Type: audio/mpeg | Duration: 57:12

You wake up at 5:30 in the morning. Get showered, brush teeth and hair, dress, walk the dogs, get the kids ready and fed breakfast and out the door by 7. After dropping the kids off at school you remove the Frozen Soundtrack and put on a coding podcast (like CDP) for your drive to work. You get to the office, find the coffee and start pouring the juice of life down your throat before the morning stand up. A few meetings, some emails, and a brief stint looking at the code and you’re off to lunch with coworkers discussing the afternoon’s agenda. Upon returning to the office you code the rest of the afternoon then it’s time to go. On the way to pick the kids up from school you listen to another podcast, this one about starting your own business because once the kids are in the car it’s Frozen, Frozen, and more Frozen. You get home, get the kids a snack and set them to doing homework while you set up shop in your office for a long night of coding on your side project. Wash, Rinse, Repeat. Another day! This week Will and BJ discuss why we as developers need to take time away from working and coding. The episode starts with the guys defining down time and how it applies to developers. Next they give reasons for needing time away from coding with emphasis on avoiding burn-out. Will opens up to the audience about his experiences with burn-out and how he deals with it and attempts to avoid it when possible. Finally they talk about how to manage taking regular down time and end the episode with a discussion of their favorite hobbies and how they get away from the computer screen. Episode Breakdown * 09:50 What exactly is Down Time? The Dictionary Definition “inactive time (as between periods of work)” ~ Merriam-Webster Dictionary In addition Urban Dictionary defines down time as “a period of rest or sleep taken during the day.” Not Time For Other Projects Down time can mean tile spent not coding at work for various reasons. For this episode though the guys use down time to refer to total down time, not at work and not working at home. Time away from the computer screen. “Have something worth spending time/boasting outside of work. This helps you to [have something to] draw inspiration from, when things don’t go well at work.” ~ Ramanan Jagannathan (Quora answer) Taking Time For Yourself Taking time for yourself to refresh and relax will help mental wellbeing and avoid problems related to overworking. This can be a difficult process. A few weeks back Will talked about feeling guilty for spending time playing video games. * 12:25 Why Developers Need Down Time. Developers need time away from the computer to recharge, gain perspective, and reduce the effects of working too much. Avoid Burn-Out Burn-out is defined by Merriam-Webster as “physical or mental collapse caused by overwork or stress.” It is the cumulative effects of working too hard for too long without a break or time away from work. The physical effects of burn-out include feeling tired and sick most of the time. This may even manifest in extra muscle aches and pains, frequent headaches, and back pain. Will states that one of the signs he knows he’s working too much is when old injuries start hurting again. Emotionally burn-out appears very similar to depression. Overworked developers may experience a sense of failure and self doubt or feel helpless, trapped, and defeated. A feeling of being alone in the world or detachment also accompanies burn-out. The motivation that drove them to the point of overwork or overcommittment is gone. Burnt-out developers may present with a negative or cynical outlook on life, work, or other coders. They tend to have less satisfaction or sense of accomplishment even when finishing pro...

 How Cognitive Biases Affect Developers | File Type: audio/mpeg | Duration: 58:08

“Critical thinking is an essential skill in our age of constant information (and misinformation), but our own subconscious biases don’t help matters much when it comes to sorting out truth from viral nonsense.” ~ Alan Henry Alan Henry created a great infographic of 10 Cognitive Biases in Decision Making on LifeHacker. BJ liked the information so much he built an episode to explain cognitive biases and ways to avoid them to fellow developers. Each day we make over 30,000 decisions most of which we do not put much effort into thinking about. There are many influences on us that affect our decision-making. The following are just a few of the more pervasive patterns that affect developers when making important decisions about code or life. Episode Breakdown * 15:52 Bandwagon Effect and Confirmation Bias “You see it on the internet all the time, the echo effect. Take a look at Tumblr for example.” The bandwagon effect comes from the saying, “hopping on the bandwagon” which means to do something because the people around you are doing it. Popularity of an item can make it seem more desirable look for example to reviews on shopping websites and how they influence the popularity of an item Along with jumping on the bandwagon we have a tendency to prioritize information that confirms our own beliefs. We will seek information that supports our own preconceptions. Both of these are popularity based, the popular opinion influences our decisions. “This is what internet marketing, or really any marketing is based on.” To combat these biases avoid relying on a few popular opinions without first considering a broad range and weighing the information available. Sometimes opinions are the only available information such as product reviews on Amazon. In these cases look at both positive and negative reviews of multiple similar products. * 21:40 Reactance “It’s the opposite of the herd mentality.” This is the rebel without a cause mindset of wanting to do the opposite of what is is advised. Many times it falsely claimed to maintain freedom of choice but in reality the advice conflicts with our own preconceptions. The trick to avoiding reactance is to leave ego at the door. Ask yourself, “Why am I rejecting the advice?” If you can state a solid reason then you are not a rebel without a cause. These first two points tie in together as examples of not thinking for yourself. Where the first is following the crowd or your own preconceptions the latter is rejecting the crowd for no other reason than to not follow the crowd. * 26:05 Availability Heuristic In decision making often we will base our choices on the results of similar decisions we’ve made in the past. Ones that easily come to mind or on quickly retrievable information. There is a tendency to give higher value to easily remembered information. “This can very much skew your decision on anything.” Combating this involves substituting intuition with data or not relying solely or heavily on intuition. When making a decision assess all the available data for that instance. * 30:37 Dunning-Kruger Effect “One of the painful things about our time is that those who feel certainty are stupid, and those with any imagination and understanding are filled with doubt and indecision.” ~ Bertrand Russell The Dunning-Kruger Effect states that unskilled individuals tend to overestimate their abilities. The corollary to which is that skilled individuals underestimate their abilities. In both cases it is a failure to adequately assess competence. Junior developers can know just enough to get in trouble and have a sense they know much more whereas more senior developers may suffer from impostor syndrome.

 An Introduction to Design Patterns | File Type: audio/mpeg | Duration: 55:32

In this episode Will and BJ begin a four part series on design patterns. This week they introduce design patterns giving a brief history and overview of the different sets of patterns. In the subsequent episodes they will be discussing each of the three sets of patterns. “In software engineering, a design pattern is a general repeatable solution to a commonly occurring problem in software design.” ~ sourcemaking.com Design patterns are a way of thinking about abstract concepts in Object-Oriented Programming. In the original book 23 patterns were listed divided into three sets of patterns: Creational, Structural, and Behavioral. Will and BJ discuss both the benefits and some of the critiques of using design patterns when designing and developing code. Episode Breakdown * 15:13 Gang of Four “These are fundamental elements of how you design software” The Gang of Four refers to the four authors (Gamma, Helm, Johnson, and Vlissides) that wrote the original book: Design Patterns – Elements of Reusable Object-Oriented Software. For the book they took ideas from the architectural community. The basis for design patterns is to program to an interface not an implementation favoring object composition over inheritance. Gall’s Law states that all complex working systems evolved from simpler working systems. Design patterns are Gall’s Law put into practice within the development world. They are not “theological” constructs but developed out of simpler designs that worked and are repeatable. * 17:58 Usage of Design Patterns Design patterns create a common language platform for developers no matter their preferred language to communicate and develop best practices. BJ and Will as .NET developers are able to discuss the same concepts with Ruby or Python developer friends. * 19:53 Benefits of Design Patterns Design patterns are tested and proven paradigms that speed up the process of development. They have stood the test of time and actually work in practice as opposed to working in academia. They are general solutions that standardize communication between developers no matter the language they use. * 22:52 Types of Design Patterns Creational “It’s a way of abstracting the creation to deal with it the same way you deal with everything else” Creational patterns have to do with the instantiation mechanisms. They are used to make creating objects easier. Instead of every consumer of a class having to build an object from scratch they can request it. Structural “You don’t want to play Operation with your design.” Structural patterns relate to the relationships between objects or entities. They make it easier for entities to work together. They allow for an intermediate between two objects communicating so that each individual object doesn’t have to know the details of the other. This allows for interchangable code. Behavioral Behavioral patterns deal with the communication between objects or entities. They make communication easier and more flexible. * 32:52 Critiques of Design Patterns There are many, many, many critiques of design patterns. This is by far not an exhaustive list, one doesn’t exist to our knowledge. These are some of the more prominent critiques. * Targets the Wrong Problem The need arises from using languages with insufficient abstractions and many patterns are not needed depending on the language. Using the wrong pattern to solve one problem because it is more apparent but less effective. * Lacks Formal Foundations There is a critique primarily from academia that this was an ad hoc study. These patterns are ones that were recognized in reusable code not scientifically formu...

Comments

Login or signup comment.