In this episode of the Dev Ed podcast, the panelists talk to recurring guest Aspen Payton, who is currently working as a Lead Analyst Programmer at Mayo Clinic, has been in the software industry for about 20 years, and has over 32 granted patents to her name. Joe starts the discussion by giving a background on why he chose to talk about the essential developer skills. He divides the topic into different categories of skills and poses the first question to the panel – what fundamental technical skills should every developer have.
Brooke shares her boot camp experience and stresses the importance of learning basic command-line operations. Sam mentions debugging with console.log in any language in any environment and explains how it can be a savior while troubleshooting all kinds of situations. Luis says that it is important to know how to efficiently use the editor, understand related tools and know how to type faster. Joe agrees and shares a funny anecdote from his initial days as a fast typist. Aspen mentions coding efficiently, reducing duplication and writing reusable code as some of the most essential skills.
The panelists then discuss the pros and cons of AHA (Avoid Hasty Abstractions), the gist of which is to prefer abstraction over duplication and, to remove duplication when it is seen happening more than once. Brooke talks about learning how to solve problems and knowing what resources to use. Luis suggests that while working on different frameworks, it is important to learn the language associated with those frameworks and gives examples to further elaborate his point.
The topic then shifts to languages and if there are any specific languages that developers need to learn. Aspen answers in the negative, saying that logic is the most crucial aspect of programming. Sam agrees, and talks about learning the basics and experimenting with various languages based on developers' requirements and comfort levels. Brooke advises listeners to go for the languages they are passionate about and mentions that they need to focus on learning the right way of thinking more than anything else.
They discuss programming paradigms essential to be a good developer, which are mainly a mix of functional and object-oriented programming concepts. Talking about good software engineering practices, they list problem-solving, debugging, testing, reading documentation and understanding source code written by other developers, effective pair programming, code reviews, software patterns in the later stages of development, and version control systems such as git, as important strengths to have.
The next category spoken about is educational skills. Some of the necessary ones being effective communication, ability to teach others well and convey ideas constructively, ability to pick up new languages and having a smooth transition from the old ones, not giving up and working on problems relentlessly (banging head on the wall!), tenacity, diligence and also, asking for help.
They then list essential personal skills including the ability to work in a team while listening to others' ideas, giving them feedback and taking in criticism as well, time management, people skills, good writing, managing personal time and setting boundaries, humility, and empathy.
They wrap up the episode by discussing organizational skills – organizing code, managing time across the team, being organized while learning something new, and task organization and move on to picks.
Joined by special guest: Aspen Payton