views:

337

answers:

14

I am currently working as an automation test engineer (writing functional scripts for software products). I have experience working with watir, watin and webaii. Also i have an intermediate level knowledge of C# and progrmming concepts. Right now i am very much interested and eager to learn a new technology on my own which is in demand and will add value to me. I am a quick learner and i am sure will grasp it quick. I needed advise on what would be the best choice for me to pick up and proceed with and which will be in demand in the market for a while. Looking forward for your suggestions.

A: 

I suggest you learn Python Or PHP

static
A: 

Ruby!

Konstantinos
+4  A: 

On top of all the .NET concepts &c you already have, dynamic languages such as IronPython or IronRuby are a good investment, will be in growing demand, and broaden your horizons while leveraging strengths you already have.

Alex Martelli
Thanks Alex for the reply. One question i had is , would i need to have sound knowledge of python and ruby to jump into ironpython or ironruby?
Ravi
I can answer this - no, previous knowledge of Python or Ruby is not needed; the "Iron" means just that it runs on .NET framework. But I would be suspicious learning only one vendor's (Microsoft's) technologies. What if it goes bankrupt?
Joonas Pulakka
mad-j: many reasons not to use MS tech, this is not one of them ;)
lraimbilanja: Well seriously, I think that this is slowly starting to be an issue. Today MS is in completely different (worse) situation compared to where is was, say, 5 years ago. Apple is eating it. Google is eating it. Oracle+SUN is eating it. Even Linux (Ubuntu) is eating it. Really, they're in deep trouble already, and I can't see why it would change to better.
Joonas Pulakka
I haven't tried IronRuby, but IronPython is quite OK for learning Python esp. when you already know C# -- the book "IronPython in Action" is excellent (I'm biased as I was a tech reviewer and the author's a friend;-).
Alex Martelli
A: 

hmm.... According to my attitude your question is depending on you :-) ... That means the value of the thing you learn is only depends on the use you are getting from that.

Use = Advantage you are getting in performing your career, new career opportunities, Personal interests etc.

So I suggest you to first identify the nature of the language you need to learn, then select the options and then perform a comparison between them :)

In otherwords you have a potential/Interest/Oppotunity towards scripting then you can select pearl and python (Just an example), then analyze and pros and cons, compatibility with your needs then go into the decision.

Chathuranga Chandrasekara
A: 

If you'd like languages that will still be valuable for years ahead I would recommend C or Java - as they were the most popular languages for new projects in 2008.

They also both have large, mature communities with great documentation. All important for self-learning.

gacrux
+1  A: 

There are already plenty of Python, Ruby, Java, .NET etc. popular high-level language specialists. If you want to be one among others then go ahead, but if you're looking for something more challenging, I think there's shortage of low-level specialists. How about learning C or even assembly? Learn how bits work and what actually happens inside a microprosessor. Most people, calling themselves programmers, have no slightest idea of this! Program embedded devices. Someone has to do it, and it can't be done with popular high-level languages.

Here are a couple of pointers to start with:

A popular platform is AVR Studio.

Joonas Pulakka
Can i learn and become a low level specialist without getting any hands on experience ? I mean, i am planning to learn it in my free time, so will i have enough resources to gain expertise on this. If yes, can you please point out on some initial resources. Thanks for the reply
Ravi
I would recommend trying AVR Studio. It can simulate the programs running inside Atmel hardware, without having the actual hardware.
Joonas Pulakka
Thanks mad-j. This really is in the top of my list for me to try out. Also Can i shift to this space .. maybe after few months of learning by myself ? I mean how is the market for this ? Thanks for your replies.
Ravi
The job market for embedded specialists may seem to be smaller than for instance Java programmers. But: there are dozens of applicants for every Java job, and lots less competition in the embedded field. This is my experience - of course I can't know the situation in your country. Good luck!
Joonas Pulakka
A: 

Java or .Net would be your best bets - they'll be around for longer and although Python and Ruby are popular languages, there's little investment in the industry (at least here in the UK). That said, PHP is also a safe investment.

From a programmer's point of view I highly recommend Python as it's very fun to learn, write and discuss.

