Solved

How to learn C# better

Posted on 2004-08-20
18
335 Views
Last Modified: 2010-04-15
I would like some expert input on how to learn C# better.

I have observed many Experts in this TA who just seem to "know everything" about C#.  Now, this may or may not be true....but there are some Experts who are dang close, IMHO.  :)

The way things are shaping up here at my job, it looks like I am slated to become the resident C# guru, provide training for other developers (potentially), develop a lot of middleware in C#....really have to know C# inside and out.

What is my best path to get to this point?  Time is not on my side.

I am not sure if just learning C# syntax alone is going to help me, as much as a broad exposure to a lot of different problems and solutions in C#.

I have been thinking that one thing I can do is start spending a lot more time in THIS TA....trying to answer questions instead of always asking them (I am usually the asker).

Another is to look at C# tutorials and watch how other deveopers code stuff....to see if I can identify ways of doing things that will help me.

Now I turn the podium over to all of you.  Thanks!!

Tom
0
Comment
Question by:knowlton
  • 9
  • 5
  • 2
  • +1
18 Comments
 
LVL 10

Expert Comment

by:eternal_21
ID: 11852831
What programming experience do you have?  Do you know any other languages "inside and out?"
0
 
LVL 5

Author Comment

by:knowlton
ID: 11852930
eternal_21:

You have touched on one of my "weaknesses" (I guess you could call it that).

I have been in IT for about 10 years or so.

I spent the first 4 years doing "Help Desk" phone center type work.  You know, where people call in mistaking the CD ROM tray for a coffee cup holder, etc.  That kinda thing.

Then I gradually started migrating into software development by attempting to write "Help Desk" applications at the places I worked for.  You'd be surprised how many companies don't have software to track help desk calls.

My total software development experience lays out like this:

C++:  6 months
Delphi:  2 years
MS Access (VBA): 2.5 years
C#:  6 months

So, just under 6 years of software development experience.

I got my BS degree at a private university (University of Phoenix) in Information Technology.

I know a little bit about a lot.


I would not say that I know ANY language "inside and out"....not even Delphi.

C# is going to be the first language that I will learn in-depth.
0
 
LVL 3

Assisted Solution

by:sohilm
sohilm earned 150 total points
ID: 11854401
Here is my opinion on programming. I have experience in programming in Assembly,C,C++,VB,VB.NET,C# and ofcourse shell scripts(I don't think that is programming though). I beleive to real learn any language you need to learn the fundamentals of programming. Not C# but programming. If you learn the basics of programming almost every thing else falls into place. All languages follow basic rules.

Conditional Statements, Loops, etc. (with a BS degree, you should already have the fundamentals)

If you want to learn details of a particular type of programming. (ex: Databases, Systems Developments - Operation systems, Network Management, Device Management. etc), then I suggest buying a couple of books on that subject(Not necessarily programming books, but books about how that technology works). Once you have good understanding of how the technology works, than using your existing fundamentals it should be very easy for you to develop a solution. That's probably the best way for you to excel in whatever you are trying to do.

Hope this opinion helps.

0
 
LVL 5

Author Comment

by:knowlton
ID: 11854476
sohlim:

Thanks for your thoughts so far!

So, in your opinion...what seperates a beginning C# developer from an experienced one?
0
 
LVL 5

Author Comment

by:knowlton
ID: 11854484
What measuring stick can I use to determine if I know C# very well????
0
 
LVL 3

Expert Comment

by:sohilm
ID: 11854574
how well you understand the fundamentals of programming.

For ex:

If I tell you, write me a program that says hello ten lines on a screen.

You could probably write one in every language you have learned.  (from what I can tell up top). Which is good, now step away from all those languages and notice that all those languages follow the same logic.

You create a loop that goes ten times and then you use some sub routine to write something on the screen. So at the end, you have used your fundamentals to solve a problem in almost any language. You could use the same logic and solve the problems in any language that you wish to learn. What I mean is, find a problem and then solve it logically first. Then once you have a logical solution, the syntax is just using google. That is how you become a good programmer.

Almost every language will allow you to interact with other languages (ex: api calls). So once you know that, you shouldn't have any boundaries in what you can do. So the only boundary you have is to solve the problem logically.

0
 
LVL 5

Author Comment

by:knowlton
ID: 11855155
eternal_21:

What is your take on this?
0
 
LVL 14

Assisted Solution

by:AvonWyss
AvonWyss earned 150 total points
ID: 11856296
I can only confirm what sohlim said. The key to good programming is not the language you youse or the knowledge of it. The lannguage is just a tool.

Having a sports car doesn't make you a race driver, right? You still need to know the fundamental driving techniques, and only after that it is important that you know how to drive that particular sports car in the best way.

As you wrote, you can't look back on a vast experience in programming. Therefore, what you first need, is to really unserstand fundamental techniques and to get used to think as a problem-solver. But that does take time. What helped me a lot to build up my knowledge were programming contests and to solve old contest tasks for training. Even though these tasks are typically very isolated and usually quite purely algorithmic, they really force you to focus on the solution and not on the tool or the unimportant details.

You know, I've been giving my first programming classes about 12 years ago, and I've been writing programs for quite longer. I've used various languages and tools, even on different operating systems like GEM/TOS, DOS, and Windows, and also on embedded systems. I wrote programs in different BASIC dialects, Pascal, Delphi, C#, some C(++), Prolog, Oberon, assembler for different CPUs, etc. - but it always comes down to how you solve the problem, not what tool you use.

I wish you luck with your training!
0
 
LVL 5

Author Comment

by:knowlton
ID: 11856358
It seems like several experts have mentioned "problem solving" as the mark of an effective programmer.

So problem solving is BEST LEARNED by solving problems?

