On this week's "Six Questions with..." I'm interviewing Craig Shoemaker: blogger, writer, podcaster, 10-time Microsoft MVP and author of 9 great Pluralsight courses, covering Web and Microsoft technologies.
Craig somehow manages to juggle his role at Infragistics with a stack of content production and a good-sized family, so I much appreciate him taking the time to join the Six Questions series.
1. What are you learning at the moment?
I have a few tracks of growth that I try to maintain. There are over-arching categories of skill that I focus on - things like writing better code today than I did just a few months ago and working to perfect my presentation skills, but like everyone else I have a long list of specific topics that keep me busy.
2. You've covered HTML5 in different ways with your Pluralsight courses on Angular and ASP.NET MVC. Where do you think the best place for control and routing logic is in a modern Web app - with a back-end framework, or in the front-end with an SPA approach?
The best place for control and routing is definitely either on the server or the client ;)
If search engine performance is your primary concern, then look to the server. While this is true, soon server solutions may be different than what we traditionally think. Angular 2 is built to run in the browser, native on a mobile device or even on the server. Other approaches to pre-composing views are coming into their own so soon there may be less of a trade-off than what we see today.
3. In your blog you mix great technical content with personal posts about your family and what you're up to. I'm the opposite - you have to try hard to find out much about me! Teaching in a virtual environment, does letting people get to know you help them feel more comfortable learning with you?
Perhaps sharing a personal side makes me a more effective teacher, but I have yet to have someone mention it. I think that I am just a teacher at heart and there are times when I can't help but share what I've learned. Development is hard. Parenting is hard. Shoot, life is hard, so while we're in this together it seems like a good idea to share what works along the way.
When it comes to virtual teaching, developing empathy for the audience is key. Bringing my listener to life changes how I speak, how I build slides and how I write code for any demonstration. At the end of the day I just try to put myself back to the day when I was a beginner and build up from there. And if I can be entertaining at all during the process then that's even better.
It's both. Having a steady stream of innovation is always a good thing. We need to keep experimenting and pushing back against the norm to find better and better approaches. The problem is really on a personal level. We all often feel like we must be on top of it all at once. I have ignored really cool technologies on purpose just because I wanted to wait until the dust settles before I dive in. You can only be on the bleeding edge of so many technologies.
Giving advice to someone just starting out, I would say select the technology that has the largest community - that way when you get stuck you have a lot of resources at your disposal. Then, once you get into things and realize that it's not a good fit - any learning you do will give you context to look at the next technology with perspective.
5. You have a history with VB.NET, as well as C#, Node and a bunch of other languages and frameworks. What would your reaction be if you were invited to work on a VB.NET project now - on a scale of No Way! to Yes Please!
6. If you could mandate one particular technology that everyone had to use on every project, what would it be?
Common sense. Is that a technology? Perhaps it should be considered one. Here - I just created a GitHub repository for it.
The idea that any technology should be used by everyone on every project misses the mark. Technologies change on a daily basis and every need is different so I would never mandate a single technology.
Now, there are some common principles that we as professionals should endeavour to introduce to each project we encounter. Concepts like automated testing and exception management come to mind as practices that belong in just about every situation, but other than that the answer - as always - is it depends ;)
Great answers, thanks Craig! More interviews coming soon, and until then you'll have time to check out Craig's Pluralsight courses.