atc
+1  A: 

First of all, if you don't already use it, get confortable with SQL! Many systems depend on database backends and being able to get your hands on the data directly will always be valuable. You don't need to become an expert, just get the basics down solid so you can get the information you want from a data source.


In terms of programming, a scripting language would be useful for the times when all you need is a quick hack and C# is too heavy.

Python would be a good option because it is popular and IronPython will allow you to continue using .NET, with which you are already familiar, but also easily expand to cross-platform libraries (wxWidgets, Qt), the web (Django, etc.).

Also, on the side, I have had a surprisingly good time using Tcl/Tk for some simple projects. The command-like syntax of Tcl (Tool Control Language, heh) makes it fun to use interactively as a shell that you can complement with custom functionality and Tk is a good way of quickly creating (simple) GUIs. I suggest you spend a couple of days playing with it so you just know that it exists and what it can do, it might come in handy sometimes.

Tiberiu Ana
Seconded (the SQL recommendation) - for all the LINQ and ORMs of this world, well-coded SQL is a great thing!
Alex Martelli
A: 

Working as an automation engineer, would you not be pretty good off learning some embedded systems programming, such as C or even an assembler flavor? (Or am I completely off to what your degree means?)

Christoffer
I meant automation test engineer. functional testing of software products
Ravi
A: 

Do NOT learn PHP. Everything else will fall into place...

It seems there are a lot of people in SO that dont like PHP.. I haven't been using PHP for a long time, but I don't think it is *that* bad, and a lot of companies use it for web development. So, why would this be a good advise?
JPCosta
+1  A: 

I started like this:

  • VBA
  • VB6
  • VB .Net
  • C#
  • C++
  • ASM
  • PHP and web

I don't recommend using .Net, as the form designer generates code for you, so it's that much easier to be lazy and ignorant. PHP is forgiving, and powerful, and has loads of string manipulation functions so it would be a good starting point.

As an automation engineer with some experience in programming, C++ would be a good start for you, as it is perfectly low level for engineering tasks, while being high level enough to be usable.

Antony Carthy
A: 

It's best to pick a language which would bolster your current experience.

As someone who has moved over to C# after ten years of VC++ I can attest to the difficulty of getting a position where you have less experience in a specific language than everyone else, even if you have more practical programming experience.

There are more positions for C#, VB and Java but conversely there is more competition.

Ideally you need to select a language that you could use at the moment. From what you've said building on C# or Ruby may be the way to go.

You could always look at using some of their new technologies e.g. WPF and WCF in C#.

ChrisBD
A: 

It's politically risky to say so, but most programmers would benefit more from polishing their English skills than from studying any particular programming language. But if it's a programming language you must have, then you'll benefit more from learning something in a different paradigm from your usual work. For most people, that means playing with a functional programming language like Lisp or Haskell.

Ian
A: 

I would suggest changing your perspective slightly. Languages can be viewed as belonging to families: most professional programmers I know can turn their hand to many languages. Most mainstream languages now follow few lineages. What is important is not the language, most of which are similar, but the API. If you are looking at test automation, lets say, look at libraries for test automation in any language you can find and compare their benefits. You will probably find they are pretty similar. For a tester I would say there are a few avenues to build up knowledge:

  • Automation languages/tools: these are domain specific languages (or gui tools) that will allow the user to emulate input. These might include tools that allow input to be captured and replayed. This might not just be GUI and the web but perhaps network traffic (eg X11 traffic).
  • Traditional Language Tools: there is an increased amount of automated testing performed by developers. They will often use frameworks to do this (like JUNIT, NUNIT, QUNIT).
  • Techniques: with some tools there are particular techniques that are useful to know. These range from how to get more tests written by developers, to structuring systems so that they are more easily tested.

I have found as a developer that sitting down with a book, or manual on a language, and learning the language features to be a waste once you know a language or two. More often than not you should concentrate on what you are trying to achieve with an idea of what is possible.

If you want to become a programmer this carries to, knowing what top-level concepts like reflection are is more important than knowing how to code it: especially with the internet as a source of information on howto.

andygavin