tags:

views:

335

answers:

6

Hello, I am looking for some advice.

I graduated with a BS in Computer Science from Boston University in 2002. I learned C/C++ well in college and learned Java more loosely. I also took a databases course using SQL, and have some experience with PERL and Python.

I worked for 6 months as a civilian for the Navy programming C/C++. I quit and went on a few years of soul-searching.

It has been about 4 years since and I am wondering how I might go about getting into the computer programming or software engineering careers again.

What skills would I need in order to resume software development as a career?

Over the past month I have been reading every .NET and C# book under the sun, and coding along with them. My idea so far has been to create a ASP.NET website as a demo for prospective employers. And have the code be downloadable.

I am studying with an intensity to really get as deep an understanding of .NET as I can.

What would be an excellent demo project to do in ASP.NET? What skills should I make sure to highlight, and more precisely what would be a good all-encompassing project to illustrate those skills?

GordonG

+3  A: 

I would look at ASP.NET MVC. With the emphasis on unit testing in the community now, MVC seems like it will be gaining popularity. You might want to look at Rob Conery's MVC Store Front application as a potential learning tool/demo application.

I'd also give some serious time to LINQ and Generics, in the .Net world. You probably also need to be familiar with some standard software design patterns and OO principles.

As far as software development methods, I'd look at Agile practices, in particular, Test-Driven Development (TDD) or at least unit testing. I think would at least need to be able to talk about these -- strengths and weaknesses -- and explain how one would go about unit testing an application. You also need to be somewhat familiar with source code control. Using SCC and TDD on a demo project would be big pluses to me in so far as indicating someone who took good development practices seriously.

tvanfosson
Thanks for the list. I've been going headlong into all of it. I really appreciate all of this advice.
Alex Baranosky
+1  A: 

I havent worked with .NET so take my advice as you may. If you are coming back from a break it may be hard in the current economy. But, a couple of thoughts.

First and foremost, dont give up. Its hard, may seem harder at times.

Start a blog about what you are currently learning/working on, that way prospective employers can see your work over a period of time.

Work on any open source projects that you can find. Have your other people working on your project review your code and comment on it. You may even ask them if they can vouch for your coding skills, some may, others may not.

Start following certain well known blog on ASP.NET, you can only learn more.

omermuhammed
Thanks Omer,Nothing is going to stop me. However, I appreciate your encouragement.I am taking your advice seriously.All the Best,GordonG
Alex Baranosky
"Start a blog about what you are currently learning/working on, that way prospective employers can see your work over a period of time."http://www.alexbaranosky.blogspot.com
Alex Baranosky
+1  A: 

Hi,

I agree with tvanfosson, generics and great understanding of OOP, including design patterns and some of the tools which allow the developer to code rubust

I would reconmend this as a read foundations of programming

it will introduce you into what i would consider hot topics of debate (especially with n-tier development)

For examples of design patterns have a look at this: design patterns, on the web site there is also a fully built application, which i found very easy to understand (but its not free.)

hth

bones

dbones
bones, I really liked Foundations of Programming. That was great reading.
Alex Baranosky
+1  A: 

In times like this do what you aim to do and hone your skills. Maybe push for an MS??

Perpetualcoder
+3  A: 

I had a break for a few years after I moved to Canada from the UK. I'd worked as a programmer for some 5 years in the UK after having come out of University. I found that in Western Canada the technology requirements were so far out of whack with Europe that it was a few years before most of my skillset could even be usefully applied. By the time I managed to muscle my way back in, a few years had passed. I really found it hard because obviously working full time on a non-programming job cut into my programming time and it's astounding how much you forget when you're not programming in a commercial environment every day. I have to say the first 3-6 months after I got back into it were probably the hardest months of my programming career. I guess a piece of advice I would offer here is be ready for this when you do get back into it - it can be tough.

Anyway - that aside, I've noticed over the past few months a very definite shift towards WPF/MVC and a distinct "dust settling" on ASP.NET/WinForms applications as people begin to view them in a similar manner as classic legacy apps.

One shortage I'm starting to hear clients complain about is that as support for legacy applications is running out and they need to upgrade their classic legacy systems to .NET they're finding that there are very few developers that both understand the legacy code [by that I mean VB6/VBA] as well as being advanced enough in .NET to be of use in the migration.

So these are both areas that you could consider...

As far as specific to areas of C# to learn, I don't exactly know the extent of your programming background, but I'd say you should definitely give some face time to all the usual suspects:

  • The Interface/Inheritance Model - This is Basic OOP, if you did C++ you probably already know it, but some revision might not hurt.
  • Regular Expressions - I'm always astonished how many developers don't understand how to use these properly!
  • LINQ - This is my personal favourite, I use it all the time.
  • Lambda Expressions - Because they just makes everything more expressive.
  • Reflection - Extremely useful for utility functions that'll make your life easier
  • Generics - Developers use this all over the place, so you should understand this
  • The Threading Model - Because so many others don't implement it well.
  • Delegates/Predicates - Not quite so useful since Lambda expressions were introduced, but as Lambda expressions were only just introduced in 3.0 and can't be used to completely replace delegates/predicates, you'll see them in a lot of places.
  • WebServices - Used much more since since the advent of AJAX and WPF.
  • AJAX - If you're planning on writing and/or supporting classic web applications.

As far as your SQL background goes:

  • SQL Server 2005/T-SQL - Grab a copy of SQL Server 2005 Express, it's free and it does enough of what the Enterprise version does that you can learn it pretty well. There are some limitations, such as a 4Gb data file limit and there's no SQL Server Agent - but whatever, that's not much of a hindrance. Brush up on your SQL scripting, I don't know what DB you learned your SQL on but T-SQL has some of it's own idiosynchrasies that are worth understanding.

I'll stop there because if the list gets too long it'll get overwhelming.

BenAlabaster
balabaster, what can I say? Your list is extensive, and it is a good sign that I am having a pretty easy time with most of them. I really really appreciated your post.
Alex Baranosky
@GordonG - no problem, if you get stuck, just shout
BenAlabaster
+1  A: 

I would suggest preemptively trying to prove your worth. Find an OpenSource project on codeplex that comes close to scratching an itch that you have, and submit some changes to it. Codeplex isn't the only site with oss .Net apps, but many seem to have migrated there. You can also create one of your own. Try to create an application with newer technologies, as suggested above. MVC, WPF + REST Toolkit, WPF and Silverlight come to mind. Just get in there and do something. Try to make it relevant.

This gives a chance for the world (including those you may interview with) to see your work.

Tracker1
I appreciate the input.
Alex Baranosky