For me, the first and best step to take in becoming a better developer is that daily realization of how much I don’t know. When I read blogs or talk to other people or read a chapter in a book, its just overwhelming how much information goes along with this career path. Perhaps that is wehy recently I’ve been really stirring the pot in my head and really thinking about how much longer I’m really going to write code as my primary job function. I’m always going to write code (everything I hit the W key on my keyboard an E comes out with it and its really starting to piss me off) because I love the problem solving that goes with being a developer. I love refactoring code. I wish “refactorer” was my official job title and primary job function. I think its fun as hell and resharper helps to make it fun. However, I really want to move towards more of a coaching role, where I can sit and code with other team members, do that for a few months and then move to a new team. I think I’d really enjoy doing something like that. Now the question becomes am I good enough of a teacher to do that? My big problem is I’m not really a people person when it comes to work. I can be rude and condescending at times, and I am making an active effort to curb that type of behavior when I sense it happening. I’m not going to be a successful fulltime coach until I can handle some of my attitude issues. I also can be arrogant and display egotistical behavior, but I’m fine with that. I feel it almost necessary to be able to voice your opinions, be confident in yourself and your arguments, and fight your battles well. That comes off to many people as elitist, and so be it. At the same time, accept defeat graciously and be humble. There’s always someone nearby that’s going to know more than you do about a given subject matter.
Honestly, I really am very busy lately, when I’m not procrastinating (see below). I have a manical almost 4 year old who is just totally messed up in the head and is a freak of nature. I honestly don’t understand how kids find the energy and complete random behaviors that they do. She’s crazy. She really is. She gets it from her mother. I spend a lot of time with her because we have a 3 month old at home now too and my stay at home wife needs all the breaks she can get. I take my daughter out on the weekends and we fish or swim or *cough*dropheroffatgrandparentswhileIgotothecasino*cough* or just walk around the mall and have lunch. I enjoy spending time with my daughter, and that is, I’m sure you would all agree, more important that anything that I could do to evolve myself as a developer. I have to make sure I’m evolving as a father first, then take care of the secondary things. Raising my children is my real career. Getting to write software for money is just a perk, because its my hobby anyways.
So back to the original topic at hand, here’s my list of things that I want to address over the near future to become a better developer:
Things I Should Do
Same as Jeremy, work on planning and estimation skills. I attended a 2 day Mike Cohn course, and it was awesome. He’s a great teacher. I want to spend more time with guys like him who have an incredible amount of real world successes and failures to draw on when coaching. I need to pick up everything he’s and a few others have written on agile planning and estimation.
I started my career in the database. I was a DBA for many years prior to really getting heavy into programming. Since Sql Server 2005 came out, I’ve really not done much database work and I’m missing it. I love design, modeling, tuning and other developer-based tasks. Its the actual admin crap that I really never liked. SqlSvr2005 has some really awesome features, and I was doing a lot with them back in 2005. I want to get back into databases again. Those of you who were reading this blog back in 2005 can probably recall that well over half of all my posts were database/T-SQL related.
I don’t know Ruby. Never even looked at it. Boo as well. I keep reading so many awesome things, but I just… can’t… squeeze…more time into my day. I need to learn both and what they can do for me.
AgileDevelopers.Org. I need to get something done with that. I started the Oklahoma Agile Developers group, which is headed by a committee comprised of .Net, Java and Ruby user group leaders and practitioners. My focus is a language agnostic workshop group. If anybody wants to help with the website and get something going with me on a worldwide scale through the website, or if you have other ideas, just let me know. I’m not sure what I want to do with the website yet, but the possibilities are awesome and no doubt some things can be done with it from a shear repository viewpoint that would certainly help me become a better developer if the information were available and easily accessible and organized. But, that’s what google is for.
Quit procrastinating. I’m normally not bad about this, but I’ve been so incredibly busy this year that I’ve been finding myself just stopping and doing nonsense stuff more often that I should. Fishing every weekend does not count as nonsense stuff. That’s what I do to maintain sanity. But when I pulled out the old super nintendo last week out of the attic to play Gauntlet Legends and Castlevania, well, I’m not getting many books read, posts finished (I have well over a dozen unfinished blog posts) or emails sent.
Things I Want to Do
Spec#. I’ve played with this in the past, and really liked what its does for DbC software development. I want (damn you W key!!) to get back to playing with it again and really get into it. Greg Young and I have occasional conversations about it and his enthusiam and knowledge about the language extension keeps my hyped up about it. Thanks Greg!
F#. Functional languages in general really. I’ve talked to several people who really dig F#, but on the same token they understand functional programming better than I do, so I have some work to do. With Spec# I understand it, grok it well, have written some apps utilizing it and knowe where I can go with it. F# not so much. I hear a lot of talk about possibilities with F#, but I just don’t have the knowledge to think about what it can do for me, and I need to fill that gap.
Get back to blogging more frequently. Lately I can’t even read all that I want to, much less find time to blog. When I was blogging more often, I was spending time researching issues, playing with other tools, learning new things about the CLR and just having fun investigation the CLR. If I could find time to blog more, I would be doing those things, which no doubt improves my abilities as a developer.
Not much else I really want to do. I’m really comfortable with what I have going on right now. I do need to get out of my C# hole though and get back to expanding my horizons and widening my visions of what is possible and easier to do with other languages and concepts. I spent most of last year working on concepts such as DDD and then BDD (both of which I am continuing to educate myself). This year I haven’t done anything to expand myself in this developer career of mine. Oddly enough, I’ve been comfortable with that this year. Maybe 13 years into it, my conscience decided its time to take a year off from cramming languages, concepts, methodologies etc into my head.
Things I Won’t Do
Stop my community involvment. If at all possible, as long as its not at an expense to my family, I will continue everything I do to help my community evolve to become better developers. I’ve done 9 speaking engagements this year to date, have 7 more scheduled, am planning a code camp (www.okcodecamp.com), and am on the steering committee or head of the developer or agile track for 3 other conferences this year. Its a lot of work, a shitton of emails but a lot of fun to see those things be successful. Oh yeah, I’m also the president the Oklahoma City Developers Group and founder/president of the Oklahoma Agile Developers group. I really enjoy helping the community, which has a lot to do with my thoughts on a slight career change to fulltime coaching/mentoring with some development, rather than full time developer with some coaching/mentoring. I feel my community involvement and relationships that are built help me be a better developer because of the knowledge and perspectives I gain via conversations.
Although at one time I wanted to get into them, WPF, WCF and WWF are not in my plans for the future. Not to say I won’t learn any or all of them eventually (I own several books on each subject, not opened a single one of them) but for now its hard enough just staying up with domain knowledge. I’m consulting to oil and gas industry and its a big change for me. I spent 4 years in aviation and felt extremely comfortable with my domain knowledge and ability to find answers. I’m in a completely new to me industry now and I spend my time learning about it, not new technologies that I obviously don’t need to solve my design issues. Maybe they are better solutions in a few cases, but the tradeoff against the learning curve involved just isn’t there.
Tagging these folks