Moving from VB.NET to C#

M

Mark Braswell

Hello,

I would like to hear people's thoughts and opinions on the best way
for a VB.NET developer to move into C#. This is specifically from a
job perspective, and specifically from a UK based job perspective.

I am a VB.NET developer, and have been developing in VB.NET (also
ASP.NET) for approx. 3.5 years. Prior to that, I developed in
VB6/VB5/VB4 and classic ASP for approx. 10 years.

Since switching to .NET, I have focused almost exclusively on
web-based development, with my VB6/5/4 years being mostly desktop
application development and the most recent 2-3 years of that
including classic ASP for the web.

I would consider myself an above average VB programmer, who has always
programmed elements of an application (i.e. data access) myself
through pure code, rather than being a drag-and-drop developer. I'd
like to think that this, along with my good analytical skills, is at
least part of the reason that I hold the Senior Analyst Programmer
position that I now do, having worked my way up from a Junior
Developer position many years ago.

Prior to switching to .NET, I understood only the very basics of
things like object-oriented programming as VB6 was a severely OOP
crippled language. However, since switching to .NET, I have studied
long and hard to learn all those things that I never really properly
knew and understood about OOP. Obviously, .NET has allowed me to do
this with my code, it being a full-blown OOP framework (please, no
arguments about a lack of multiple inheritance! :)

In the last 2 years or so, I have seen the job market (in my area, at
least) for VB-based programmers decline, and the market for C#
programmers increase. So, I decided I needed to learn C#. Having
studied OOP and the .NET framework, and now considering myself very
proficient in both, I resolved to learn C#. Luckily, thanks to my
other study, this was mostly a question of learning a new syntax. I
have been studying C# through many different books and many online
resources (as most of my previous study was done) and I now feel that
I know and understand the C# language quite well.

I would like to make the switch, job wise, from VB positions to a C#
position. My main problem in this regard is my lack of real world C#
experience. I have interviewed for a number of C# positions, and have
been able to answer all of the interviewers questions correctly,
however, I have never been offered a C# position, with the main reason
cited as being a lack of overall experience in the language. My CV
obviously lists my current and former positions as all being VB based.
For the record, I have only one computing-specific qualication from my
education years, although not to degree level.

I am fully aware of the culture surrounding VB (both .NET and it's
predecessors) and the culture surrounding C# (and it's
related-languages - i.e. C, C++ and perhaps even Java to an extent).
Most VB.NET programmers, if they've been programming long enough, have
come from a VB background, and thus are considered "lesser"
programmers than those with C/C++ backgrounds. This is mainly due to
the fact that VB pre-.NET was not considered an OOP language, along
with the ease with which a non-developer could knock up simple
applications with VB. Whilst this is obviously a stereotype, I know
from my own experiences that there is a fair amount of truth in this.
I've worked with some horrendous VB programmers in my time, who simply
couldn't write (for example) data access code, and relied upon toolbox
objects and setting a few properties thereon to do their job for them.
However, I do consider myself well above this kind of programming, and
I'm perfectly capable of building a fully OOP-compliant application,
utilising best practise with regard to architecture, design patterns
etc. in .NET within my job, albeit using VB.NET as the language rather
than C#. I do feel that, as well as my lack of real world C#
experience, some of this cultural stereotyping is also hampering my
efforts.

I feel as though I'm in a kind of Catch-22 position, in that I can't
get real world C# experience without a job, and I can't get a C# job
without real world experience. I realise that I could go down a route
such as acquiring Microsoft Certification, however, I'd have to do
this on my own, and it seems very expensive for an individual to do,
not to mention time consuming. Being the other side of 30 years of
age and married with kids, both money and time are in scarce supply
for me.

Does anyone have any personal experience of this themselves, or can
anyone offer up any tips or pointers as to how I may "make the switch"
from VB.NET jobs to C# jobs?


Thanks in advance.


Mark Braswell.
 
G

Guest

My CV
obviously lists my current and former positions as all being VB based.
For the record, I have only one computing-specific qualication from my
education years, although not to degree level.

Change to .NET programmer? The difference between VB and C# is mainly
syntax. C# does have pointer support, but 95% of the jobs out there won't
ask you about pointers.
Whilst this is obviously a stereotype, I know
from my own experiences that there is a fair amount of truth in this.

I've worked with some horrendous VB programmers in my time, who simply
couldn't write (for example) data access code, and relied upon toolbox
objects and setting a few properties thereon to do their job for them.

There's noting inherently wrong with using the toolbox controls - some are
decent (i.e. BackgroundWorker). It just depends on the situation and
context.
Does anyone have any personal experience of this themselves, or can
anyone offer up any tips or pointers as to how I may "make the switch"
from VB.NET jobs to C# jobs?