Is problem solving something that can be really be learned?  For example....say I am at a certain level of solving problems.  Can I keep getting better and better at it.......or are there some things I have to learn first, or understand first, before I can become better at problem solving?

0
Maximize Your Threat Intelligence Reporting

Reporting is one of the most important and least talked about aspects of a world-class threat intelligence program. Here’s how to do it right.

 
LVL 10

Expert Comment

by:eternal_21
ID: 11856397
Thanks to EE's new format, I didn't even realize that it was you asking the question, knowlton!  I know you have a firm grasp of programming fundamentals and you are definately over the first learning curve of c# (as far as language syntax).

Where do I think you should go from here?

The first think I think you should do is confirm your knowledge of c# syntax.  In your MSDN Library (Visual Studio .NET Help) look for "C# Programmer's Reference".  You need to understand the function of all those keywords and operators.  Along with this, you need to learn how C# actually works with pointers and references, unmanaged code, garbage collection, delegates and events, etc. etc. etc.  What I am getting at here, is that you understand how c# actually works (compiled programs, that is): How objects are assigned in memory, and how events are processed by default, then move to more advanced items like passing parameters by ref and out and defining add/remove accessors for custom events.  Oh yeah, application config files and embedded resources...

This type of thing you can find a book for, and it might be helpful (sorry, I don't have any recommendations), but I find that they are usually too filled up with pretty examples and applications and you said you were low on time. :)

Once you have this, it's just a question of becoming more familiar with the .NET Framework, which honestly, I think will only come with time (I am sure you could find a book ".NET Framwork Secrets" or "Programmer's Guide to the .NET Framework" or some such thing).  But the important thing is that you have the main C# language features and interal operations under your belt; It will help your debugging too.
0
 
LVL 10

Expert Comment

by:eternal_21
ID: 11856424
I just saw your last comment there Tom.  In my opinion, someone's problem solving experience does increase their problem solving ability.

A person may be an excellent "problem solver"; They may understand a process well enough to come up with a solution (or an algorithm) to a problem.  But it is the excellent programmer that can take this algorithm and apply it in the language of choice.
0
 
LVL 5

Author Comment

by:knowlton
ID: 11856448
So a plan of action for mastering any language might look like this:

1)  Master <language> syntax.    In my case...C#.
2)  Learn about <language framework> (libraries?) over time.  In my case...the .NET Framework.
3)  Find problems and apply #1  and  #2.


Is that a pretty decent summation?
0
 
LVL 5

Author Comment

by:knowlton
ID: 11856455
Do most of you find that you get bogged down so much in your day to day WORK....that you don't have the time you would like to explore new ideas or get better at <language XYZ>?????
0
 
LVL 10

Accepted Solution

by:
eternal_21 earned 200 total points
ID: 11856674
Yes I think that is the right approach...  You are limited in that you are mainly going to be training yourself, and with that in mind I don't see any other way to do it.

Don't get too focused on the .NET Framework - with the exception of System.dll, all of those assemblies are there as tools.  Don't think that the Framework is the "be all and end all" of your c# programming.  It is much more important that you understand the workings and fundamental of the language (from c# -> MSIL -> a compiled assembly).  You can find what you need in the Framework when you need it - it is a toolbox, it is NOT the language (for example, if you need to work with data, then use System.Data, ADODB, and System.XML, or whatever you need, but based on your situation, I would use them only as you need or really have time to explore and expand you experience with them)

I think that more important that .NET Framework is finding problems.  Try and think of more than one way to solve your problems when you are developing.  Even if you don't know how to program it yet - would multithreading help here?  Keep in mind that I don't spend a lot of time exploring... most of the time I get stuck with a problem and desperately search for a solution, and usually end up learning how to do something new.  Although I've made the mistake many many times of throwing out those "Prototype" projects and have to start all over again.......
0
 
LVL 5

Author Comment

by:knowlton
ID: 11856697
>>>Although I've made the mistake many many times of throwing out those "Prototype" projects and have to start all over again.......

I have done this also...and it has caused me grief.
0
 
LVL 10

Expert Comment

by:eternal_21
ID: 11856843
Hhahahaha,

  Yeah, it was in my mind, because I answered an EE question earlier where I knew I had built a project to solve it, but NO IDEA where I had actually saved that project....  I wait a month and delete them, but it's always 6 weeks later I need that little snippet....

  And don't even ask about the snippet's database I was going to make... I can never decide what information I want to keep, so I never get the tables even built :)
0
 
LVL 5

Author Comment

by:knowlton
ID: 11856858
>>>>And don't even ask about the snippet's database I was going to make... I can never decide what information I want to keep, so I never get the tables even built :)

A similar project has popped into my mind from time to time.

I always think "Oh....I'll remember THAT.....it's so easy to do"  ....which it is on the day I do it, atleast.....then a month or so later I'm like.....okay....what did I do?  What .CS file was it in?   ::::  SIGH ::::::
0
 
LVL 14

Expert Comment

by:AvonWyss
ID: 11881528
Well, I know this situation... but frankly, I came to realize that most of the time, if you have to solve something you already solved bevore, you'll do it better, even if you don't exactly remember what you did back then. Therefore, I gave up on the code snippet database idea...
0

Featured Post

Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

Join & Write a Comment

Introduction This article series is supposed to shed some light on the use of IDisposable and objects that inherit from it. In essence, a more apt title for this article would be: using (IDisposable) {}. I’m just not sure how many people would ge…
Entity Framework is a powerful tool to help you interact with the DataBase but still doesn't help much when we have a Stored Procedure that returns more than one resultset. The solution takes some of out-of-the-box thinking; read on!
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…
This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory. NOTE: For Outlook 2016 and 2013 perform the exact same steps. Open a new email: Click the New email button in Outlook. Start typing the address: …

705 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now