Blog

I’ve been asked questions about family life and professional development by a couple of developers recently. I speak pretty regularly, am doing well in my career and just published a book so some people seem to think I know what I’m talking about. Maybe I do but I know that those things don’t prove it. But I’ll pretend its true because it makes me feel cool.

Because someone else might find it useful, I’ve decided to put it into a blog post. Along they way I’ll let you peer into my brain a bit (it’s a little squishy in there) and we’ll meander a bit into team practices but we’ll eventually find our way around a number of subjects related to managing a professional life and a family. And even though I’m a developer and much of this has to do with human psychology and relationships, don’t worry. I’ve taken both a psychology and a counseling class, so I’m practically a world-renowned expert on people and relationships. As another bit of supporting data, my wife read most of this and didn’t slap me so it’s at least a somewhat sane approach to the topic.

About Me

How this will work out with you greatly depends on your personality, so naturally I need to explain myself before I explain how I make all this work. If you are like me, what I say may directly apply to you.

First, I am introverted. This is probably not what most think of me. After all, I speak frequently at local user groups and lead a team at Match.com, both of which involve a lot of personal interaction and talking. I really like talking at user groups because my interest in education overrides my desire to sit back and keep quiet. I like leading a team as well and partly for the same reason. But the latter is harder for me because speaking is very occasional and team leadership is something I have to do every day at work.

To handle this bludgeoning of my own personality, I have to spend copious amounts of time cooped up in my study at home. I have a nice desk, a nice chair and a door that separates me from everyone. Without this time and place, there is no way I would be able to take on the role of an extrovert and keep my sanity. But I love to teach more than just about anything, and this requires me to live a double life.

Second, I’m an obsessed self-improver. I want to be better all of the time. I don’t want to be better than you, the guy next to you, Scott Hanselman, N.T. Wright, Garr Reynolds, Terry Brooks or Todd McFarlane. I also don’t have any interest in emulating them wholesale though there are qualities and/or skills in each that are worth emulating. I am trying to be better than myself, constantly and possibly to a fault. Since I’m not trying to emulate someone else, this naturally leads me to get better at things I find interesting. This is why I don’t get tired of it.

Third, I am interested in many things. Over the last ten years or so I have had an off and on obsessive relationship in studying/being better at Greek, biblical studies, ancient history, programming (which takes many forms and therefore distractions) and art (primarily drawing). The last ten years have definitely focused more on the programming aspect but all are still in there. As you might notice, some of these are completely unrelated to the others and that’s totally fine with me and my brain. I like variety. On the negative side, sometimes I like variety too much and it’s hard to stay focused on a single project and get it done. The book I recently published is a fine example of this. I should have finished it a good six months before I did. But that’s me. After living a mostly focused day at work, it’s terribly hard for me to focus on any particular project on nights and weekends. I’m much more willing to jump around to various things to keep it interesting.

Fourth, I have a family. Obviously having a family significantly affects how I spend my time. Their personalities also have a significant impact on things. My wife, like me, is introverted and naturally pretty quiet. We do a lot together but she doesn’t need to be around me all the time. She’s perfectly content watching TV, scrapbooking, doing lesson plans for the kids or reading a book without me. Though I occasionally get told that I need to lock myself in my study less, we generally maintain what I think is a pretty good balance of alone time versus together time. My children are the exact opposite. They talk constantly and never want to be alone. They are the opposite of the (apparently false) stereotype of unsocialized homeschool children. They are way too social for my introverted personality. But of course I manage this because I love them and have a parental responsibility to be there for my kids, sometimes even when I really need some alone time.

Enough about me.

Wanting to Be Better

Since you have made it this far, I’m going to assume that you want to be better at something. This is good because I can’t make you want to be better. Since it’s mostly geeks who read this blog, you probably want to get better at programming though this will apply universally across subjects.

I want to describe a type of person to you but I’ll give him a name. “Bob” will suffice. The name is fictional but the technology is what came up in actual discussion. The dialog below is a little more cheesy and condensed than in real life but this is pretty much how these conversations go. If you replace the name and technology, you might recall some of your own conversations.

