Advice for a 19 year old?

Angry_Birds

Weaksauce
Joined
Aug 16, 2011
Messages
67
Hey guys, I'm currently a sophomore at George Mason University here in VA and have an internship doing network administration for a local asset management company. I am studying for my B.S. in IT with a specialization in DB/software development. There is quite a bit of SQL and Java, though obviously not as much Java as a CS major.

I would like to get into C#/.NET development, but I really have no idea where to start. I am pretty decent with Java (I have written a few small apps to perform miscellaneous tasks for the accountants and asset managers), but I wouldn't say I'm skilled enough yet to work for an open source project or anything like that. What are your recommendations? Do you guys think an IT degree vs a CS degree will hold me back in terms of career prospects?
 
Companies whose main business is software tend to look for CS degrees. If you're just looking for an IT job you should have no problems, just don't expect a place at Google ;). And the actual difference in the education you get is very small for most CS programs, just a few theory classes which can easily be picked up by reading some books. And you can always go back to get a Master's in CS later on.

If you're good with Java, C# is very very easy to pick up on, I just think of it as Microsoft's version of Java. The terminology and syntax may be slightly different but the concepts are all the same. There's lots of books out there to teach C# to experienced Java programmers, just google for them. I landed a .NET job after literally spending 2 weeks learning it, because I had a Java background.

There's tons of open source projects out there. You don't have to work on Firefox, just find a small one that interests you (search on Sourceforge). People usually are happy to let you help even if you're just learning, we were all there at some point. If you're really not confident, pick a project, spend time to study the code, then offer to do bugfixes.

Also, ask this question on StackOverflow. You'll get quite a few good answers.
 
Does your school offer a C# .NET course? If so, go for it. I took a C# .NET course at my school and it was quite advanced - the curriculum got through the language in 2 weeks, and everything from then on was all about .NET.

C# .NET is a really good choice for software development, in my opinion. Much better than Java. Even *nix people turn to .NET via the Mono project. Gives you a really good idea how much support there is behind the language.
 
I would like to get into C#/.NET development, but I really have no idea where to start.
I think you should start with first learning how computers work. What are registers? How does assembly language work? What is memory access like? How does I/O happen? You can learn the fundamentals from books like Code and Understanding the Machine.

Then, move on to learning algorithms and data structures. Without an understanding of how to store data and manipulate it, language choice is irrelevant. At this point, you'll want to start writing programs -- and you can do so by learning C# at the same time. C# books on algorithms aren't easy to find because it isn't a serious teaching language, but there are some. One is a web book, and you can also check out Data Structures and Algorithms in C# which is a pretty immature title, but it covers the material.

I am pretty decent with Java (I have written a few small apps to perform miscellaneous tasks for the accountants and asset managers), but I wouldn't say I'm skilled enough yet to work for an open source project or anything like that. What are your recommendations? Do you guys think an IT degree vs a CS degree will hold me back in terms of career prospects?
Your question perplexes me. Of course an IT degree will hold you back -- you will be less likely to get software development jobs if you don't have a CS degree. If you get a CS degree, that will hold you back, too -- you'll be less likely to get IT or IT management jobs if you don't have an IT degree.

You don't say what your goals are. Once you disclose what you want, you might find some help in trying to obtain it. You've told us you want to learn C# and the .NET framework, but you haven't told us what you plan to do with that knowledge.

What is it that you actually want to do?
 
Last edited:
As an Amazon Associate, HardForum may earn from qualifying purchases.
I did java and c++ in school and never touched .net or c#. After spending a little time on it, I picked it right up. It shouldn't be hard to learn as your first language or additional one. It is probably my favorite language so far and the .net framework is HUGE. I also love LINQ and lambda functions in them. Good choice on going with c#. I don't see a lot of off the shelf products made it, but many internal peices of software are.
 
I would like to get into C#/.NET development, but I really have no idea where to start.
Start at the beginning: what kind of work would you like to be doing with .NET, and what project can you undertake that will excite you and motivate you to learn C#/.NET to complete that project? If it's an existing open source application, you don't have to contribute to it, but you can certainly fork it off and do your own work on improving it as you work through learning the language and the various complexities of the framework.
 
Your question perplexes me. Of course an IT degree will hold you back -- you will be less likely to get software development jobs if you don't have a CS degree. If you get a CS degree, that will hold you back, too -- you'll be less likely to get IT or IT management jobs if you don't have an IT degree.

