Bill Blogs in C# -- teaching

Bill Blogs in C# -- teaching

Created: 9/8/2014 7:44:45 PM

Well, it’s been too long since I blogged regularly. That’s because of a large teaching project I was working on over the summer: Experience IT.

The goal was ambitious: Teach more than 40 aspiring developers the skills they would need to succeed in entry level jobs as .net web developers with companies that are growing in Detroit. My role was to develop the curriculum and act as one of the instructors for an 8 week intensive learning experience.

We gave the students an introduction to HTML5, CSS, JavaScript, JQuery, C#, ASP.NET MVC, Entity Framework, and SQL. I did say it was an intensive learning experience.

Experience It

The first day, 44 people showed up, ready to learn. It was a diverse group. The ages ranged from early 20’s, to mid 50’s. It was almost 50% women. There were different ethnic groups represented as well. Even more challenging was that the experiences the students brought into the class was very different as well. Some of the people had done quite a bit of UX work on web applications; they new HTML and CSS, and even a little JavaScript. Others had never done any development work at all. 011

Our first major challenge was to teach such a diverse group. We had to keep the more experienced students engaged while not leaving the least experienced lost. We did that by splitting up into smaller groups quite often. Thankfully I had a team of instructors that really knew the technology stack and the material. They also had a wealth of industry experience and could relate everything we were teaching to the real world tasks developers do everyday.01

The students spent the final two weeks building group projects of their own choosing that demonstrated what they’d learned. All of us enjoyed these two weeks the most. The students had to plan out their projects and scope them appropriately. They needed to assign work to each of the team members. They had to make use of the ALM tools we use everyday: source control, scrum boards, deployments and bug tracking.

Overall, I think the experience was almost as intense for the instructors as it was for the students. We really enjoyed the energy of the last two weeks. All the teams stretched themselves beyond the scope of what we taught. They were using the introductory knowledge we taught and adding to it by doing their own research, and figuring out new libraries and techniques. As instructors, we were busy helping them learn and expand their horizons.


After the class ended, the students started working on their job searches. Several have already landed positions. A lot more are going through second interviews with many of the growing companies in Detroit this month. I hope to hear  that many more have started new careers in the coming weeks.

I’m very pleased with the outcomes so far. I can’t wait for the next eager group to get started. The other instructors and I are making a few tweaks to the curriculum so that we can do even better. One change I do want to make is to have students spend some of their time reading and explaining code. I think that would be a great way to improve their skill at joining larger projects.

I’ve been lucky enough to have been very successful in this career. This has been a great opportunity to help others find their own success. I can’t wait to see how far they can go on this journey.

Created: 1/25/2013 4:35:35 PM

I try not to write posts that are simply links to other posts, but I had to make an exception for this.  I was quite happy to see Scott Meyer's post on writing an effective effective book earlier this week. I received an earlier version of this advice almost a decade ago when I first worked on the proposal and outline for Effective C#. That advice, and all of Scott's additional advice and counsel made all the books I've written for the Effective series better. His guidance and advice are a key reason why the Effective Series books are so successful, and so well-received. The the authors in the series receive this advice, and receive constant feedback on the content, the form, the advice, and the style that goes into an Effective book.

The advice I got from Scott helped in many areas beyond writing that book. It has helped me become better at writing in general. I'm also better at explaining difficult concepts when I'm speaking to developers, or in meetings with other technical leaders. I remember several review comments from Scott on my first manuscript that started, “I don’t know C# very well, but this doesn’t make sense to me. Will your readers understand this?” It made me rework several explanations for greater clarity, and to be more complete.

If you're thinking of writing a book, you must read this post. It contains many nuggets of information that will help you reach your audience. You'll explain your points more clearly, and you'll justify your arguments much better. Your writing will actually accomplish its purpose.

Even if you don't plan to write a book, you should read this advice. If you work in technology, and you ever explain difficult concepts to coworkers, managers, customers, or others, this information is very useful. You'll be more effective at work, and your advice and counsel will be taken more often.

If you've enjoyed the books I've written for the Effective Series, this post gives you a glimpse at Scott's advice to make those books as useful as they've been. It’s invaluable advice. Read it. It will help you as much as it helped me.

Current Projects

I create content for .NET Core. My work appears in the .NET Core documentation site. I'm primarily responsible for the section that will help you learn C#.

All of these projects are Open Source (using the Creative Commons license for content, and the MIT license for code). If you would like to contribute, visit our GitHub Repository. Or, if you have questions, comments, or ideas for improvement, please create an issue for us.

I'm also the president of Humanitarian Toolbox. We build Open Source software that supports Humanitarian Disaster Relief efforts. We'd appreciate any help you can give to our projects. Look at our GitHub home page to see a list of our current projects. See what interests you, and dive in.

Or, if you have a group of volunteers, talk to us about hosting a codeathon event.