Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I have a friend who has been doing QA for about a year and wants to further their career. I have always leaned to C using gcc and makefiles as you have to do everything yourself. I have also read the best ways to teach a beginner to program, but in this case should I start with the technology his company uses, namely .NET? Is there any drawback to learning a object-oriented high-level language first, or should I stick with C?

share|improve this question

closed as off-topic by MichaelT, gnat, GlenH7, Bart van Ingen Schenau, Kilian Foth Apr 23 '14 at 11:25

This question appears to be off-topic. The users who voted to close gave these specific reasons:

  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – MichaelT, gnat, Kilian Foth
  • "Questions about what language, technology, or project one should take up next are off topic on Programmers, as they can only attract subjective opinions for answers. There are too many individual factors behind the question to create answers that will have lasting value. You may be able to get help in The Whiteboard, our chat room." – GlenH7, Bart van Ingen Schenau
If this question can be reworded to fit the rules in the help center, please edit the question.

could we uncap that first A so it's easier to see the word QA –  Mark Canlas Oct 5 '10 at 21:32
And, unless my brain is broke, the second 'a' makes no sense being there, so can someone remove it? (or give me 9 upvotes so I can fix it myself) –  Peter Boughton Oct 5 '10 at 23:17
Start him off with Python. If he likes it and wants more, feed him Java/C#. If not, little harm done. –  Job Dec 18 '10 at 3:02

6 Answers 6

up vote 4 down vote accepted

C is not a particularly good beginner's language. It's simple, but some things are screwy and hard to use, like strings. I'd rather teach C++ as a first language than C.

I don't see any problem with using something like C# or VB.NET at first. Obviously, if your friend decides to become a good programmer, he should learn different languages as he goes along, and I'm not talking about different CLR-based Visual Studio languages, but we all have to start somewhere.

share|improve this answer
+1 for C is not particularly good for beginners. –  Chris Oct 5 '10 at 17:34
You can always use a library to handle strings, like this one. And C++ has too many moving parts to be considered a good first language, IMO. –  Robert Harvey Oct 5 '10 at 23:13
@Robert: Looks like a good library, but it's not going to make C strings pleasant. The secret of teaching C++ at first is to go high-level, with container classes and strings and shared_ptr<>, and then get into the messy details. –  David Thornley Oct 6 '10 at 13:58
Python is very beginner friendly and has wonderful documentation. –  Scott Oct 31 '10 at 6:25
I don't upvote you because you suggest C++ as a valid alternative. –  Camilo Martin Nov 22 '10 at 19:22

I think you should choose a language that is either designed for people new to programming (Pascal used to be popular for this) or since this person is a QA it might be an easy transition to get them to start writing BDD tests in one of the BDD frameworks.

share|improve this answer
Until recently, MIT used Lisp as their first language. Although this seems backwards, Lisp has a relatively simple syntax, allowing you to focus on software development concepts right away. –  Robert Harvey Oct 5 '10 at 23:19
Interesting! I didn't know that, but if it's a good teaching language then the heck not! –  Martijn Verburg Oct 6 '10 at 9:02
+1: BDD is where I'd start this transition –  azheglov Oct 11 '10 at 2:56

I am not sure about his company, but where I work, most QA people have some sort of technical/programming background. Perhaps not a university degree, but a diploma from a technical school, or self taught. If this is the case, a great place to start is writing automated tests for the products he is responsible for QA'ing. Not only will this give him a chance to learn programming, but it will be great exposure for him within his current company.

share|improve this answer

I'd get them going with scripting languages like Python or Perl. You know, something they've probably had to play around with already when configuring test plans. Any of the .NET languages are good too with the exception of F# seeing as functional languages are a bit advanced for entry level thinking. There's a lot of online resources for C# and VB, a lot of examples worked out, and more importantly a lot of difficult problems that are handled by the VM.

Now, a warning. If they haven't touched code ever, don't go with C or C++. C++ is a vast expanse of a minefield rife with subtle bugs that will drive you insane (I'm primarily a C++ coder.) C, pointers are problematic and so is manual memory handling. Steer clear of these until they're ready.

share|improve this answer
I'd choose a more orderly language like C# over Perl and its ilk, not because Perl is a bad language per se, but because it's too easy to develop bad habits in it. –  Robert Harvey Oct 5 '10 at 23:18

My stock answer for people who want to learn programming is to start with Code by Charles Petzold to get some basic understanding of computing and then start with a higher level language.

I like both ruby and python since a newbie has a number of options on where to apply their learning. A ruby newbie can use JRuby to script extensions to existing java apps they firm might already have working.

share|improve this answer

A key to learning programming is being able to put the ideas into practice - so I'd recommend either something .net and/or something they can use in their day-to-day QA role.

For .net I'd suggest using the same language as whatever the usual source code is in - doesn't really matter too much if it's C# or VB.Net (given a choice between the 2 - go with C#). Being able to read and debug code is potentially useful for a QA in diagnosing issues.

For a more pure QA focus you have a variety of languages that can be useful - Ruby and Python are the basis of several test frameworks (such as Cucumber and Robot Framework) or again any general purpose .net language.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.