You could start programming some personal projects - perhaps you could
release a couple applications as freeware/shareware. That could show that
you have the skills to develop a marketable C# application.

Otherwise downplay your VB.NET experience and highlight it as .NET
programming?
 
M

Michel Posseth [MCP]

Hello Mark

I program in Basic language since the C64 , i was 12 years old when i wrote
my first proggy "superior calculator" ( freely translated from the dutch
language )

I always stayed with Basic as my primary programming language ( so i play
now with the Beta 2008 version ) althoug i also used other languages (
Delphi , C++, and since .Net also C# now and then .

However although i also can code in C# it is not my prefered language and
it probably never will be , i guess it is something as trying to make a
Manchester United fan a Chelsea supporter :)

However with .Net it is so , that if you code mostly with framework method
syntax using string.length instead of using the handy vb syntax len()
etc etc etc
or at least knowing the framework syntaxis well then switching to C# should
be easy .
In the last 2 years or so, I have seen the job market (in my area, at
least) for VB-based programmers decline, and the market for C#
programmers increase. So, I decided I needed to learn C#. Having

How can a language be destroyed by a wrong reputation , i hear a lot of blah
blah where C# should have more power as VB.Net , wel indeed some thingy`s
are harder in VB as in C# however the oposit is also true and that is what a
lot of people forget also VB is a true RAD and in my homble opinion C#
isn`t
okay blah blah pointers , but what about good late binding support , what
about VB`s superior IDE ( intellicense ) wich makes developing so much
faster , and thus project costs so much cheaper and and and ........ :)
but again as Johan ( Johan Cruyf ) said every advantage has it`s
disadvantage

I guess it is just a mather of personal taste , and yes sometimes you are
probably forced to make a choice , i once told my employer that if he
switched to another language as VB i would look for another job , as i am in
the first place a VB programmer and then a programmer

And about the certification ,,, buy the books on AMAZON ( MCPD / MCTS
self paced training kits ) , take an account at http://www.vue.com/ (
costs you nothing ) schedule your exam through VUE at a local by you
prefered MS CTEC ( costs you +- 160 euro`s ) and just take the exams
this way it saved me ten thousands of euros .

If you take a course , you wil get a lot of blah blah from mostly people who
don`t know #%##@! pay thousands of euros ( pounds in your situation ) and
in the end you take the same exam as MS is the sponsor .



regards

and succes with your study`s

Michel Posseth
 
C

Cor Ligthert[MVP]

Mark,

Be lucky that they did not choose you, there were is so little knowledge
about the differences between C# and VB.Net can never be an employer were
you are able to deploy yourself better. Just go on and tell that you know
both languages, nothing more.

Just my opinion.

Cor
 
?

=?ISO-8859-1?Q?Arne_Vajh=F8j?=

Mark said:
I would like to hear people's thoughts and opinions on the best way
for a VB.NET developer to move into C#. This is specifically from a
job perspective, and specifically from a UK based job perspective.

I am a VB.NET developer, and have been developing in VB.NET (also
ASP.NET) for approx. 3.5 years. Prior to that, I developed in
VB6/VB5/VB4 and classic ASP for approx. 10 years.

Since switching to .NET, I have focused almost exclusively on
web-based development, with my VB6/5/4 years being mostly desktop
application development and the most recent 2-3 years of that
including classic ASP for the web.
In the last 2 years or so, I have seen the job market (in my area, at
least) for VB-based programmers decline, and the market for C#
programmers increase. So, I decided I needed to learn C#. Having
studied OOP and the .NET framework, and now considering myself very
proficient in both, I resolved to learn C#. Luckily, thanks to my
other study, this was mostly a question of learning a new syntax. I
have been studying C# through many different books and many online
resources (as most of my previous study was done) and I now feel that
I know and understand the C# language quite well.

I would like to make the switch, job wise, from VB positions to a C#
position. My main problem in this regard is my lack of real world C#
experience. I have interviewed for a number of C# positions, and have
been able to answer all of the interviewers questions correctly,
however, I have never been offered a C# position, with the main reason
cited as being a lack of overall experience in the language. My CV
obviously lists my current and former positions as all being VB based.
For the record, I have only one computing-specific qualication from my
education years, although not to degree level.
I feel as though I'm in a kind of Catch-22 position, in that I can't
get real world C# experience without a job, and I can't get a C# job
without real world experience. I realise that I could go down a route
such as acquiring Microsoft Certification, however, I'd have to do
this on my own, and it seems very expensive for an individual to do,
not to mention time consuming. Being the other side of 30 years of
age and married with kids, both money and time are in scarce supply
for me.

