I had the pleasure of chatting to Sean Sexton about all things code, life and a little in between. Sean maintains an excellent blog that is well worth visiting if you are into C# or WPF.
Bio
Software developer in the Twin Cities area, passionate about .NET technologies. Equally passionate about my own personal projects related to family history and preservation of family stories and photos.
Blog: 2,000 Things You Should Know About C# and 2,000 Things You Should Know About WPF
Twitter: @spsexton
Sean Sexton – Meet The Man
1. Who is Sean Sexton? Please tell me about your background, personal and professional.
My day job is working as a Software Engineer for a company in the Twin Cities. I primarily develop desktop applications using C#/WPF, but I also spend time on the server side, working with SQL Server and related technologies. (I’m a big fan of the Entity Framework). I’ve been developing software professionally since 1987, so I’ve written production code using a variety of languages, including: C, C++, Visual Basic, Pascal, FORTRAN and Ada. I actually started my career writing Ada code for the VAX/VMS platform, working on defense-related projects at Control Data Corporation. (Don’t ask me about DOD-STD-2167A—it’s something that I’m trying to forget).
2. I really enjoy your blog ‘2,000 Things You Should Know About C#’. The first post was about static void Main() (which is quite suitable because it is the main entry point in a C# program and that post was the first post in this series) . This was in 2010. Why 2000 things and not 1000 or 1500 things?
Thanks! When I decided to start a blog and post little bits of information on a daily basis, I figured that I’d have the stamina to do maybe 1,000 posts. Unfortunately, when I went looking for a domain name, 1000things.com was already taken. So I rounded up and grabbed 2000things.com.
3. I love the fact that the posts are never drawn out and long winded. They are easily digestible and succinct which is perfect for getting to grips with the concept you are explaining. Does that remain a challenge? (In terms of keeping the blog posts short)
My goal with the 2000things/C# blog (and the sibling 2000things/WPF blog) is to write about one small thing each day. Shorter posts are easier for me to write and, I hope, easier to read and to digest. I try to limit each post to no more than 150 words. My first drafts are often too verbose, so I end up editing them until I’m within the 150 word limit.
4. Do you have a set idea beforehand what you want to write about? (Do you plan days ahead of time)
When I start a new topic (e.g. exceptions), I typically spend some time researching the topic, taking notes, and preparing an outline. I then work from the outline when deciding on the next post within that topic. I do also often write posts a number of days ahead of time, scheduling them so that one is published each day. This way I can go on holiday and let my blog keeping working in my absence.
5. The past while you have been talking about Exceptions in C#, and I have to admit that I have learned quite a few things from your posts on this topic. I think that many devs (me included) know just enough to get by in certain areas, but there is so much more to learn and understand. Is this your motivation for the blog?
That is absolutely my motivation. Like everyone else, my primary goal in my day job is to get my work done. It’s often hard to make time for learning something new, especially if I already know enough to get by. I wanted to force myself to study a little bit about C# (or WPF) each day. And writing a short blog post each day, describing what I learned, seemed a good way to for me to self-motivate.
6. As a blogger, I am sure you have a few blogs and Websites on the Internet that you regularly read. Do you have a few favorites?
I have a long list of RSS feeds that I try to stay current with. It’s a bit of a losing battle, though, given the amount of content out there. So I end up just skimming and only diving in if I see something particularly interesting, or relevant to technologies that I’m currently using. Here’s a smattering of some of my favorites:
- BCL Team Blog
- Building Windows 8
- Coding Horror
- Mike Taulty’s Blog
- Patrick Smacchia
- Paul Thurrott’s SuperSite for Windows
- Rocky Lhotka
- Scott Hanselman
- Seth Godin
- UIE Brain Sparks
- UX Magazine
7. How do you keep up to date with what is going on in the world of IT? I know you mentioned Podcasts.
Yes, I get much more information from podcasts than I do from reading blogs. I spend about an hour and a half in the car each day, commuting. So I’m a captive audience and it’s a perfect time for listening to podcasts that talk about software development. Favorites include:
8. What ignited your passion for programming?
I took a summer school class on programming in BASIC sometime around 1974. (I was 10). I plunked away on a Teletype terminal hooked to a mainframe and wrote some dumb little program. I got hooked immediately and I’ve been writing code ever since.
9. Do you have a pet hate or a secret addiction? (My pet hate is Google Talk stealing the focus from anything you are currently busy with. I hated it so much, I convinced the few contacts on it to start using Skype instead and I then removed it from my laptop. My not so secret addiction is collecting Google Doodles.)
Since you mentioned interruptions, I have to say that my pet hate is getting interrupted by anything or anyone when I’m in “the zone” and cranking out code. My not-so-secret addiction is in playing Xbox whenever I’m too tired to do anything more productive.
10. What development tools have you used?
I’ve used Visual Studio since the beginning (1997). And, of course, .NET and Windows Forms changed everything. Today, I can’t imagine working without Visual Studio and .NET. Looking back a bit further, I also did a lot of development using Visual C++ and Visual Basic. Before 1993 I developed code to run on VAX/VMS and my development tools were a command line and a text editor.
11. What languages have you programmed in?
I’ve written production code in C#, C++, TCL, T-SQL, Visual Basic, C, Pascal, FORTRAN and Ada. If I get to count scripting languages, I’d add DCL (DEC) and DOS batch file languages. I’ve also written a fair amount of HTML over the years. I feel a bit guilty in admitting that I have not yet dabbled in CSS, Ruby, Python, F#, Java, or JavaScript. I have no shame, on the other hand, in admitting that I’ve stayed away from Objective C. :O)
12. I know many company policies dictate this, but if you could choose, which source control would you use?
I don’t have a strong preference for a particular source code control tool. The most important thing is for a development team (or a single developer) to use some sort of change management tool. It’s also nice if the tool makes it easy to branch, merge and easily show diffs between versions.
13. Do you have any tips on how to stay productive and current as a programmer (other than reading your blog of course :-))?
I think that being productive throughout the course of the day is the most important work habit for a developer. For me, the easiest way to stay productive is to focus on one single thing at a time, avoiding interruptions. When I’m working on a project, I like to stay focused and work without interruption for two hours before I come up for air. For me, this means turning off my phone, shutting down Outlook and ignoring Twitter/Facebook/etc. Doing long sprints like this lets me really focus on what I’m doing and I do better work when I focus. Popping up every 10 minutes to respond to some interruption absolutely kills productivity.
Staying current in our profession is also critical, of course. There are numerous ways to learn new skills and technologies: blogs, podcasts, magazine articles, journals, conferences, code camps, courses, etc. The trick is to find one that fits your style of learning and then to set aside time to spend in learning. Even going to just one conference or code camp each year can be hugely beneficial in exposing you to the latest technologies.
14. What does your desk setup look like? What gadgets do you use the most in your daily life?
I’ve got a pretty standard setup at work—a reasonably-powered PC, a couple large 24” monitors, and a comfortable keyboard. I have almost the identical setup at home as well, since I work from home fairly often. I also have a new ThinkPad X1 Carbon Touch that I absolutely love. I’m pretty picky about keyboards and, for me, no other laptop comes close to the keyboards on the ThinkPads.
The only two gadgets that are always with me are my phone (a Nokia Lumia 900 running Windows Phone 7) and a 160GB iPod classic. I don’t run a ton of apps on the phone, so I use it mainly as an actual phone, for occasional web browsing, and as a platform for listening to podcasts.
15. What do you consider your can’t-live-without hardware gadget and/or software tool?
If I had to pick one gadget (and let’s say that I have to pick one), it would have to be my smart phone. I can’t remember what life was like before we were able to carry the Internet in our pocket. From a software developer’s perspective, the one most useful tool by far is the Internet. I end up googling/binging to find the answer to some technical question every day and I can’t imagine doing my job without the internet.
16. With such a comprehensive blog regarding C#, is there anything (feature or functionality) you wish C# included that it currently doesn’t cater for?
No, I’m easy to please. It’s rare that I find something that want C# to do that it doesn’t already do. And even if I did, Jon Skeet would explain to me why I didn’t really need it.
17. For a programmer learning C#, what would your advice be?
The best way to learn any language (or framework) is to just start building some non-trivial chunk of code in the new language. I used Windows Forms for years and found WPF to be strange and a little incomprehensible when it came out. So for a long time, when I had some little app that needed writing, I’d just fall back to using Windows Forms because it was what I knew. But I finally made myself write something in WPF one day and it quickly began to make sense. Using a language or framework every day, to build real applications, is the only way to become proficient.
18. Do you think that it is worth jumping on the App Store (iOS, Windows Store, Android PlayStore) bandwagon?
I think that we’re past the point when you could whip up a simple app and throw it up on one of the app stores in order to make some quick money. With the huge number of apps out there (850,000 for Android, 375,000 for iOS and 100,000 for the Windows Store), I think that the “gold rush” is over. On the other hand, if you know of an unmet need and have an idea for a solution that you are passionate about, it’s absolutely worth pursuing the idea. If the idea is good enough and you build a quality app, you can probably find users for it who will be as passionate as you are.
19. If you were a Jedi, who would be your Yoda?
I’ve been fortunate to have a number of mentors over the years. For me, the best mentors are the people that aren’t teaching me specific skills, but rather serve as role models in the way that they are passionate about technologies and about learning new things. These days, I help fuel my passion for software development by listening to a number of great podcasts. I’m especially inspired by listening to Carl Franklin and the work that he does in producing .NET Rocks and The Tablet Show. He’s clearly as passionate about this stuff as I am and he seems like the sort of guy that I’d want to hang out with.
20. What’s the toughest thing you’ve had to do professionally?
In a good job, there are always technical challenges, of course. For me, a huge percentage of the technical roadblocks that I hit are unanticipated things that end up derailing me for at most a day or two. They end up being a little irritating, in that they delay me for a bit. But I always feel pretty confident that I can eventually figure things out and move on. Then there are the occasional killer problems—bugs or inexplicable application behavior—that end up eating up a week or two of my time. The hardest thing about these sorts of problems is going down a particular path, looking for a solution, and ending up wasting a day or two before hitting a dead end. This can get pretty demoralizing, knowing that there is a solution out there but that I can’t quite find it. In the end, I generally end up solving most of these sorts of problems, too. But in the meantime, it’s psychologically difficult to stay positive while looking for a solution.
21. What is the last book you read?
“A Town Like Alice”, by Nevil Shute. A wonderful story and a really enjoyable read.