You don't say what your goals are. Once you disclose what you want, you might find some help in trying to obtain it. You've told us you want to learn C# and the .NET framework, but you haven't told us what you plan to do with that knowledge.

What is it that you actually want to do?

Thank you for the advice. My ultimate goal is to become a developer/software engineer.

Start at the beginning: what kind of work would you like to be doing with .NET, and what project can you undertake that will excite you and motivate you to learn C#/.NET to complete that project? If it's an existing open source application, you don't have to contribute to it, but you can certainly fork it off and do your own work on improving it as you work through learning the language and the various complexities of the framework.

That's a great idea, I never thought of that! When the sticky said "contribute to an open source project" I was only thinking of the big projects like Firefox.
 
If you can program in Java, you can learn C#. C# has a similar syntax as Java. .net/asp isn't to hard to learn either.

I have talked with a few recruiters at my school who are C# shops, and they are generally willing to train if you are the right candidate. One was Microsoft, and the other was Microsoft's top CRM development shop.

In addition to that, if you are going purely software based companies (Adobe/VMWare) mikeblas is correct about major. If you are looking for web programming, the major doesn't matter as much as long as it is a science based. I do have a friend who does work with RoR who's co-worker has some type of non-science degree.
 
If you go towards web development asp.net MVC is absolutely the way to go. Webforms is windows programming for the web (clumsy imo) but MVC is a lightweight and enjoyable way to program.

Since you didn't state anything more then C#/.NET take a look at the latest technologies because there are few technologies going out and a few more coming in. (webforms->mvc, don't really know the desktop too well, but there are changes there and Windows 8 is said to be a major change for desktops)

BTW, java and SQL are both very valuable even if you move to C# and SQL server (web development at least). Java design patterns and concepts are relevant in C#. C# has some special features that Java doesn't but in the beginning OO concepts are what matters.
 
If you go towards web development asp.net MVC is absolutely the way to go. Webforms is windows programming for the web (clumsy imo) but MVC is a lightweight and enjoyable way to program.

Since you didn't state anything more then C#/.NET take a look at the latest technologies because there are few technologies going out and a few more coming in. (webforms->mvc, don't really know the desktop too well, but there are changes there and Windows 8 is said to be a major change for desktops)

BTW, java and SQL are both very valuable even if you move to C# and SQL server (web development at least). Java design patterns and concepts are relevant in C#. C# has some special features that Java doesn't but in the beginning OO concepts are what matters.

I disagree with your statements about MVC. I've been programming in both WebForms and MVC for a while now, both have their advantages and disadvantages. Understanding those differences, then applying them to the project at hand is what really matters.
 
I am currently using this book to diversify my .NET toolbox.

images


I am coming to C# from a two year background in Visual Basic and I have been flying through this book. C# has so far been a very enjoyable learning experience.

Also, I recommend these two books regardless of language:

images


images
 
I disagree with your statements about MVC. I've been programming in both WebForms and MVC for a while now, both have their advantages and disadvantages. Understanding those differences, then applying them to the project at hand is what really matters.

I second this. We use MVC and Webforms depending on what we are doing.

MVC though is in demand is, at least right now, is one of those thing that if you know even a bit about using it, you can get a job, but that is normal for a lot of MS things.
 
I second this. We use MVC and Webforms depending on what we are doing.

MVC though is in demand is, at least right now, is one of those thing that if you know even a bit about using it, you can get a job, but that is normal for a lot of MS things.

I agree, MVC is in demand, as programmers tend to push new tech. So when it comes to hiring, they look for people with the new stuff. In all my years of programming, the longest I've been unemployed is about a month, and that's because I was switching jobs and wanted a month off lol. Finding a job as a programmer is laughable (at least in my state). If I post my resume on Dice or Monster my email is filled within hours...it's a nice feeling. Now that I'm a bit older and have made some good connections, finding a job is even easier but I'm looking to move into management and that should be coming true soon, can't wait.

Also, OP, learn OOP, then learn a language you want. If your goal is to have a programming job, learn Java or .Net, both are hot. Since I'm a .Net guy, I'll tell you to go .Net :)
 
Thank you for the advice. My ultimate goal is to become a developer/software engineer.



That's a great idea, I never thought of that! When the sticky said "contribute to an open source project" I was only thinking of the big projects like Firefox.

