ReneeC

Asked the student of the Master, "Master, how do i become a Master "

"You chop the wood and carry the water. Sleep when you are tired and eat when you are Hungry", the master responded.

I start many general topics in areas where we receive a high density of questions or where we see things going awry.

This seems like a good time for experienced developers to impart their views on how to learn software development, what approaches to take, what things to stress and on how to start and for new developers to ask questions on learning to do software development.

Learning software development very much counters mainstream culture that we see today. Mainstream culture is centered around instant gratification. Becoming a good software developer is quite the opposite. It is a process like mastery, it occurs in layers and only after lots of hard work.

One of the things I've seen here is that the tutorial projects often begin with database projects with lots of gridviews control bindings. I couldn't offer a stronger recommendation than to hit the delete button on those projects. My guess is that they were conceived of by a marketing organization. Here's the problem with them. You might be able to finish them. When you do, will not have learned very much. You will still be clueless about the fundamentals which the good people here stress. Mastery constantly reviews the fundamentals and software development requires it. Mastery is never about flash and glitter or instant gratification. It stresses basics and fundamentals. "Paint on, Paint Off" Mastery can be seen as "dull". I don't know about you, but I'm not here to be flashy or glittery. I'm here to be good. There's a world of difference which is the difference between image and substance.

Some things to remember.... the good developer doesn't fill her head up with things. She learns to use references. Virtually no one here uses Help or the Object Browser, two of the most extensive resources imaginable in .Net. Learn to reasearch would be my piece of advice to the novice. Btw, practicioners of mastery are always willing to be the novice.

The first thing to learn is Data types. Put this in your document viewer:

ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.en/dv_fxintro/html/7e4c5921-955d-4b06-8709-101873acf157.htm

It wil display data types. Don't just look at these or think about memorizing them. Instead think about the different between Floating (Single and Double) and fixed point numbers (bytes, int16, Short, int32, int64). Think about how these datatype looks in memory and learning binary counting and learn Hex. "Paint on, Paint Off"

Continue forgetting about databases. You never heard the word.

Learn about files. Learn to open them and close them, to read from them and write to them using the various data types.

Learn about shift operations. Write your own encryption program that will reliably encrypt and decrypt a file.

Write a console based process monitor/display.

Continue forgetting about databases. You never heard the word.

Learn about the namespaces and their classes. What's all this about System.Data What does that mean What do i use to look that up Oh... the object browser. We keep going back to fundamentals.

Many developers will say that the new developer should not write GUI based programs. I'm unsure just how draconian to be on that because I wrote character based programs for twenty five before there GUI's and forms.

OK, so you done these things You may be ready for you first program. Learn to use the debugger. Do not be afraid of it. I wrote a tutorial on that here:

http://forums.microsoft.com/MSDN/ShowPost.aspx PostID=1146268&SiteID=1

I won't be here to take part in this. I'm leaving on vacation tomorrow.

Carsten, behave yourself. Wink

Renee - a novice

P.S. It always "code" never, ever "codes". It is never ever singular or plural. It is not "a code" (singular) or codes (plural), it's always "The code ma'am, just the code."




Re: Visual Basic Express Edition For those learning to code

Dave299

Renee

I couldn't agree more about databases.

Have a nice vacation





Re: Visual Basic Express Edition For those learning to code

ReneeC

Thank you dave. I will do my best.




Re: Visual Basic Express Edition For those learning to code

Andreas Johansson

If you are dedicated to learning .NET development, download Lutz Roeders Reflector for .NET and use it to dig into the .NET base class library or any other .NET assembly. I use it a lot to find out a bit more what is happening behind calls to the classes in .NET.

http://www.aisto.com/roeder/dotnet/






Re: Visual Basic Express Edition For those learning to code

SomE matriX stYles

Databases are considered flashy and glittery Damn, I'm in the wrong industry Stick out tongue




Re: Visual Basic Express Edition For those learning to code

ReneeC

