IT skills - what's hot / not / always useful?

IT skills - what's hot / not / always useful?

Author
Discussion

strudel

Original Poster:

5,888 posts

226 months

Thursday 30th October 2014
quotequote all
I'm feeling the urge to learn something new. I'm also looking for a new contract.

However, my hunting is throwing up more unrecognised terms than I expected. I've seen a few jobs for NoSQL & Apache Cassandra, something which I've not really come across. NewSQL is another similar idea. Other terms which I think are probably just fancy new words for old ideas (BigData anyone?). Maybe my previous permie life made me lose touch, but then I wonder how much of it I may unwittingly know.

So the (perhaps eternal) question is, what to learn? And how much?

I know PL/SQL. It seems a solid base, as SQL variants have some similarity, but is it really worth going up to the full on Oracle DBA route, having a little experience in several varieties or exploring some newer technology? I can't see vanilla SQL dying out but I'm beginning to wonder how many other technologies compete with it.

What about Java? I think It's still popular and worth knowing, but would anybody bother learning a language such as C++ anymore? What about the older languages such as Fortran - are they just a few roles limited to grizzled veterans? COBOL? Pascal? And so on. And are "niche" languages such as F# really used anywhere? (It's probably more popular than I think.)

This then raises the question of walking into a contract with these skills. I don't think you could self-learn C# and walk into a job, but if you had 5 years of Java behind you would you stand a better chance? What is necessary to show an aptitude to pick up a new technology with no prior experience, or are you better off hoping that you can go sideways whilst in an existing contract? Permanent staff probably stand a better chance at this point.

I know some people are probably thinking about how long a piece of string is now, but I think the question is whether to use twine or rope. So I'm curious to know what other PHers think constitutes always worth knowing, what they no longer use and what they would learn given the chance.

The early bird catches the worm and all that.

supersport

4,040 posts

226 months

Thursday 30th October 2014
quotequote all
Will be interested in the response to this. Am about to rejoin the job market after a decade employed in academia and so the marketable skills may not match. We tend to do a bit of everything and anything, you get used to swapping around different technologies and techniques at a drop of the hat.

Pretty much as far as I am concerned, once have learnt to program you pretty much do any language, it's just syntax.

"Bigdata", buzzword of the moment laugh Everyone seems to think they are doing it when very few really are, much like Cloud before that and Grid before that....

Ynox

1,702 posts

178 months

Thursday 30th October 2014
quotequote all
Cloud seems to be getting a fair bit of traction. Lots of places deploying to Amazon AWS now.

I'm a Java guy more than C#. From what I've seen there's *usually* more money in Java.

Got made redundant a couple of weeks ago. Permie market in south east is strong for Java as long as you have a few years' experience.

NoSQL seems popular-ish. I'd not be looking at Fortran / Cobol unless you have experience in these already. That said, I've not looked at perm or contract rates for these.

I've been spending a bit of time looking into devops stuff lately - e.g. Puppet, Chef. Lots of openings looking for these skills.

JVaughan

6,025 posts

282 months

Thursday 30th October 2014
quotequote all
Cloud and SaaS are big buzz words that i hear banded around at present, im in traditional IT/Telecoms / OSS/BSS and it is the "Big thing".. also Analytics in various forms are pretty much in demand across Europe.
Perl and Java still strong, but JavaScript replacing Java as my customers run various different versions that cause me headaches

Visualization / ESX still favored even in production environments so Core UNIX still in demand

otolith

55,899 posts

203 months

Thursday 30th October 2014
quotequote all
JVaughan said:
but JavaScript replacing Java
Eugh - Javascript, the curly brackets man's Visual Basic hehe

We're talking script replacing applets in browsers, presumably? I can't think of any other execution environments where you would reasonably be able to move from one to the other?

Blown2CV

28,697 posts

202 months

Thursday 30th October 2014
quotequote all
JavaScript is replacing many things and not just in the client. It isn't a straight swap for Java though, it annoys me when people think they're related.

Big data isn't a fad, and isn't 'dead'. People that build hype and people that want to be the first person to say the thing is dead piss me off more than most in IT. It's usually inherited opinions and based on fk all.

SQL will be important for a while yet.

Legacy languages are a wise choice for learning tbh.

Java for precision mathematics.

BPM will disappear and likely reinvent itself.

Aggregating service management, dashboarding, visualisation stuff will become more key as its fking hard to manage stuff that's distributed all over the place and out into cloud suppliers etc.

If you hang your hat on a technology, one day soon you'll be fked. That's one of the reasons I've been happy to back away from the tools a bit.

I have plenty more views but I think the above should create enough arguments.

Dr Jekyll

23,820 posts

260 months

Thursday 30th October 2014
quotequote all
SQL always comes in handy. PHP is worth looking at because it's so easy to learn.

Blown2CV

28,697 posts

202 months