Why in the world are you doing IT then? Switch your major to CS or having a degree in IT specialization will definitely hold you back. Unless you have some sort of major experience writing code on some projects of your own etc companies aren't going to look at an IT major for a software engineering job. Were going to assume, probably rightfully so that you have considerably less programming expertise and possibly none which may not be true...
 
I think you should start with first learning how computers work. What are registers? How does assembly language work? What is memory access like? How does I/O happen? You can learn the fundamentals from books like Code and Understanding the Machine.

Then, move on to learning algorithms and data structures. Without an understanding of how to store data and manipulate it, language choice is irrelevant. At this point, you'll want to start writing programs -- and you can do so by learning C# at the same time. C# books on algorithms aren't easy to find because it isn't a serious teaching language, but there are some. One is a web book, and you can also check out Data Structures and Algorithms in C# which is a pretty immature title, but it covers the material.


Your question perplexes me. Of course an IT degree will hold you back -- you will be less likely to get software development jobs if you don't have a CS degree. If you get a CS degree, that will hold you back, too -- you'll be less likely to get IT or IT management jobs if you don't have an IT degree.

You don't say what your goals are. Once you disclose what you want, you might find some help in trying to obtain it. You've told us you want to learn C# and the .NET framework, but you haven't told us what you plan to do with that knowledge.

What is it that you actually want to do?

A CS degree for IT jobs will in no way hold you back. In almost all cases a CS or other engineering degree will be seen as superior to IT or MIS/CIS degrees.
 
As an Amazon Associate, HardForum may earn from qualifying purchases.
If it hasn't already hit home hard enough yet...

If you want a job as a developer/software engineer, get a degree in Computer Science.

Drop that IT Degree.
 
Yes, IT degrees are looked down on by CS majors somewhat.. Although in reality if you wanted an IT job specifically I could perhaps see how it could better focus on that area, but since you said you wanted a programming job you need to switch to a real CS degree.
 
don't educate yourself into a corner.
Going for a specific area of IT in my opinion is a mistake.
If you get cornered into one area and that area gets outsourced or outdated you are in a world of hurt where someone with more skills in other areas can find work.
 
don't educate yourself into a corner.
Going for a specific area of IT in my opinion is a mistake.
If you get cornered into one area and that area gets outsourced or outdated you are in a world of hurt where someone with more skills in other areas can find work.
But that problem should be solved through continuous education -- both on the job experience, and side/personal projects. It's not just about getting your foot in the door or getting the job, but regularly increasing your professional value. And if a particular technology path wanes or dies, there shouldn't be a reason why an IT professional could not learn other new and/or relevant skillsets.

(Though I'm also unsure of what you mean by "going for a specific area of IT". Some examples would certainly clarify your position.)
 
good point on not outsourcing yourself.

explore the areas of programming its a big world out there and a lot of things can be manipulated in a lot of ways.

this is a good thread to read. i went to barns and noble after reading this thread and bought some books cause i'm heading back in that area after the summer is over. hope to get back into it.

perl/linux and VB and maybe next year some java and html/css
 
As others have said, drop that IT degree and get a CS degree if you want to be a software engineer. Make sure it is a traditional CS degree, though. Many of the guys my company has hired straight out of college lately have "Computer Science" degrees, but it turns out they are nothing more than IT degrees with a fancy name. Most of them have no idea about data structures, the difference between the stack and the heap, proper memory management, etc. Worse, they had next to no formal logic coursework which severely hampers their debugging skills.

It seems some schools are just pumping out kids with "programming skills," but absolutely no knowledge about what's going on under the hood of their fancy managed environment. If you get a proper education, have decent social skills, and get some experience under your belt, you can still pretty much write your own ticket.
 
on the flip side a vast majority of whats out there are IT level programming jobs and there's nothing wrong if you want to make a career out of a IT job. I got my CS degree from a university that did not shy away from theory and math. Now 3 years into my IT job Ive barely used any of the theoretical stuff i knew.
 
Agreeing with everyone else. There is a giant gap between CS and IT at my school (FSU). CS teaches you to think and reason beyond anything that can be taught in IT. I even took a few IT classes to see what it was like and needless to say I ran away... quickly.

That being said, I don't understand the emphasis on theoretical stuff but the problem solving skills and work ethic I have gotten so far from CS far outweighs anything IT could offer. It's not about specific technologies that you learn, its about learning computers from the ground up and having a solid understanding of how everything works... then everything else just kind of falls into place.
 
Back
Top