October has been crazy busy. I was on the road for 19 days, but it was totally worth it. November is a bit slower (although I'll still be out and about a bit). I've got 2 speaking engagements coming up in the Phoenix area.
Wednesday, November 16, 2016
North West Valley .NET User Group
Glendale, AZ
Meetup Site
o Topic: Practical Reflection in .NET
I always have a great time when I'm in the Phoenix area. This time around, I'll be talking about how reflection is useful to everyday developers. Reflection is a very powerful tool, but if you aren't creating developer tools or frameworks, it seems to be of limited use. But there are a few elements that we can use to make our code easier to extend. We'll look at dynamically loading business rules in a system and see that it takes very little actual code. Cool stuff.
Thursday, November 17, 2016
South East Valley .NET User Group
Chandler, AZ
Meetup Site
o Topic: Abstract Art: Getting Abstraction "Just Right"
Abstraction is another topic that has been very important in my world. When I talk about interfaces and dependency injection (especially), I show how abstraction can make our world a better place. But if we take things too far, we end up with code that is hard to debug and maintain. We'll work on finding the right balance of abstraction in our code, so that we can get things "just right".
A Look Back
October was really busy, really fun, and really exhausting. But I'm glad that I did it. The month started out with a trip to the Silicon Valley Code Camp. I talked about this previously.
The following week, I did 3 talks at the Desert Code Camp in Chandler AZ. I've been to this event 8 times, so I was really glad to see it come back this year. Here's a picture of me talking about unit testing:
In addition, I got to make a stop at Organ Stop Pizza. They have an amazing organ that you have to see to believe:
A couple weeks later, I headed to St Charles MO for Dev Up. This was my first time at this event, and I had heard really great things about it. My presentations on design patterns and dependency injection were a lot of fun. Sorry, no photos of me speaking, but I do have a photo of me with some of my speaker friends at the attendee party:
Guess which one is me.
From there I headed to Des Moines IA for Prairie.Code(). This was a great event. If I hadn't known, I never would have guessed that this was a first-time event. Not really hard to believe since it was put on by the same folks who do the really good Nebraska.Code() event.
Thanks to Heather Downing (@quorralyne) for the great picture of me in my over-caffeinated shirt during my Clean Code talk.
I also had a couple days to spend in Des Moines. This was great for me since it was my first time in Iowa. I got to the world's largest truck stop, the zoo, the art museum, and the sculpture garden.
Upcoming Events
I'm not going to be standing still for very long. Next week, I head to the Microsoft MVP Summit in Redmond WA. This is a chance for me to spend time with a lot of my friends from all over the world. I wish I could see them more often.
In December, I'll be speaking at Visual Studio Live! in Orlando. I've got 3 talks scheduled, including Lambda Expressions, Unit Testing, and Task & Await. These are all things I love to talk about, and I'm really looking forward to being a part of this event again.
In January, I'll be heading back to NDC London. I'm really excited about getting another opportunity to speak here. I'll be giving 2 talks, one on delegates in C#, and one on making the world a better place by focusing on our users. It should be a great time.
The hard part about all of this traveling? It's looking at things like this:
My cats have been seeing me leave quite a bit. I just got back from an 11 day trip, and they really missed me (which must be really bad because cats normally don't show that).
I'm not sure how busy my schedule will be next year. I'm trying to balance the travel (which I love) with getting enough rest (which doesn't happen when I'm on the road). I'm still playing things by ear at the moment. I'm sure I'll get the hang of it soon. See you at an upcoming event!
Happy Coding!
Monday, October 31, 2016
Monday, October 24, 2016
Jeremy on Developer On Fire (Again)
I had the chance to talk to Dave Rael again for the Developer On Fire podcast. This time, I got to talk about "Becoming a Social Developer". Listen to it here: Episode 175.
"Becoming a Social Developer" is a bit of an accidental movement that I started last year based on my experiences. I had a great conversation with Dave, and we talked about 3 aspects of talking to other developers:
o How I got started talking to other developers.
o The response from attendees at developer events.
o Some great outcomes from people who have joined the movement.
I'm hoping to have lots more stories in the future. If you've had a great experience (or even a challenging one), I'd love to hear your stories so I can pass the along. We all get better together.
Listen Now
Developer On Fire Episode 175: Jeremy Clark - Not Who I Am But How I Behave
Previously...
Last year, I had a great chat with Dave Rael on Episode 012. It's interesting to look back at the tips I gave for delivering more value:
In addition, I keep talking about learning and getting better with practice. This includes a lot of articles, including Don't Be Afraid to Show What You Don't Know.
And it's hard to turn around without hearing me talk about getting involved in developer communities -- which involves talking to other developers.
A big thank you to Dave Rael for giving me the opportunity to share some of the things that I'm really excited about. If you want to hear more great stories and advice from a variety of developers, be sure to subscribe to Developer On Fire.
Happy Coding!
"Becoming a Social Developer" is a bit of an accidental movement that I started last year based on my experiences. I had a great conversation with Dave, and we talked about 3 aspects of talking to other developers:
o How I got started talking to other developers.
o The response from attendees at developer events.
o Some great outcomes from people who have joined the movement.
I'm hoping to have lots more stories in the future. If you've had a great experience (or even a challenging one), I'd love to hear your stories so I can pass the along. We all get better together.
Listen Now
Developer On Fire Episode 175: Jeremy Clark - Not Who I Am But How I Behave
Previously...
Last year, I had a great chat with Dave Rael on Episode 012. It's interesting to look back at the tips I gave for delivering more value:
1. Understand your users.As I look back, I see that I've really focused on these things over the last year. I gave a keynote at AIM hdc that was all about understanding your users (I'll also be giving this talk at NDC London in January).
2. Keep learning
3. Get involved in developer communities
In addition, I keep talking about learning and getting better with practice. This includes a lot of articles, including Don't Be Afraid to Show What You Don't Know.
And it's hard to turn around without hearing me talk about getting involved in developer communities -- which involves talking to other developers.
A big thank you to Dave Rael for giving me the opportunity to share some of the things that I'm really excited about. If you want to hear more great stories and advice from a variety of developers, be sure to subscribe to Developer On Fire.
Happy Coding!
Thursday, October 20, 2016
Preview of Visual Studio LIVE! Orlando (coming December 2016)
I had a great opportunity to give a preview of my talks for Visual Studio LIVE! coming up in Orlando December 5 - 9, 2016. Visual Studio LIVE! is part of the larger LIVE! 360 event which consists of 6 co-located conferences. That's 6 events for the price of 1!
If you missed the live webcast (or just want to watch it again), take a look at the recording. It's free, you just need to give your name and email address: VSLive Orlando Preview.
In this webcast, I show how the syntax magic works for lambda expressions in C# and also give a preview of the power of LINQ (Language Integrated Query) -- we can easily sort, filter, and aggregate our data once we understand this. Session information: Learn to Love Lambdas (and LINQ, Too!)
Then we take a look at asynchronous methods with Task and await. These are both very powerful tools in C#. We see the basics of using a continuation (when we use Task directly) and the magic of "await" (where Task is hidden from us). In the full session, we take a look at cancellation, exception handling, and a few other useful things. Session information: I'll Get Back to You: Task, Await, and Asynchronous Methods.
Finally, I show how unit testing has made me a faster developer. This is just a brief overview of how unit tests help me confirm functionality, check regression, pinpoint bugs, and document the code. In the full presentation, look forward to code examples, videos, and other good stuff. Session information: Unit Testing Makes Me Faster: Convincing Your Boss, Your Co-Workers, and Yourself.
I'm really looking forward to heading back to Orlando to speak at Visual Studio LIVE! I had a really great time last year. I met a lot of great folks, and I'll have more great conversations in December.
If you'd to go and save a bit of money, use the code "LSPK17" when registering: http://bit.ly/LSPK17_REG.
Hope to see you there!
Happy Coding!
If you missed the live webcast (or just want to watch it again), take a look at the recording. It's free, you just need to give your name and email address: VSLive Orlando Preview.
In this webcast, I show how the syntax magic works for lambda expressions in C# and also give a preview of the power of LINQ (Language Integrated Query) -- we can easily sort, filter, and aggregate our data once we understand this. Session information: Learn to Love Lambdas (and LINQ, Too!)
Then we take a look at asynchronous methods with Task and await. These are both very powerful tools in C#. We see the basics of using a continuation (when we use Task directly) and the magic of "await" (where Task is hidden from us). In the full session, we take a look at cancellation, exception handling, and a few other useful things. Session information: I'll Get Back to You: Task, Await, and Asynchronous Methods.
Finally, I show how unit testing has made me a faster developer. This is just a brief overview of how unit tests help me confirm functionality, check regression, pinpoint bugs, and document the code. In the full presentation, look forward to code examples, videos, and other good stuff. Session information: Unit Testing Makes Me Faster: Convincing Your Boss, Your Co-Workers, and Yourself.
I'm really looking forward to heading back to Orlando to speak at Visual Studio LIVE! I had a really great time last year. I met a lot of great folks, and I'll have more great conversations in December.
If you'd to go and save a bit of money, use the code "LSPK17" when registering: http://bit.ly/LSPK17_REG.
Hope to see you there!
Happy Coding!
Monday, October 17, 2016
2016 Microsoft MVP Award
I was honored to be awarded with a Microsoft MVP (Most Valuable Professional) for the 5th time. This is in recognition of my contributions to the developer community including my speaking, blogging, and videos.
This is a great opportunity for me because it opens up access to some of the inside information in the Microsoft world -- including the ability to give feedback and influence future releases of Visual Studio, C#, and other products.
In addition, I get to spend time with the other folks who have been awarded the Microsoft MVP. I've developed a ton of friends in this area. Next month is the annual summit where I get to spend time with lots of these folks (many of whom I haven't seen for a year).
I'm also excited to see some of my speaker friends get awarded for the first time this year including Spencer Schneidenbach (@schneidenbach) and Matthew Renze (@MatthewRenze) - and I know that there are others that I'll be happy to see at the summit.
If you'd like some more information, you can check out my Microsoft MVP profile page.
Happy Coding!
This is a great opportunity for me because it opens up access to some of the inside information in the Microsoft world -- including the ability to give feedback and influence future releases of Visual Studio, C#, and other products.
In addition, I get to spend time with the other folks who have been awarded the Microsoft MVP. I've developed a ton of friends in this area. Next month is the annual summit where I get to spend time with lots of these folks (many of whom I haven't seen for a year).
I'm also excited to see some of my speaker friends get awarded for the first time this year including Spencer Schneidenbach (@schneidenbach) and Matthew Renze (@MatthewRenze) - and I know that there are others that I'll be happy to see at the summit.
If you'd like some more information, you can check out my Microsoft MVP profile page.
Happy Coding!
Wednesday, October 5, 2016
October 2016 Speaking Engagements
October started out a bit busy, and things are going strong through the end of the month. Don't miss your chance to join me for a full-day workshop in Des Moines, IA. And feel free to contact me if you'd like me to bring a presentation or workshop to your company.
Saturday, October 8, 2016
Desert Code Camp
Chandler, AZ
Website
Topics:
o I'll Get Back to You: Task, Await, and Asynchronous Methods
o Clean Code: Homicidal Maniacs Read Code, Too!
o Unit Testing Makes Me Faster: Convincing Your Boss, Your Co-Workers, and Yourself
I'm really looking forward to heading back to the Desert Code Camp. It's been on hiatus for a couple years. I've had a great time there in the past, and it looks like it's coming back with a bang: lots of great sessions and speakers. It should be a lot of fun.
Thu-Sat, Oct 20-22, 2016
Dev Up
St. Charles, MO
Website
Topics:
o DI Why? Getting a Grip on Dependency Injection
o Learn the Lingo: Design Patterns
This will be my first time at Dev Up. I've heard some great things about this conference, and I'm looking forward to being a part of it this year. It will be my first time speaking in the St. Louis area, so I'm looking forward to meeting a lot of new people, too.
Wed-Fri, Oct 26-28, 2016
Prairie.Code()
Des Moines, IA
Website
Topics:
o Getting Better at C#: Interfaces and Dependency Injection - Full-Day Workshop
o Clean Code: Homicidal Maniacs Read Code, Too!
o Design Patterns: Not Just For Architects
This is a brand new conference in Des Moines. The good news is that it's being put on by the same organizers of the great Nebraska.Code(), so I'm looking forward to a great time. I'm happy to be part of the inaugural event, and it's sure to get better each year.
A Look Back
I've had a busy September, and it's been a great experience. I had a great time in Omaha at AIM hdc (you can read some more about the keynote I gave: "User Driven Development" at AIM hdc).
In addition, I went to the Silicon Valley for several events. First, I spoke at the SouthBay.NET user group in Mountain View:
There was a good crowd, and there was quite a bit of interaction. I got to talk about asynchronous programming, and that always stimulates conversation as we try to better understand the hurdles we need to get over.
Then I did a full-day workshop as part of the Code Stars Summit:
We had a small group, and that was really good for conversation. We were able to talk through problems and look at specific examples that related to situations that folks had faced in their own development.
Finally, I gave two presentations at the Silicon Valley Code Camp:
This is my 5th year at the Silicon Valley Code Camp. It's always a fun event with tons of people, tons of sessions (usually 20 choices during each time slot), and tons of interesting conversations. I was happy to be a part of it for another year.
I'm looking for more great events. It's a lot of time on the road, but it's been totally worth it.
Happy Coding!
Saturday, October 8, 2016
Desert Code Camp
Chandler, AZ
Website
Topics:
o I'll Get Back to You: Task, Await, and Asynchronous Methods
o Clean Code: Homicidal Maniacs Read Code, Too!
o Unit Testing Makes Me Faster: Convincing Your Boss, Your Co-Workers, and Yourself
I'm really looking forward to heading back to the Desert Code Camp. It's been on hiatus for a couple years. I've had a great time there in the past, and it looks like it's coming back with a bang: lots of great sessions and speakers. It should be a lot of fun.
Thu-Sat, Oct 20-22, 2016
Dev Up
St. Charles, MO
Website
Topics:
o DI Why? Getting a Grip on Dependency Injection
o Learn the Lingo: Design Patterns
This will be my first time at Dev Up. I've heard some great things about this conference, and I'm looking forward to being a part of it this year. It will be my first time speaking in the St. Louis area, so I'm looking forward to meeting a lot of new people, too.
Wed-Fri, Oct 26-28, 2016
Prairie.Code()
Des Moines, IA
Website
Topics:
o Getting Better at C#: Interfaces and Dependency Injection - Full-Day Workshop
o Clean Code: Homicidal Maniacs Read Code, Too!
o Design Patterns: Not Just For Architects
This is a brand new conference in Des Moines. The good news is that it's being put on by the same organizers of the great Nebraska.Code(), so I'm looking forward to a great time. I'm happy to be part of the inaugural event, and it's sure to get better each year.
A Look Back
I've had a busy September, and it's been a great experience. I had a great time in Omaha at AIM hdc (you can read some more about the keynote I gave: "User Driven Development" at AIM hdc).
Keynote at AIM hdc |
Jeremy at SouthBay.NET |
Then I did a full-day workshop as part of the Code Stars Summit:
Jeremy at Code Stars Summit |
Finally, I gave two presentations at the Silicon Valley Code Camp:
Jeremy talks Interfaces at Silicon Valley Code Camp |
Jeremy chatting before starting a presentation on Asynchronous Programming |
I'm looking for more great events. It's a lot of time on the road, but it's been totally worth it.
Happy Coding!
Tuesday, October 4, 2016
Asking Questions Shows Strength, Not Weakness
Our development culture has an element that I would like to eliminate: a fear of showing weakness. (There are other things I would like to eliminate as well, but this is the one I'm going to talk about today.)
I was extremely fortunate that the team I "grew up" with was not like this. But I have seen these teams personally, and I have talked to many developers who have been in these environments.
Why Now?
This is a topic that has been on my mind quite a bit. But it really came to the front of my mind this past week. I did several talks, including a user group, a workshop, and 2 code camp sessions. At least two times, when someone asked a question, they prefaced it with "This is probably a stupid question, but..."
The reason to preface a question like this is because we're really saying, "I'm not normally this weak, but..."
Before answering, I always say, "There are no stupid questions." We are trying to learn something new. New things don't always make sense the first time. We often need some clarification to really grasp the topic.
On top of that, we all have different histories, different experiences, different backgrounds. That means that we will have questions that are based on our own experiences. My questions will be different from your questions just because we have different experiences.
You're Not the Only One
Unfortunately, we have a fear of asking questions built in. When we look around, we see a lot of other people who are *not* asking questions. So they all must understand things, and I'm the only who who doesn't get it.
But in reality, we don't know what other people are thinking. We are comparing our insides (what I'm thinking and understanding / not understanding) with everyone else's outsides. We don't actually know if they understand it or not; we're making assumptions based on an invalid comparison. (BTW, This is exactly the same problem that leads to Impostor Syndrome. Scott Hanselman has a good article for devs: I'm a phony. Are you?)
When someone asks a question, I know that they aren't the only one with that question. How do I know? Because I do the exact same talks over and over again. And I will get the same questions over and over again. (As a side note, I'll add material to my talks to try to clarify and eliminate these questions where I can, but sometimes it's difficult.)
When someone asks me a question during a talk (or later in an email), it will often turn into a blog article. First because I don't always have time (or the knowledge) to go into detail during the talk. And second because I know that there are other people who have the same question.
Eliminating Fear
It's important that we eliminate this fear in our environment. Developers should be free to ask questions about things they don't know. It does not show weakness, it shows strength.
I have seen teams where the team members were afraid. Developers were afraid to ask questions because they didn't want to look weak. Developers were afraid to give answers because if they shared what they knew, they would be less vital to the team. These teams never succeeded. The team members were frustrated, discontent, and without hope. I really wish that I could have done something to change their environment, but it was built in to their entire political culture at the management level.
Breaking the Cycle
There are two things we can do to break this cycle.
1. Ask questions when you need help.
I would suggest doing some due diligence first. I spend some time researching the topic to see what I can find in documentation or forums. But I'll eventually get to the point where I can't get the answer on my own. At that point, I ask a question.
Some teams have a rule: If you spend more than 15 minutes trying to figure something out, you *must* ask for help. (There's usually a corollary that you must spend 15 minutes trying to figure something out for yourself *before* you ask for help. This is to encourage people to be an active part of learning rather than simply letting someone else do the work for them.)
2. Answer questions, and be supportive when you do.
When someone comes to you with a question, answer it. If you don't know the answer, help them find it or refer them to someone who might know. During this process, be supportive. Never act like the question is a stupid question. Don't take the opportunity to show off how smart you are. Make sure you answer the question in such a way that the person would be comfortable asking again in the future.
You Don't Know Everything
Here's a reminder: You don't know everything. And here's another reminder: No one else does, either.
It's okay to ask for help. It's okay to ask when you don't understand something. It's okay to ask for other resources that you can look at. This doesn't show weakness; it shows strength.
I'd really like to see a change of culture in our industry. I would love it if no one was afraid to ask for help. I'm not quite sure what needs to be done to change that. I'm going to encourage people to ask for help when they need it (Don't Be Afraid to Show What You Don't Know) and to help people who do ask for help (Help Those Behind You).
If you're stuck in an environment that doesn't encourage this, you have two options: Change your job or change your job.
If you can change the culture where you work, that's awesome. And all of your other team members will benefit from that. But if you can't change the culture, you need to make sure that you take care of yourself. In those instances, it might be best to leave and find a more productive environment.
Above all else, move forward. When we ask questions, we have the opportunity to learn something new. We can't control the response. But we can find the people who are happy to help us. There are lots of them out there.
Happy Coding!
Asking Questions Shows Strength, Not WeaknessThere are some environments where people are afraid to ask questions from other members of their team. The reason for this fear is the response. Either the question is treated as a "stupid question", or the response is condescending ("I can't believe you don't know this"), or the person answering the question takes it as an opportunity to show off ("Let me demonstrate how much smarter I am than you").
I was extremely fortunate that the team I "grew up" with was not like this. But I have seen these teams personally, and I have talked to many developers who have been in these environments.
Why Now?
This is a topic that has been on my mind quite a bit. But it really came to the front of my mind this past week. I did several talks, including a user group, a workshop, and 2 code camp sessions. At least two times, when someone asked a question, they prefaced it with "This is probably a stupid question, but..."
The reason to preface a question like this is because we're really saying, "I'm not normally this weak, but..."
Before answering, I always say, "There are no stupid questions." We are trying to learn something new. New things don't always make sense the first time. We often need some clarification to really grasp the topic.
On top of that, we all have different histories, different experiences, different backgrounds. That means that we will have questions that are based on our own experiences. My questions will be different from your questions just because we have different experiences.
You're Not the Only One
Unfortunately, we have a fear of asking questions built in. When we look around, we see a lot of other people who are *not* asking questions. So they all must understand things, and I'm the only who who doesn't get it.
But in reality, we don't know what other people are thinking. We are comparing our insides (what I'm thinking and understanding / not understanding) with everyone else's outsides. We don't actually know if they understand it or not; we're making assumptions based on an invalid comparison. (BTW, This is exactly the same problem that leads to Impostor Syndrome. Scott Hanselman has a good article for devs: I'm a phony. Are you?)
When someone asks a question, I know that they aren't the only one with that question. How do I know? Because I do the exact same talks over and over again. And I will get the same questions over and over again. (As a side note, I'll add material to my talks to try to clarify and eliminate these questions where I can, but sometimes it's difficult.)
When someone asks me a question during a talk (or later in an email), it will often turn into a blog article. First because I don't always have time (or the knowledge) to go into detail during the talk. And second because I know that there are other people who have the same question.
Eliminating Fear
It's important that we eliminate this fear in our environment. Developers should be free to ask questions about things they don't know. It does not show weakness, it shows strength.
Without Questions, No Learning Takes PlaceOur biggest assets in a team environment are the other team members. If the team members are afraid to ask questions, then no knowledge gets shared. This leads to a stagnant team. And in that situation, no one wins.
I have seen teams where the team members were afraid. Developers were afraid to ask questions because they didn't want to look weak. Developers were afraid to give answers because if they shared what they knew, they would be less vital to the team. These teams never succeeded. The team members were frustrated, discontent, and without hope. I really wish that I could have done something to change their environment, but it was built in to their entire political culture at the management level.
Breaking the Cycle
There are two things we can do to break this cycle.
1. Ask questions when you need help.
I would suggest doing some due diligence first. I spend some time researching the topic to see what I can find in documentation or forums. But I'll eventually get to the point where I can't get the answer on my own. At that point, I ask a question.
Some teams have a rule: If you spend more than 15 minutes trying to figure something out, you *must* ask for help. (There's usually a corollary that you must spend 15 minutes trying to figure something out for yourself *before* you ask for help. This is to encourage people to be an active part of learning rather than simply letting someone else do the work for them.)
2. Answer questions, and be supportive when you do.
When someone comes to you with a question, answer it. If you don't know the answer, help them find it or refer them to someone who might know. During this process, be supportive. Never act like the question is a stupid question. Don't take the opportunity to show off how smart you are. Make sure you answer the question in such a way that the person would be comfortable asking again in the future.
You Don't Know Everything
Here's a reminder: You don't know everything. And here's another reminder: No one else does, either.
It's okay to ask for help. It's okay to ask when you don't understand something. It's okay to ask for other resources that you can look at. This doesn't show weakness; it shows strength.
When we ask a question...Change the Culture
We are saying that we are interested in learning something new.
We are saying that we are not content with what we already know.
We are saying that we want to move forward.
I'd really like to see a change of culture in our industry. I would love it if no one was afraid to ask for help. I'm not quite sure what needs to be done to change that. I'm going to encourage people to ask for help when they need it (Don't Be Afraid to Show What You Don't Know) and to help people who do ask for help (Help Those Behind You).
If you're stuck in an environment that doesn't encourage this, you have two options: Change your job or change your job.
If you can change the culture where you work, that's awesome. And all of your other team members will benefit from that. But if you can't change the culture, you need to make sure that you take care of yourself. In those instances, it might be best to leave and find a more productive environment.
Above all else, move forward. When we ask questions, we have the opportunity to learn something new. We can't control the response. But we can find the people who are happy to help us. There are lots of them out there.
Happy Coding!