Thursday 30th October 2014
quotequote all
Dr Jekyll said:
SQL always comes in handy. PHP is worth looking at because it's so easy to learn.
And fantastically useful providing you count maintaining other peoples' personal and hobby websites for the odd pint or beans on toast as gainful employment.

Olivera

7,065 posts

238 months

Thursday 30th October 2014
quotequote all
You can't go wrong with learning SQL and a programming language (one of Java/C# etc).

Other useful skills include:

XML (including XML Schema)
Shell scripting
Web Services (SOAP/WSDL/REST etc)
JMS Messaging (Websphere MQ/Active MQ etc)

And of course relevant build tools (Eclipse/IntelliJ/Maven/Subversion/Team City etc).

otolith

55,899 posts

203 months

Thursday 30th October 2014
quotequote all
Blown2CV said:
JavaScript is replacing many things and not just in the client.
You've piqued my curiosity now, what's it being used for?

I have a friend who used to recruit programmers, and took the view that he didn't really care what languages or frameworks people already knew, he wanted people he could throw a manual at and have them productive ASAP. These days I think I'd say that's leading them by the nose, they've got Google and Amazon and we'll expense manuals hehe

The bloke who gave me my first IT job was even less fussy than that - he was building a new in house development department from scratch and he recruited people with good degrees in science, maths or engineering. My programming experience was BASIC and 6502 assembler as a hobby and a little bit of VBA. Don't get many opportunities like that. Being in a department the director has staffed with the smartest people he could find was a real pleasure, even if it did result in some spectacular arguments!

Ynox

1,702 posts

178 months

Friday 31st October 2014
quotequote all
Node JS - allows you to run Javascript on a server. http://nodejs.org

otolith

55,899 posts

203 months

Friday 31st October 2014
quotequote all
What's the advantage?

Ynox

1,702 posts

178 months

Friday 31st October 2014
quotequote all
Get your Javascript guys to write server side apps? Apparently (off the top of my head) it's fairly light weight and offers reasonable performance.

Would I use it? Probably not, and I've got a fair bit of JS experience (starting a new gig doing Java and JS stuff in a week). I'd use Python if I wanted a light weight 'server' app.

cornet

1,469 posts

157 months

Friday 31st October 2014
quotequote all
otolith said:
What's the advantage?
It's really good at handling lots of concurrent connections with very low overheads since it's provides non-blocking, event drive I/O framework.

Good for writing network services which don't do much computation but need to handle 1000s of concurrent connection.

Problem is node.js has quite a low barrier to entry (since many people know some javascript) so trying to separate the good code from the bad is somewhat hard.


Also what language you learn really isn't as important as you might think. We've hired Java developers to code Ruby and it's not taken them long at all to learn it. What is more important is an appreciation for what different languages are useful for and of course a great understanding of data structures.

Personally I'd take some time to learn/play with the following:

  • A low level compiled language that doesn't have garbage collection (e.g. C, C++)
  • An interpreted scripting language like Ruby, Python or Perl
  • An object orientated language like Java, C# or Ruby
  • A functional programming language like Haskell, Erlang or Lisp
  • An evented framework like Node.js, Eventmachine (Ruby), POE (Perl)

Touching on SQL for a minute. Everyone and their cat that has ever done anything with a database claims to know SQL these days. Yes it is useful but quite often you never write SQL directly, you abstract it away using some library.

What is more important IMO is database design and how the database works. Things like:

  • When to reduce to 3NF and when not to
  • What indexes to use, the effects of composite indexes, covering indexes etc...
  • Different storage engines that databases use and when to use them
  • Query optimisation - which often requires an understanding as to how the database query path optimiser works
  • How to avoid things like temporary tables, full table scans etc..
  • Locking mechanisms, transaction isolation levels and deadlock causes.

Now, NoSQL... oh god NoSQL.

There is a new NoSQL database comes out it seems like every day at the moment. The problem is that some people see them as an alternative to traditional RDMS and treat them as such.

If you want a RDMS you have a number of options: MySQL, PostgresSQL, MSSQL, Oracle etc.. and they all pretty much do the same thing. Picking one usually comes down to £££ and experiences that people have had. They all pick consistency over everything else and you can predict how any of them will fail.

NoSQL is a minefield and you really need to do your research as they are all optimised for doing different things. Things get even more interesting when you want high availability since you might get different results back depending on which server you hit. (Read up on CAP theorem and how it applies to different NoSQL databases).

Basically learn a few and understand why you would pick say Cassandra over MongoDB or Redis etc... depending on your application.


Edited by cornet on Friday 31st October 19:45

otolith

55,899 posts

203 months

Friday 31st October 2014
quotequote all
That surely is an advantage of the framework- what's the advantage of it using JavaScript?

(apart from allowing UI programmers to have a go and make a hash of it)

cornet

1,469 posts

157 months

