views:

492

answers:

24

Hi Guys,

After 3 years working as an IT Support Technician, I decided to change of field and get to Programming.

I am learning C# through the Wrox Beginning Visual C# 2008 book, that I use as guideline.

I have read the whole POO part (inheritance, Polymorphism,....delegates,...). I have started the second part which is Windows Programming (Winforms)

I know that lots of you recommend to do some working applications in order to practice, but how can I do some personnal projects if I haven't even started concepts like SQL Server, LINQ or Network Programming, WPF, WCF.... Those topics are enumarated at the end of the book.

I am just trying to find the best method : Should I first finish this book and then start to code, or should I just do a project without having read the hot topics or jump straight forward to those topics.

I dont know if you see what I mean as english isn't my first language. But if you don't I can improve my explanation.

+6  A: 

Start coding. Trial and (t)error is the way to go. Use the book as a reference if you find yourself needing something that you haven't learned.

When you went to driving school, did you just read about driving? ;)

Edit

A bit more elaborate answer. Books are great if you can read straight through them and remember everything. But most often you can't. Someone else suggested that you start with a project and that is a great way to go.

But ALWAYS stop every half hour or so and read your code again. And be naughty. Yell at yourself if your code looks like something developed by my 85 year old grandma.

Beautiful code is very important.

It's easy to read and most often well designed. If your code ain't, don't start code again until you have refactored it into something more well structured. You could always post your code here at stackoverflow to get refactoring suggestions. There are plenty of experts here eager to help you.

And that's the best way to learn.

jgauffin
But you went to a scool and didn't just drive around ... Sorry, couldn't resist.
Stefan Steinegger
Of course. That's why he bought the book. :)
jgauffin
A: 

Hi I suggest you to start reading CLR via C# - Jeffrey Richter. I bet there's no other author who explains .NET better. There are quite a few samples in the book you can give a try.

Since you say you're a novice ... then Head First C# would also be a suggested reading Regards

this-Me
It's a great book, but not for someone who has never really programmed in any language before.
Daniel Earwicker
Good book - but for a complete programming beginner?? Not sure about that...
Peter Kelly
+7  A: 

You should code as much as possible. If you have no programming background or experience I suggest starting with a few small projects:

  • A calculator: start with the four basic operations and when everything is working add a few more functions and graphing.

When you learn a little about databases:

  • A blog engine: from the database generate a HTML file. Create interfaces to add a new post to a database. This doesn't need to be a web application: you can make an WinForms app that will generate a set of HTML files.

When you learn a little about networking:

  • An IRC client. The protocol is simple to be implemented and can be fun to write your own client.

And, after that, start your own little personal side projects. It should help you to learn better.

Vitor Py
I always try to think of some application that would actually be useful. Like try to write a blogging engine or a book-management system or something easy.
Jaco Pretorius
+2  A: 

My recommandation ot read article about important topics if you dont want to read whole books by this way you can get more infomation about the concepts and coding details>

You get good amount of article on : CodeProject

Pranay Rana
+3  A: 

The application you write doesn't have to do anything really useful, it's just important to get code down and start playing with it. You learn more from your own mistakes than you ever would from a book.

Start by throwing controls on a form and making them interact, then move on to file IO, maybe reading text or an image from a file and putting the data into one of the controls. Then modify the data and save it back again. Go in small steps and extend your code. The knowledge will come quickly.

Bob Moore
A: 

My experience has shown that it is usually too dry to just read a book without do some coding in the meanwhile to apply the things you just learned.

If you hesitate to start over with your project at least try the samples given in the book.

It is like really getting in touch with the things that are just written down in the book.

BTW: Your English is fine - but I'm not a native speaker either.

Andreas
A: 

If you can invest about $200, go to LearnVisualStudio.net

Your investment will pay off FAST!. I learn better from videos (since you get to see it happen). Books are good if you want to get into concepts. Also, you can search on YouTube for short helpful tutorials.

Good luck!

user279521
A: 

First:

I would suggest doing some exercises from here first:

http://projecteuler.net/index.php?section=problems&page=1

It's extremely useful to have some "smart" skills in programming. Spend 2-3 weeks on these kind of problems to understand the basics.