You know, your comment helped me understand some of the places where I could expand and clarify.

What we see here are people who are doing database projects without understanding the basics of data types. They do not understand the difference between integers and floating point numbers. Using controls and databindings, they do not acquire the basics of tables like how to reference rows and columns in tables.

Instead they learn about the commandbuilder without having any understanding of table rows and cells or how to program them. They don't understand the difference between value types and reference types and are doing database projects without understanding language syntax. Databases and bound gridviews are very flashy and glittery compared to the console programs that many long term developers recommend new developers write for a year before taking on GUI stuff.

I remember my first exposure to VB. It was hard for me because, although I'd had decades of professional programming with event driven and real time systems, I couldn't figure out where what the return mean at the end of an event. The return is actually to the message pump which is a queue of things to do and when that queue is empty the message pump does a return to the system. It's very rare that we even talk about the message pump here. So there are challenges at all technical levels. When you understand the fundamentals, those challenges can be unraveled. Skipping over fundamental can leave one perrentially challenged. You can't make a fine wine over night. It takes time to age. That's why I say these database projects, although functionally flashy, do a disservice to the new user.






Re: Visual Basic Express Edition For those learning to code

Carsten Kanstrup

ReneeC

This time I couldn't agree more with you. To me a good programmer is not somebody, who knows all several thousand methods and properties by heart - this is just a fast programmer. It is somebody, who knows exactly what he or she is doing, because this is the key to reliable programming.

