From the start of my career as a programmer, it took me only a few years to understand that my effectiveness depends on much more than merely by ability to write solid code. Unfortunately, I did not grow up with an intuitive understanding of how to organize my work nor how to navigate the complexities of other people. Not only did I have to learn those things, but I had to learn them from the point of view of the stereotypical ultra-rational programmer. I would like to share what I've learned with you.
We will begin with a summary of how to do excellent programming work, in case you don't already feel like you do that. After that, I will introduce a few simple techniques to help you deal with the problems that excellent programming work (alone) doesn't solve. Some of you will discover some new techniques missing from your toolbox; some of you will choose to refocus your energy away from programming onto another aspect of your professional development. Even if you don't discover anything new in this talk, I hope that you will walk away with renewed confidence that you are (already) on a path towards becoming an effective, well-rounded, content professional. If even one of you moves off the path towards burnout and depression, then that would make me very happy.
Working with legacy code remains difficult. We feel afraid to change it, but sometimes we have no choice. When faced with legacy code, some programmers have no idea where to start and others have 100 ideas and these options paralyze them. J. B. Rainsberger gives you a code base where you can experiment safely and suggests some specific testing and design techniques that will help you get started changing code and build confidence every day. You will learn and practise several specific, safe techniques that can help you improve the legacy code that you encounter in your projects. In addition, we will discuss some non-code aspects of surviving legacy code, related to managing your workload and navigating interpersonal relationships in a context where emotions tend to be abnormally intense and the cost of failure seems unusually high.The practice code base is available in over 30 different programming languages. You will be able to practise at almost any level from Beginner to Advanced, although we assume that you have had at least one job where you have worked on a project with other people, even if that project did not involve significant work on legacy code.
J. B. Rainsberger (@jbrains) helps companies profit sooner from delivering software while he helps people work with more joy and less stress. He travels the world for part of the year sharing what he's learned about programming, managing his work, building great relationships with people, and designing his lifestyle. The rest of the year he helps clients remotely, writes, and coaches people one on one. You can find his blogs at https://blog.thecodewhisperer.com