You'll meet a lot of projects where it's necessary to "think about the problem" and analyze it deeply rather than drag and drop a control to a form. And some of these problems will open up your mind.

Second: Continue with OOP. Start with simple projects where inheritance, polymorphism etc is involved and database basic stuff is required (like: build a library application or an medical tool).

Third: Go further with web or desktop programming stuff and start a complex application. (to practice linq, sql server, etc)

Happy coding.

Cristian Boariu
Project euler is a good site, but I think you need quite a big mathematical skill to do a good job there. Some assignments can be "bruteforced" but I don't know if it will really help him becoming a real developer. Although the site is fun to prevent getting bored (I used it while my employer had nothing to do for me, that way my VS was open all the time :) )
Gertjan
+3  A: 

You should also consider reading a book about development in general. These books help you in understanding software development and can prevent you from making mistakes you might make otherwise.

A good book to read about that is Code Complete 2, this book covers everything you might need to know (from the startup phase of a project to debugging etc). This book is also recommended for reading by experienced developers. I read this book after a couple of years of development and it learned me quite a lot (it also stated some obvious things I already knew, but that did not matter).

Gertjan
+3  A: 

The main problem in your situation is that you most probably copy-pasted the examples found on the book. This is not enough.

You need to get your hands wet. I saw other fellow posters here suggesting 'complex' (for your level) applications. I would follow a simpler path. I know you are eager to start developing your own projects, but you need to have an understanding on how to "talk" to the machine and how to "use" the language.

Don't set the bar too high or you will be frustrated. A simple application will do. Start with a windows form and a button. Alter the form's properties on your own. Search and discover using the GUI (Visual Studio).

once you feel enough comfortable, write code for your first event. You don't need something fancy; a MessageBox.Show() is perfect for this. When you're done with handling your button's click event, explore other events and/or objects.

Whatever you do don't get into algorithms and other components yet. Progress slowly and only when you feel comfortable.

Ask, discover, google, experiment, advance.

Good luck and welcome.

Anax
A: 

Personally, i'd recommend the "Microsoft Visual C# 2010 Step by Step" book by John Sharp. As well as discussing how to program in abstract terms, there are also samples and activities that you can "code along" with the book.

This is the third edition of the book; there is also a version for 2008 (.NET 3.5) and 2003, if you want to go back to previous versions of C# and the .NET runtime. Each book covers the basics, however, so you can pick up any of them and get started.

LoneDeveloper
A: 

In my opinion, there arn't many people who can code and being successful in projects without professional training. There are, but I wouldn't expect to be one of them.

Of course you can learn to write your own small apps, that is not so hard, but this is far from professional and will fail because of maintenance problems. If you "decided to change field", you might want to become a professional programmer.

So if you don't want to get frustrated after years of learning by doing and from books, I suggest to go to some courses at least.

Edit: As an example: I know people who still are misusing object oriented concepts after three years of studing computer science and a few years of practice. These are the basics, not the special technologies like WCF, WPF etc. It's a long road. Don't make it by foot.

Stefan Steinegger
I agree that if you are changing career that you should approach this in a professional manner and attempt to get funded by your current employer to start training.
Peter Kelly
+2  A: 

You could read open-source projects, rather than books.

pascal
A: 

I would like to recommend "Watch n Learn" method :)

Watch some videos and start coding...

"How Do I?" Videos for Visual C#
"New to Development"
"Visual C# Developer Center"

Read only if you stuck at any point...

Happy Coding ... n learning...

Sandy
A: 

Why are you jumping into the deep end?

Granted everyone has a different rate of learning, if we put this to one side for a moment.

We still have to learn certain things in a particular order.

Its like trying to understand how a car engine works without first understanding what a car is.

In much the same way, you have to progress your conceptual ideas towards programming enlightenment.

Start off small, then solve more and more complex puzzles as you get better. Also sometimes go back and re-solve things in a better way if you have learnt something new..

Darknight
+3  A: 

I'm a beginner too , but the thing that's really helping me , is writing application (simple ones of course) , and -the important thing- ask about what you don't understand or want to understand here in stack overflow , this site really helped me to understand many things....people here are really good :D

rafael
+3  A: 