Beginners often want a final solution - type this and it will work, but as soon as they need to change just a single statement they have to ask again. I know that my description of SerialPort has grown to a size where it gives some beginners headache, but it is my true belief that if you don't know anything about multithreading, message queue etc., you woun't be able to use functions, which use this, and it actually shocks me to see that even very experienced programmers mix things like Sleep(0) and Application.DoEvents(). Unfortunately, I have not been able to tie all my loose ends (see e.g. http://forums.microsoft.com/MSDN/ShowPost.aspx PostID=1817067&SiteID=1), but at least I try.

I wish you a very good vacation .





Re: Visual Basic Express Edition For those learning to code

bdbodger

I agree with what was said . I myself don't want to be a cut and paste programmer . I can spend a whole night just reading the help files that is what they are there for . I do have to look for examples some of the time to help complete a project or if I know something is possible I just don't know how to do it , Then I will find an example or ask on the forum but at least I strive to understand the example even if I have to goto the help files for every line . When I started dabbling in VB if I seen something interesting in the help files I was eager to use it in a program . Learning new things can be a lot of fun if VB is your hobby . Of course what I learn tends to be what I need for the project I am doing but not always . If I see something interesting while reading the posts in this forum I sometimes create new projects just to see for myself . I think it is great when you can take a post about one subject and expand on it and take it as far as you can . It is not the project itself but the experience of it that is the best part . A lot of the mysteries of how some programs work are solved doing things that way and you start to look at other programs differently and start to realize that hey I can do that . I know I will never be at a level of a person with formal training but I think my knowledge is growing every day so thank you for your efforts .





Re: Visual Basic Express Edition For those learning to code

EverydayHack

I've been trying to learn to code since I took a C++ class in college at the age of 15. (long story)
I'm a successful IT manager, MCSE certified, and the effort it has taken to learn to type 100 wpm could be compared to what Olympian athletes go through. You see I have a learning disorder, but that's not going to stop me. (how I got into college at 15 with a learning disorder is another long story)
Since the age of 11 I have spent a good 12 to 14 hours a day on a keyboard - and always dreamed of writing code but never succeeded except in simplistic scripts after mammoth efforts.
Lately things are starting to click, partially since Visual Studio has advanced so far, partly because I have learned so much about system administration, hardware, and software troubleshooting, things are starting to make sense, partly because of the wonderful support I've found in this forum.
What occurs to me listening to this discussion is many veteran programmers, are frustrated when told "There should be a simple way to do XYZ!" Surely it is a potential insult when one assumes decades of work and study should be able to be skipped.
There is another side to the coin. Many veteran programmers forget what it is like to know nothing. When working on a project, even a veteran programmer knows, there is a period of time for each person in each project, that if the goal is not achieved, the resulting effort is a failure. A failure of the language, a failure of the software, a failure of the community to gain another contributing member.
Programming is learned in opportunities. An opportunity to innovate at work, or at home. Many newbies can't learn fundamentals during these opportunities, and if the language is not simplistic enough for the specific task, or the user can't fathom the concepts fast enough, the goal fails the timeline. I know this all too well, because this is where I have suffered the most.
For the context of my discussion here, there are two types of learning. Just in time learning, and just in case learning. Many veteran programmers stress just in case learning. Example: "Do XYZ because you will probably need to know how to do this in many programs you write in the future."
More often than not just in case study is the least valuable. Writing code has such a rich new language, and so many words and concepts new to the human mind, that studying something just in case you need it, is the hardest to learn because there is no context. The words end up like "This widget is a warble because warbles never wobble.", because all they want to do is get from point a to point b.
Most people out there do not understand the fundamentals of encryption, and why it makes commerce safe on the Internet, let alone how to go about coding one. Renee, I respect you so much I cannot begin to express, but I must say the advise to write a encryption program is fairly useless to a new programmer.
Now before all the veteran programmers here jump at my throat, I beg you, give me three more paragraphs.
Your just in time teaching here surpasses anything I've seen before. Several concepts were far beyond my understanding and I made a few posts here and got answers right away. The answers were in context of what I was trying to accomplish such as "study A, B and C to get a better understanding of where you are having trouble." not "Remember: warbles never wobble"
Just in time directly helps people with finishing projects, meeting their goal, and succeeding in their opportunity to learn. Each opportunity that succeeds expands the future opportunities of that user you helped.
When you help someone achieve a goal, realize that you're not answering one question so someone can skip your decades worth of experience, you're sharing your success. They realize they can program more in the future. You're helping them achieve projects in the future that they would have never tried otherwise. You're giving them more time to study and learn what they partially understand because their goal is met, and they can reflect on their accomplishment, refine it and look to where it could be useful in the future. You're answering more than just that question - you're helping them along the path.
So I encourage everyone here to look beyond the immediate answers they are giving. Look to the change they are effecting in the newbie coders like myself. You're not helping us skip the fundamentals. You're helping us iterate through the fundamentals a piece at a time instead of expecting us to pass the entire gigabyte through a return statement by value instead of by reference.
At least.... that has been my experience.
Regards,
EverydayHack





Re: Visual Basic Express Edition For those learning to code

js06

Well i have mixed feelings on this topic.

I think it is wise to understand the basics.

But when i tried to read books on programming, all the technical mumbo jumbo made no sense to me.

Like these are the data types - integer, boolean, etc...

ok i understand what an integer is. What is a boolean i didn't find out untill i played with one on accident.

And maybe i was reading the wrong books also.

But I have learned so much more by playing with code and screwing things up.

Then i ask questions in the forum and with the code i get, it makes sense when i can see it work.

Now when i reference the books again or other documentation i can "see" it.

The biggest problem i had when i started trying to learn in the very beginning was that i tried to learn about things that i had no idea what i would use them for. I was trying to learn things without having any idea what they were.

I know this may not make complete sense but it didn't have a purpose for me to know it.

Basically i could remember what i had read but had no idea when or how to use it.

And then when i played with controls and the events, the order that you need to code in events such as key down, key press, key up. Well these made no sense to me when i read the sequence they run in but after playing with code samples that i found or tried to write it clicked. I still don't know all of the sequences but i can figure it out pretty quickly with a couple of lines of code.

Anyway, take it for what it's worth.

We are your students (disobedient, stubborn students)

Thanks for the support without you we would be newbies teaching newbies and that would be kind of scary.