Friday 31st October 2014
quotequote all
otolith said:
That surely is an advantage of the framework- what's the advantage of it using JavaScript?

(apart from allowing UI programmers to have a go and make a hash of it)
There were already well established patterns for asynchronous processing in javascript which made it suitable for writing server side code as well as client side.

Yes it also helps that UI programmers can supposedly write stuff in it but I'm not sure this was the driving force behind using javascript.

supersport

4,040 posts

226 months

Friday 31st October 2014
quotequote all
cornet said:
otolith said:
What's the advantage?
It's really good at handling lots of concurrent connections with very low overheads since it's provides non-blocking, event drive I/O framework.

Good for writing network services which don't do much computation but need to handle 1000s of concurrent connection.

Problem is node.js has quite a low barrier to entry (since many people know some javascript) so trying to separate the good code from the bad is somewhat hard.


Also what language you learn really isn't as important as you might think. We've hired Java developers to code Ruby and it's not taken them long at all to learn it. What is more important is an appreciation for what different languages are useful for and of course a great understanding of data structures.

Personally I'd take some time to learn/play with the following:

  • A low level compiled language that doesn't have garbage collection (e.g. C, C++)
  • An interpreted scripting language like Ruby, Python or Perl
  • An object orientated language like Java, C# or Ruby
  • A functional programming language like Haskell, Erlang or Lisp
  • An evented framework like Node.js, Eventmachine (Ruby), POE (Perl)

Touching on SQL for a minute. Everyone and their cat that has ever done anything with a database claims to know SQL these days. Yes it is useful but quite often you never write SQL directly, you abstract it away using some library.

What is more important IMO is database design and how the database works. Things like:

  • When to reduce to 3NF and when not to
  • What indexes to use, the effects of composite indexes, covering indexes etc...
  • Different storage engines that databases use and when to use them
  • Query optimisation - which often requires an understanding as to how the database query path optimiser works
  • How to avoid things like temporary tables, full table scans etc..
  • Locking mechanisms, transaction isolation levels and deadlock causes.

Now, NoSQL... oh god NoSQL.

There is a new NoSQL database comes out it seems like every day at the moment. The problem is that some people see them as an alternative to traditional RDMS and treat them as such.

If you want a RDMS you have a number of options: MySQL, PostgresSQL, MSSQL, Oracle etc.. and they all pretty much do the same thing. Picking one usually comes down to £££ and experiences that people have had. They all pick consistency over everything else and you can predict how any of them will fail.

NoSQL is a minefield and you really need to do your research as they are all optimised for doing different things. Things get even more interesting when you want high availability since you might get different results back depending on which server you hit. (Read up on CAP theorem and how it applies to different NoSQL databases).

Basically learn a few and understand why you would pick say Cassandra over MongoDB or Redis etc... depending on your application.


Edited by cornet on Friday 31st October 19:45
Nice post thumbup

Jon1967x

7,175 posts

123 months

Saturday 1st November 2014
quotequote all
If you're into data then take a look at Hadoop and big data. If you're into analytics then look at R but you need a maths degree to get your head round some of its concepts. Both are I believe open source.

You could also play with watson analytics - I believe IBM have a free cloud based pilot you can play in

If you want to go web than getting into the data handling things like json and web pages and Dom would work.

And if data handling and manipulation is your thing, ETL can be leant using pentaho

All of these you should be able to do with very little investment other than the time to learn. Other technologies like sap hana or configuring applications are often difficult to break into as access to a sandpit to play in can be difficult.


bga

8,134 posts

250 months

Saturday 1st November 2014
quotequote all
Jon1967x said:


All of these you should be able to do with very little investment other than the time to learn. Other technologies like sap hana or configuring applications are often difficult to break into as access to a sandpit to play in can be difficult.
You can get access to Hana One developer edition through AWS but I think there is some cost associated. It's where the DB side of SAP is going. SAP have basically staked their company on it working and while it is surrounded in a monumental amount of puff and BS, it how they will get clients off Oracle backends

Jon1967x

7,175 posts

123 months

Saturday 1st November 2014
quotequote all
bga said:
Jon1967x said:


All of these you should be able to do with very little investment other than the time to learn. Other technologies like sap hana or configuring applications are often difficult to break into as access to a sandpit to play in can be difficult.
You can get access to Hana One developer edition through AWS but I think there is some cost associated. It's where the DB side of SAP is going. SAP have basically staked their company on it working and while it is surrounded in a monumental amount of puff and BS, it how they will get clients off Oracle backends
I imagine sap have hurt every time someone buys their software and an oracle licence to run it on. They seem to have backed away a little from their crazy marketing BS on hana but Its certainly going to be lucrative for those that nail it. I know at least one IT director who wants hana for his cv as there is zero logic behind his business case and his package selection process was the most contrived I've ever seen. The same director asked for cvs of people with 3 years experience on a technology that's only been in general release about 18 months!