Bob: Hey Eric, I want to talk to you for a bit if you don’t mind.
Eric: Sure Bob, what’s up?
Bob: I think you’re a really good programmer and I want to get better as well. I’ve been thinking about learning jQuery.
Eric: I think that’s an excellent idea.
Bob: Cool. Do you have any recommendations?
Eric: Well, you could do what I did. Buy a book on jQuery and start writing code with it. You might be able to find some presentations about it as well if you like learning that way. There will also be a lot of blog posts to look at as well. But you really should practice it by writing some stuff using jQuery.
Bob: Great. I’ll do that. Thanks!

[Three months later]

Eric: Hey Bob, how’s that jQuery going?
Bob: Oh, yeah, I tried a little but don’t really understand it yet. I’m going to get back into it.

[Six months later]

Eric: Hey Bob, how’s that jQuery going?
Bob: Yeah, I still need to learn that. I know it will help me in my job.
Eric: Yes it will. Let me know how it goes.

And of course he never learns. Now, if you are a programmer and you’ve used jQuery, you know that the basics can be learned in a few hours. The problem isn’t jQuery. The problem is Bob. I worked with Bob for several years and he never got better at his job. It’s not that he avoided jQuery because he got hard-core into CSS or plain JavaScript, or started learning C#. He just never got better. Bob liked the idea of being better at his job but was not willing to put in the time to actually be better at his job. This is a waste. Now that I’ve seen this a number of times, it’s something I look for. As a manager of a team who has quite a bit of say in hiring decisions, I have to do my best to make sure we don’t hire people like this because that’s not the kind of person we want on our team. It’s hard to see if someone has this problem if you don’t work with them but if you do, it’s easy to spot the trait.

So if that describes you, I am sorry. I would say “don’t be that guy” but I also know that most motivation must be intrinsic if it will be lasting. You can create an environment that encourages learning and self-improvement (it’s something we all work to create in my team at Match) and that helps but ultimately, it’s up to you. But, heck, I’ll say it anyway. Don’t be that guy.

There is a big difference between wanting to be a better programmer and being willing to put in the time to be that better person. And that’s completely up to you.

Managing Spouse

I can talk about two situations here, one because I live it and the other because others have and have explained it to me.

If you live with a spouse who is comfortable being alone sometimes, it should be easy to find spare time to work on self-improvement. This is my situation. I also extend my available learning time by going to bed later and sometimes getting up earlier than my wife (though sometimes I wonder if I should get more sleep). This gives me more alone time which I need for my introvert self to stay sane and to learn some things. If you aren’t willing to put in the time and would rather just play games or watch TV constantly, then this won’t help you. You have to make the time and use it wisely.

If you live with someone who really wants to be with you all of the time, you are going to have a more difficult task. I know several really good developers like that. They do manage to find time to learn new things even though its harder for them. Sometimes it is late nights or early mornings. Sometimes it is vacation time. But it’s a lot harder.

This is why I absolutely recommend in the strongest way that you work this out with your potential spouse before you get married. I remember talking to my then future wife before we got married that I would need time alone because of my personality and interests. At the time these interests had nothing to do with programming yet but I’m glad we had the conversation. If you marry, you will probably have a vow that says something about “till death do us part”. If you are going to say it, you should mean it. And if you are going to build a long-term relationship with someone, you should make sure your personalities jive. If they don’t, you have a struggle ahead. The struggle might be worth it in the end but you should keep that in mind before getting hitched. Have that conversation.

In many ways this conversation was a bit superfluous since we had been friends for a few years before getting engaged. She was well aware of what I was like before the time we got engaged, as I was aware of what she was like. The longer the lead time until marriage, the longer you have to make sure that person is someone you actually want to spend your life with. But marriage is an important decision and having the conversation was important, so we had it anyway.

So if you are already in the kind of relationship that doesn’t give you much space, talk about it with your spouse. Explain that you need it for your career or because of your personality so you can keep your sanity. Hopefully he/she will listen. And if he/she does, maybe schedule learning time so they know they won’t be losing you for too long. There is a give-and-take in marriage and they need to be prepared to give but you should remember that you need to do so as well.

Managing Kids

My kids are 10, 8 and 6 years old respectively. I haven’t ever had older kids, so I can’t tell you anything about that. So if you do, maybe you have something to share that you can put in the comments below.

