Show HN: My C# Tutorial Series: Coding Basics. How am I doing so far?
jeremymorgan.com
jeremymorgan.com
>> Using Statement - Defines the scope for your application’s objects and disposes them when they’re done. This isn’t super important now, but I’m going to cover some other ways we can implement using statements in C#. What you need to know now is it’s including the types in the System namespace in your scope so you can use them.
This is entirely wrong. The 'using' in your example is the using directive, not the using statement. They are entirely unrelated.
http://msdn.microsoft.com/en-US/library/sf0df423(v=vs.80).as... - using directive http://msdn.microsoft.com/en-US/library/yh598w02(v=vs.80).as... - using statement
Also, I really don't see why you are focussing on using the command line to compile programs. This is really not user friendly. The possibility for mistake is very high, which will certainly throw the target user of his/her tracks.
My reason for focusing on the command line is simply because I want the reader to focus on the code, and the nitty gritty. The possibility of mistakes is high, which they'll learn from.
Visual Studio is the greatest tool I've ever used and you can't really build anything valuable without it but as a new programmer it also serves as training wheels that can build bad habits and hamper learning. That's my reason for doing the notepad / command prompt angle.
I disagree.
In the Netherlands, the driving exam includes being able to accelerate from a standstill while facing uphill. On first glance, this is ridiculous, since virtually all of the Netherlands is flat (and by that I entirely flat). It is a big hassle and hampers learning, because driving instructors have to drive long detours just to get to a city's single 5 meter long sloped road. More learning time is wasted, because there's a queue before that slope, entirely made up of other driving students (not kidding!).
However, at second glance, you realize that learning this useless thing is great because it allows you to do more with your car than the absolute basics. For example, I can take a car holiday abroad or queue in parking garages without getting nervous about how that thing with the hand break worked again.
It's similar for programming. As these tutorials are clearly meant for learning C# as a first programming language, immediately giving the user tools that do some of the hard work for them hampers their learning, because it is difficult for them to separate between the programming language concept and its corresponding tool support.
By learning the concepts independently from the tool (both language constructs and compiler toolchain concepts), the learner gets a more general understanding of what's going on.
Need to do Go later? Ah, a compiler, I know what that is.
Need to do Ruby later? Ah, no worries, I've done without autocomplete before, and oh, hey, classes and methods!
However, I have a few, hopefully constructive, critiques:
(1) As mentioned by qwerty69, links to the other chapters would help a great deal.
(2) Your target audience is "newbies"? If that's the case, it makes sense that you would provide a little more explanation for critical concepts such as variables. In chapter 3, specifically, it feels as if you gloss over the topic by deeming it a "a space to put data." Maybe you're just looking for your audience to build an intuitive notion of the concept, but annecdotally I've always enjoyed learning the essential details when tackling new topics.
(3) Speak authoritatively; don't inject fluff into your sentences. It drains mental capacity. For some examples:
"You just press that button and it will compile and run your program. Or you can just press F5 and that will do the same thing" ==> "Press that button, or F5, to compile and run your program."
"The new method Console.ReadLine() is pretty self explanatory, it reads a line of text from the console" ==> "Console.ReadLine() reads a line of text from the console."
Concise, to the point, and much more effective. I prefer reading books that explain the most in the least words possible.
Either way, keep up the good work. The more resources budding programmers have access to, the better!
(2) Yes my target audiences is newbies who want a very thorough introduction. I plan on doing a whole tutorial on variables, my rough draft on types is huge, probably already bigger than this chapter was and I didn't want to crowd it up.
(3) You're dead on about the fluff, I probably should have let this sit a day and came back to it to strip it out. I may even use your suggestions verbatim.
Thanks!
If I look at this article I feel that the flow is missing. It is well written, has nice screen shots and explains a lot. But it seems to hop around a lot. I don't quite know who you're targeting, but I'm reasonably sure you'd confuse the hell out of my (intelligent, brilliant) wife.
The style is more documentation slash dissection of stuff, less introduction with a purpose. I miss a global "why", you provide more like "This is something we can do, let's walk through it together". Unless you're already a programmer or really into case studies like this, I think this way to present something is less accessible.
Don't want to bash on your work. I think what you did here looks nice. Just sharing why I don't think I'd subscribe or why I cannot recommend the series to my so.
My aim here is for the serious beginner. By that I mean someone starting out who may have tinkered with a language or two but really wants to learn C# in depth. That's why it's so verbose and I try to cover the topics. A hacker who wants to learn the basics should probably go elsewhere.
I'm honest enough with myself to have already thought this through, and I may throw in some quick hacky stuff specific for what someone is searching for, but for the most part I want these to be a very thorough introduction to the language.
The first thing I do if I'm coaching/mentoring a C#/.NET novice is to get them to follow the C# Coding Conventions [1] with Allman style indentation [2] and the Design Guidelines for Developing Class Libraries [3].
One other thing I would do is liberally sprinkle the tutorial with links to relevant further reading in the MSDN docs. A lot of new devs are overwhelmed by the MSDN library and often have no idea where to begin looking for reference material. Giving them good entry points so they can familiarise themselves with the official docs would be a beneficial addition.
[1] http://msdn.microsoft.com/en-us/library/ms229042(v=vs.100).a...
[2] http://en.wikipedia.org/wiki/Indent_style#Allman_style
[3] http://msdn.microsoft.com/en-us/library/vstudio/ff926074.asp...
There's bad indentation e.g. a for block not indented, and a mixture of C and Java style indentation. I recommend following the standard Microsoft style indentation which is place the opening brace on a new line on its own.
Also, "it will compile and run, then ask the user to press a key go back". One missing 'to' doesn't seem so bad but the accumulation of these little details really adds up.
Really nice though, I like taking the user back to the console and command line and walking them through everything. Best of luck.
* Picking CSC over Visual Studio for compiling initially * Explaining namespaces thoroughly in part 2, then glossing over them in 3 (I also don't know if I entirely agree with what's under "Using Statement")
No major criticisms with structure/style/order. I find that when teaching a programming language you just wind up dumping information on the person learning until a point where everything clicks, so the order of explaining this stuff probably isn't that important.
One thing that I'd suggest fixing is the indentation on the code. The number of spaces being inconsistent is something that could massively throw off people who don't understand nesting. Other than this, it's a good set of tutorials so far IMO.
Also I'm going to fix some indentation issues as well. Thanks for the feedback!
This might be the best tool for the job, but IIRC VS has a non-trivial price tag which a beginner might not be willing to spend.
I'm coming at this as someone who knows multiple programming languages and would like to get Java and C# under my belt. I'm not exactly a newbie, but I think a few years ago (when I was a newbie) I would have followed it pretty well.
I don't think you should target people who don't know what a variable is (i.e. true newbies) but rather write a separate {tutorial,set of tutorials} for that. I like how the focus here is just C#.
I think the style/presentation is spot on - conversational without being cheeky.
Please do continue! :)
You mean if we end up /using/ it before we put anything in it we'll get an error. If we never put a value in it, the compiler will spit back a warning.
"Then we will break out of the loop and move on."
What loop?
Not to mention that it also excludes deaf people unless manually transcribed, or if the speaker is clear enough that automatic transcription is possible, but I doubt that is possible with programming videos yet.
You can't search them for the thing you vaguely remember, you can't copy and paste code, you can scan them when they're too easy. You can't skip back and forth without loading delay.
I wouldn't mind an accompanying video though.
Also, I found the discussion on this post[1] strikingly relevant in this context.
[1] - http://jaap.haitsma.org/2010/01/03/the-rise-of-video-tutoria...
The reasons being: (1) I am horrible at editing and producing videos and that time I spend struggling could be time creating more written tutorials and (2) I'm not sure that people will really want / appreciate it yet. Many people (myself included) prefer text. You can't always be in a quiet place or have headphones on to listen, and reading a page at your own pace seems to be easier than video. But I am considering it, I'll do one or two and see what the feedback is for that.
It seems too verbose for programmers and too specific to a toolset for those who are just starting out.
To echo what others have said: don't do video. You're right to guess that unless you're a skilled video editor/producer, it will eat up far more time than producing screenshots, and have marginally more effectiveness (if any).
What are you using as CMS? Octopress/Jekyll?