There are no such thing as good C# programmers or good VB.NET
programmers or good PL/I programmers, there are just good
programmers. And bad.

A good programmer can express the business requirements in
smart data structures and algorithms. What syntax to put
those in is a minor detail.

But that does not help much when seeking a job. If you actually
get to an interview with the team you want to join, then you may
have a chance to get the message through. But the people in HR
does not have any experience with software development, so they
look for X years of experience with language Y.

And I do not have a good oslution for that problem.

Two ideas:
- try seek jobs where there are somebody within the company
that know you and can carry you through HR
- seek VB6 or VB.NET to C# conversion projects, they will hire
you for your VB6 or VB.NET skills and then you put the job
on your CV as a C# job

Arne
 
G

GlennDoten

Arne said:
There are no such thing as good C# programmers or good VB.NET
programmers or good PL/I programmers, there are just good
programmers. And bad.

A good programmer can express the business requirements in
smart data structures and algorithms. What syntax to put
those in is a minor detail.

For the longest time, I used to preach that as well. I still pretty much
agree with it, except that there is a difference in the "minor" syntax
issues; experience has finally taught me that those differences are
usually not quite as minor as I used to believe. Yes, if you are a good
programmer, you can make the syntactical changes fairly easily (a loop
is a loop is a loop), but it does take a fair amount of time to learn a
language's idiosyncrasies. That's the tricky bit that people are usually
looking for when hiring a C# (for example) programmer as opposed to
"just" a programmer.

But once you get real development experience with a few languages it
does get much easier to pick up the syntactical differences so that you
can write the "best" code in the language you have to use (or have
chosen to use) for a given problem. Another way to think about it is you
can sometimes write very efficient code in one language that if "ported
directly" to another language may run much slower, because the
syntactical constructs in the target language can have performance
penalties if used unwittingly.
 
R

raylopez99