I don't think you should assume that you need a project that requires linq or SQL or networking or WPF... if you're a beginner you'll get challenge enough just writing a calculator, or a simple in-memory address book, or hangman, or something of that scope.

If you choose small projects like these, you're also more likely to complete the project successfully - which is a big help when you're learning. You're also likely to be able to concentrate on one or two programming techniques at a time, which means you'll learn better.

Dan Puzey
A: 

Start by programming data structures by looking at high-level design specifications...not very formal but like a wikipedia article. There are tons of open source examples that you can take a look at but I would do that after you've coded it yourself.

Start with this: http://en.wikipedia.org/wiki/Binary_tree

In my opinion this is the best exercise to reinforce good OO concepts before moving on to design patterns (Gang of Four). You'll soon see patterns that all technologies and frameworks implement. Also, if you learn data structures and their associated algos then you'll be good for about 40% of the CS GRE :D

After this I would take Vitor Py's suggestion and make a couple of simple projects for yourself with a clear goal in each case and finish them. And lastly, look at lots of opensource projects that are widely used. You'll notice what are the best naming conventions, indentation styles, where to comment and general coding guidelines that teams tend to work better with.

Hope this helps!

Ayubinator
A: 

You can use what you already learned with a simple project that interact with the user and do a calculation. That way you won't have to use a database. In university we never used a DB in any course except the one on SQL. I know it's hard to figure out now because in a real working world almost every application has a database. Try to do a simple apps, like I just did for my wife that needed to enter a amount and then have taxes calculated for her. Also if you're able to read french, here is the best lab tutorial I've ever seen. It start out small with a console output and finish with a complete web application with a 3-tier layer. link text

Sylvain Perron
A: 

Yes just start coding. Think of things you would want or simple games that you would like to do and research and trial and error till you get somewhere on it, even if you don't finish you will learn. I would image that that book has some code snippets in there you can try out and play with as well.

Also check out http://msdn.microsoft.com/en-us/default.aspx right at the top they just put up some videos (click the desktop icon at the top) that are really good. You can search on there to find lots of info and also if you scroll down and click on Beginner Developer Learning Center there are lots of great videos in there as well.

Something else you might want to check out is an article in http://hackermonthly.com/hackermonthly-issue1-revised.pdf called "2 Steps to Becoming a Great Developer."

Oh and this isn't C# but C++, but it will get you understanding the basic concepts of object oriented programing. http://www.youtube.com/user/antirtfm?blend=1&ob=4 These videos are great and the guy who made them put a lot of time into them.

Pieces
A: 

For best results, Practice the Concepts with the examples given in the book. Once you find the essence of those concepts then you need to Implement them in your Project.

If you are strong at the fundamentals, then you can easily digest the Advanced concepts like WCF, WPF etc..

SO FIRST start practicing the Fundamentals... with the given examples from which you will learn more about the Visual Studio Tool, C# Syntaxes, Common errors, how to resolve the occurred issues.

msbyuva
A: 

If you are changing career then you should attempt to get funded by your current employer for training. Alternatively, try to get enrolled on an evening part-time course in a local college that offers programming modules.

If, in your current role, there is scope for you to automate some daily tasks through writing some small apps / scripts / VBA+Access(oh the horror) then go for it. I would then try to get into a team as a junior programmer where you can be mentored and learn how to program enterprise-quality code and learn about all the "other" stuff that goes along with programming such as design, testing, deployment, builds, shipping, debugging etc. Then, after a couple of years, you could move on to a position as a software developer / programmer. Throughout the journey, all the books and videos suggested will help you along and improve your skills, improving along the way.

It's a funny industry really. It's a science and an engineering discipline and an art-form and anyone can call themselves a developer/programmer with no formal qualifications. Some of the worst programmers I've ever come across have BSc and MSc in Computer Science. Strange, strange industry...

Peter Kelly
A: 

When I am learning a new language I always do some of the problems at http://projecteuler.net/[Project Euler][1] this helps to make sure you understand the basic logic behind the language, and as it you can solve them using console apps you don't have to worry about a UI

Quinn351
A: 

Write a simple calculator with WinForms. Plenty to learn there.

Mau