So let’s say your wife is like mine and you can easily find time to develop yourself or if you’ve had that conversation and worked it out with the spouse. When you have kids, that’s a few more hours out of your typical day that you are not going to have. Before kids you could hang out with the spouse for a few hours after work and still have three or four hours out of the day to do whatever. When you have kids, the alone time with your spouse starts at the kids’ bedtime or later, depending on how quickly your kids go to sleep.

My kid’s bedtime is 8:00 to 8:30. Let’s say my wife and I want to watch an episode of Sherlock (great show). Realistically, we’re going to be starting closer to 9:00 because the kids have to go to the bathroom, don’t want to go to bed alone and want to talk about this or have something random that they just have to say. That means we’ll be finished watching our show around 10:30, leaving me just a little time before midnight to develop myself. But I usually take it and do what I can. If you have some nights that you and your spouse can spend away from each other, you have even more time. But regardless, it gets harder to find free time when you have kids. But like marriage, that’s a choice you have to make. Is it worth it? It was for me. But be wise and know thyself.

Managing Employer

My boss is unusual in that he encourages us to learn, buys us books and even sometimes sends us to conferences. As someone with direct reports, I try to be the same way. For the rest of this section, we’ll talk about most of the other bosses I’ve had who don’t do those things. When I hear someone talking about their boss, I generally hear something like this: “I sure wish my boss would send me to conferences, buy me books and support my learning. I sure would like to get better at programming x but my employer doesn’t care about that kind of stuff.”

You have three choices with an idiot boss. First, show him the error of his ways. In some cases it won’t be him/her but his/her idiot boss that says no. But either way, you can try to educate them. That probably will not work but it is worth a try.

Second, you can find another job. If you take this route, do whatever you can to make sure you aren’t just switching idiot bosses. Otherwise you might actually make things worse.

Third, you can decide that it isn’t your boss’ job to manage your professional development and do it yourself. This is the route I personally take. In times of idiot bosses, I’ve still developed myself because my own advancement is just not dependent on them. In times of smart bosses, it’s just all a lot easier both mentally and financially.

A few times I have heard bosses explain their lack of support by saying that the good developers will grow regardless of their support and the bad developers won’t grow either way. It reminds me of something either Obama or Clinton (I think it was the latter) said once. When asked about raising taxes on those with higher incomes, he responded by saying they’ll still try to make money and will keep paying taxes. In many ways that’s true but it’s still a jerk move. The problem is with this approach is that if they put just a little effort into supporting their developers, the good ones will do better, be happier and be less likely to quit. It’s not a smart policy. There should be a budget for books and training. Maybe even conferences. But ultimately it doesn’t really matter. I’ve been in several jobs that didn’t really support me in any training. But that doesn’t matter. It really doesn’t. I am not sure I can stress that enough.

Are you a professional? Take your career into your own hands. Try to get your manager on board but if you need to, you can always ignore them and just be awesome despite them or switch them out for another pretty easily. The market these days is great for developers.

The Prize Goes to the Hard-Working

Occasionally you will find a developer who punches the clock 9-to-5, does not learn outside of work yet manages to be completely awesome. I’m jealous of these people because I’m just not that smart. But these people are rare.

Most often the prize goes to the hard-working. There are a lot of programmers out there who don’t strive for excellence. Give it some work and you can surpass them. All you have to do is to put more effort into learning. I really wish I was a super-smart guy. I don’t even think I beat the average. But I do work harder at learning than most developers I have worked with, so I do get better faster than most. This often gets confused for intelligence which I suppose is kinda flattering but it’s unfortunately not true.

So Get To It

It’s just after New Years. Throw out your other useless resolutions that you won’t accomplish like losing a hundred pounds or climbing Mount Everest. Instead learn a new programming language. Get a Mac and start doing iOS programming. Learn Ruby on Rails. Write a compiler. Write a book and publish it through Leanpub. Pick something that will make you a better developer. And if you aren’t a developer, this all applies just as well. Discuss a workable schedule with your spouse, take your future into your own hands and get to work.

Mobile ASP.NET MVC 5 - Published!

A Plants vs Zombies Halloween

Using Web Fonts

Personal Technology Changes

older posts