Looks like flamebait to me, but I'll venture an opinion that with
Windows "Forms", which apparently (from what I've read) originated in
the "Visual Basic" camp, if anything C# and C++ as "managed" by Visual
Studio have become, in the CLI/.NET environment, more like Visual
Basic.

But you're right in that appearances are reality in the corporate job
world (probably a good number of the software managers out there have
not actually coded in years--they stopped with Pascal/Cobol/Fortran
and then went into management), so why not take the plunge and learn
C#? It will only help your resume.

But, and I'm finding this out learning SQL--languages do make a
difference, and SQL is really a dinosaur language. It's a weird macro/
batch type language of the kind used in MS-DOS to change your .bat
files--remember that?--which I think was a variant of BASIC, LOL.

BTW I code for fun--not my real job. I tip my hat to you real
programmers who have to meet deadlines and compete with a horde of
hungry teen coders in Bangladore!

RL
 
G

Guest

Mark,
If you really want to become as proficient in C# as you are in VB.NET, I'd
advise that you snag yourself a copy of Lutz Roeder's "Reflector". There is
an add-on by Jason Bock that allows you do decompile an assembly into C#
complete with all .cs files and a csproj file. You can then load this C#
project in Visual Studio and see how it is written. It should be very
familiar, since you wrote it.
-- Peter
Recursion: see Recursion
site: http://www.eggheadcafe.com
unBlog: http://petesbloggerama.blogspot.com
BlogMetaFinder: http://www.blogmetafinder.com
 
?

=?ISO-8859-1?Q?Arne_Vajh=F8j?=

GlennDoten said:
For the longest time, I used to preach that as well. I still pretty much
agree with it, except that there is a difference in the "minor" syntax
issues; experience has finally taught me that those differences are
usually not quite as minor as I used to believe. Yes, if you are a good
programmer, you can make the syntactical changes fairly easily (a loop
is a loop is a loop), but it does take a fair amount of time to learn a
language's idiosyncrasies. That's the tricky bit that people are usually
looking for when hiring a C# (for example) programmer as opposed to
"just" a programmer.

I still think a good programmer can catch up rather quickly in new
language.

Someone that does not have the ability to "think programming" will not
be able to learn it in 100 years.
But once you get real development experience with a few languages it
does get much easier to pick up the syntactical differences so that you
can write the "best" code in the language you have to use (or have
chosen to use) for a given problem. Another way to think about it is you
can sometimes write very efficient code in one language that if "ported
directly" to another language may run much slower, because the
syntactical constructs in the target language can have performance
penalties if used unwittingly.

I think it is more important to get someone that has the ability to
understand how various stuff really works than someone which has
memorized huge parts of the framework.

If someone understand why he needs a hash lookup table or a double
linked list, then I think it is possible to find the right class in
the framework.

Arne
 
M

Mark Braswell

Hello,

I would like to hear people's thoughts and opinions on the best way
for a VB.NET developer to move into C#. This is specifically from a
job perspective, and specifically from a UK based job perspective.

Thanks to everyone that's replied so far... I'll add my thoughts in
between a few choice quotes:
But that does not help much when seeking a job. If you actually
get to an interview with the team you want to join, then you may
have a chance to get the message through. But the people in HR
does not have any experience with software development, so they
look for X years of experience with language Y.

Two ideas:
- try seek jobs where there are somebody within the company
that know you and can carry you through HR
- seek VB6 or VB.NET to C# conversion projects, they will hire
you for your VB6 or VB.NET skills and then you put the job
on your CV as a C# job

Oh how true this is. It is *this* more than anything else, I believe,
that is giving me the problems. Usually in interviews, there is at
least one HR person and one or more "techies". I have the soft skills
that HR is usually looking for, and I more than have the requisite
hard skills that the techies are looking for. I usually feel that,
after coming out of an interview, the techies are very impressed with
my general programming skills, however I'm sure after I've gone, HR
overrules the techies by saying something like, "We're asking for X
years of language Y, and this guy doesn't have it!"

As for your ideas, the first one is a non starter as, being a VB guy
in the past, I've generally only worked with other VB guys and
generally only in places that use VB across the board. I think it's
very rare to find a "shop" that uses both languages (VB.NET / C#).

As for your second idea. I like it, however it does narrow down my
job search somewhat, but it's certainly worth looking out for.


Spam said:
Otherwise downplay your VB.NET experience and highlight it as .NET
programming?

Sounds like a good idea. I must admit that at the moment my CV is
littered with references specifically to VB, and I'd be happy to
change it slightly to try to reflect "General .NET programming" more
so than "VB.NET programming". However, when the interview rolls
around, I will inevitably be asked about what languages I've actually
used commercially. Short of lying outright, I have to be honest and
say VB, and therein lies the rub.


Peter said:
Mark,
If you really want to become as proficient in C# as you are in VB.NET, I'd
advise that you snag yourself a copy of Lutz Roeder's "Reflector". There is
an add-on by Jason Bock that allows you do decompile an assembly into C#
complete with all .cs files and a csproj file. You can then load this C#
project in Visual Studio and see how it is written. It should be very
familiar, since you wrote it.

Peter, I'm already past this stage. I use VB.NET in my current
position, and I often find myself coming home and, when I have the
time to, writing the same code as I've just written that day in work,
but in C#. I do this simply to prove to myself that I do, indeed,
know C# as well as VB.NET. Incidentally, for many years, as a VB guy,
I loved the english-like syntax of VB. Since picking up C#, I'm
loving it's terse syntax, and growing to loathe VB's verbosity. :)

Looks like flamebait to me, but I'll venture an opinion that with
Windows "Forms", which apparently (from what I've read) originated in
the "Visual Basic" camp

Not flamebait. The absolute last thing I want to do is fan the flames
of the very religious beliefs about which is better, VB or C#.
Certainly, with .NET, there is very little difference. I know. I
have been programming in both (VB.NET within my job, and C# at home on
personal projects). Yes, C# has that little more power (i.e. you can
write unsafe (i.e. unmanaged) code in it) but when you're writing data
driven business applications (think database/middle tier/UI type apps)
I very much doubt you'll be required to write much in the way of
unmanaged code, even when using C#. I've certainly never needed it
with VB.NET (Not that I could do it, even if I wanted to!).

What difference does exist between the language is mostly *perceptive*
differences, rather than technological ones. After all, we're both
(VB and C# guys) leveraging the power of the .NET framework itself.

I think Arne hit the nail on the head, it's these perceptive
differences that are held up as steadfast real-world beliefs within
industry. I think what I'm really asking is how do I overcome this?


Thanks again.

Regards,
Mark Braswell.
 
J

Joergen Bech

Reflector is good if you do not have the original source code,
but for your particular purpose, may I recommend
http://www.vbconversions.net/

This utility not only provides you with a VB->C# conversion,
it also tells you where you have some VB-specific habits you
might want to get rid of if you want your code to be easily
portable to C#.

You can also learn a lot by grabbing an existing VB
project and convert it to C# by hand - without the
assistance of any utilities.

But I agree with the other posters: If you cannot write C#
as part of your current job, create something on your own
time.

Regards,

Joergen Bech
 
M

microsoft

Getiing insight into object orientation and some C++ knowledge will help.
But this is a major step.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads

VB.Net advice needed 21
Suggestions to learn vb.net 5
OOP vb.net 7
Merge VB.NET and C# 4
VB.Net Book Recommendation 3
vb.net and winsock 3
VB.NET vs C#.NET (and 1.1 vs 3.0) 5
convert vb file to c# with reflector 3

Top