I do everything I can to see as many talks as I can as often as I can in the field of software development. Yup... That's an opening sentence with a whopping three "cans" in there. That's how important I think these talks are. The field of software development is difficult, frequently changing, it's relatively young, and I would argue that there are few if any types of schools or training programs you can go through that will really make you anywhere near being an expert. There is no graduate school that will make you a rock-star developer. If you know of one, please let me know!
The experts of software development are made through hard work and passion, frequently at night and on weekends. We code all day to make a living, but we don't always get to spend the time researching the very best way to do something, sacrificing that level of quality for a faster time-to-market. We see workarounds and hacks throughout production code because of this very problem. Some developers commit this code shamefully, others don't yet know enough to be ashamed. A select few have the depth of understanding and knowledge (both technical and domain) required to architect and code an application or service that is, for lack of a better term, "as good as it can get". I wish I was one of them, and it is my eternal "lofty goal" to become one.
What is a "lofty goal"? It is an ideal. A dream. It is an unrealistically high-standard to which we strive, knowing full well that we will almost certainly never complete the journey. The beauty of it is that you will likely find yourself on the path of continuous improvement as you reach for your goals. "Shoot for the moon. Even if you miss, you'll land among the stars." (Norman Vincent Peale)
Side-note: Yes, yes, yes... I can already here some of you cursing my name, pointing out how Peale's famous quote about shooting for the moon makes no sense when examined literally, and so on. Have fun cursing me, because I'm using the quote anyway.
Now that I've run off on a couple tangents, let me get back to discussing technical talks. There may be several motivations for giving a talk. Money, exposure, notoriety, forcing yourself to learn something better, etc. For me, the number one motivation is to level-up your audience. My goal is to have attendees leave my talk with at least a nugget or two of information that helps them improve as a developer. Wrapped up in that goal is a desire to make you, the developer, feel better about yourself, your career, and your future. Therefor, anything I do or say as a speaker that makes you feel worse is directly antithetical to my intent.
In consideration of the above, here are some things I avoid saying in my talks:
These are just a few examples I just saw happen in a few different talks recently. The egos of software developers ranges across the board: We have the over-confident know-it-alls, who probably do not actually know it all, down to the frightened developer who suffers from a massive case of imposter syndrome. As usual, the truth lies somewhere in the middle. Those who berate themselves about how little they know are likely not giving themselves credit for the things they know quite well. The ones who think of themselves as superstars, virtuosos, or technical saviors are quite likely turning a blind eye to the multitude of things they don't know.
If I've taken the time to come to your talk, it's because I want to level-up and improve my skills. I want to learn something new. It is my goal to learn about what I am not doing so well, so that I can do it a little better next time. I don't want to be told that I'm so bad that I should leave the field. My inner-voice says that to me plenty... I don't need yours added to the choir. Thanks, though.
I have made a metric shit-ton of mistakes and errors throughout my software career, and I'm quite sure I will continue to do so until I kick the proverbial bucket. I celebrate failure, and I try to fail as quickly as possible to move through bad ideas and come up with that good one that gets the job done, and does that job particularly well. I have broken builds. I have broken unit and integration tests. I have corrupted databases. I have created race conditions. I have unintentionally created infinite loops. I have attempted to implement design patterns, and not realized for months or even years that what I did was insanely flawed. I have checked in non-compiling code and incurred the wrath of a team full of more experienced developers (it was my first time using version control... ever).
I'm willing to bet most speakers have made some fairly epic mistakes as well, some more incredible and costly than others. What I believe best serves our audiences is to help them realize they are not the only ones making mistakes. They should be more aware that they are not at all alone, and we all struggle with things when they are new to us. Don't lambaste us for our mistakes or even our ignorance. We've come to your talk to try to make fewer mistakes and be ever less ignorant.
Let's go out there and write some code. Let's make that code the very best we possibly can, and as we learn about things we've done in a not-so-great way, let's refactor it to better patterns and practices. I am a huge believer in assuming positive intent: Every single line of code I write is done to the very best of my current skill level, using the best tools I have available. Assume that every single face in your audience does the same. They are there to improve... So let's help them do just that.
Go give a talk, and help another dev learn something you struggled through!
If you're a developer, and you have never been to a "Code Camp" before, you are missing out... Especially if you're a .NET developer, as there is a heavy .NET presence. These are absolutely awesome two day conferences that are free (as in beer) for anyone to attend, and all of the speakers are volunteering their time and efforts to help others in the developer community. As a resident of San Diego, I attend all 3 SoCal Code Camps each year, and I suggest you check them out. Code Camps exist all over the country (maybe in other countries too??), so if you're not from SoCal, never fear... Google about to find your closest Code Camp!
This past weekend was the most recent Code Camp, this one was up in LA on the USC Campus. It was a fantastic weekend where I got to reconnect with friends and colleagues old and new, and I got to see some sessions that were nothing short of inspiring. My only regret... And this is the same regret I have after every code camp... Is all of the great sessions I missed in order to attend some other session (or while giving my own)! I'm already looking forward to the next Code Camp. Tons of thanks to all the hard work the organizers put in!
I want to thank everyone who came out to my "Debugging Tips and Tricks" session. I was honored and humbled by the number of people who came to hear the talk, and I hope everyone got a tidbit or two they had not yet known about, because my tap dance routine in the middle was pretty horrible... And short (you're welcome).
If you're interested in reviewing the slides and grabbing the links from within, the link to them is posted up on my SpeakerRate page for this talk. You can just click the "slides" link to get to the presentation, but if you have a minute to rate the talk and provide any feedback, I'd love to hear what you have to say so that I can improve the talk for next time. Thank you again for coming!
I'll leave you with one last awesome error message from a bug I stumbled upon back in 2012, while tinkering around with iOS development. This is the error message... Which I'm pretty sure was not supposed to make it into production... That I received just as my Xcode IDE went crashtastic on me:
This is an exciting time! I'm completely ditching my old website, and starting from scratch with this new one. The most recent SoCal Code Camp was this past weekend, during which I had the privilege of giving my very first presentation as a developer. I'd done it a number of times before back in my days of being a Mac tech, but never in the realm of software development. While I hope to make it infinitely smoother in the future, I am hopeful that the attendees were able to get some good nuggets of useful and applicable information on debugging tips & tricks. The highlight of the talk was really a "gentle as possible" introduction to aspect oriented programming (AOP -- specifically using the free version of the PostSharp AOP framework), which is not exactly a gentle topic. It's something I had never even heard of until I'd been developing software for years!
I think that I will be expanding the AOP part of this talk into one focusing not so much on debugging, but on AOP itself, since it really can be so phenomenally useful and powerful! If you're the curious type, I do have the slides posted up on slideshare, but be warned... Most of the juicy good stuff was in the code demos, which I'm afraid are not really part of the slides... So if the slides look tempting at all, make sure to come to the next code camp!
Jon Bachelor: This geek goes all the way to 11.