Category Archives: Java

My predictions for the Java development market in 2013

It appears that in 2013 the economy will continue to remain largely flat, with hiring continuing at the same slow rate that we saw in 2012. This year we saw hiring driven largely by regulatory changes, replacement of contractors by off shore and permanent resources, a rise in specific-tendered-for consultancy work and a limited amount of strategic projects driven by long-term, global business decisions.

In 2013 a number of high profile banks will be recovering from regulatory fines levied in 2012 and it looks as if we are yet to see the full fall-out from the Libor scandal. July 2013 will see the new Governor of the Bank of England, Mark Carney take control of Threadneedle street, I don’t know much about his approach but I have heard that he doesn’t like QE and that he is also likely to increase the base interest rate during his tenure.

So not great news to bear in mind during the festive season, but probably no surprise to anyone as no one has really been predicted a massive improvement in the economy in 2013. It is interesting to reflect that when the economy crashed in 2007, there were some hard-to-believe predictions that the economy would take 10 years to recover, 5 years later and it doesn’t look so hard to believe. Saying that I have started to hear that things will look very different in 2014, and that despite any national economic predictions, the City might well do very well indeed…

It is worth bearing in mind that every market has its winners and losers, and some people will be making lots of money this year, so my overall advice to Java developers for 2013 is to get your CV ready, so that you can capitalise on good opportunities when they come along.

My tips for 2013:

THE GENERAL RECRUITMENT SCENE

• Offers have been largely flat this year, so make career choices that will pay off in the long run rather than the short term. Opportunities that will increase your technical portfolio, your business skills or project management experience will all help your career to continue to develop during these difficult financial years

• If you have a want to achieve a big pay rise – say you believe you are being paid about 10 – 20k less than your market worth – you are unlikely to achieve it with one career move. HR and procurement are looking closer than ever at percentage increases on basic salary / daily rate, and large increases are becoming much rarer. So making a strategic move in 2013, with a view to moving on again the year after, will be more likely to get you where you want to be, rather than simply waiting for the economy to pick up in 2014

• Many budgets will continue to remain flat and BAU work will reign. This will make opportunities to work on greenfield projects will hot property

• The contractor share of the developer market will continue to suffer as employers continue to look to make savings by hiring permies and outsourcing.

• 2012 was not a good year for experienced developers in general, be they contractors or permies, with juniors being in especially high demand. I don’t think 2013 will see any change

• Offshoring and nearshoring will continue to increase, with countries like Poland and the Ukraine being the main beneficiaries, whilst Hungary, Romania, Israel, Vietnam, India, Singapore, China and Russia also benefiting. A knock on benefit of this will be continued demand for dev managers with offshore and Agile experience.

FINANCIAL REGULATORY REFORM

This year we have seen more a dramatic increase in stringent regulatory requirements coming from Dodd-Frank, Basel III and the FTT, I think a rule of thumb will be:

• The French Financial-Transactions Tax (FTT) or “Tobin Tax” is threatening to wreck the Euronext market, and therefore much of the UK high frequency trading market, taking a large chunk of UK revenues from FX and equities trading with it

• Basel III will wreak serious damage to the fixed income business, as new capitalisation rules mean many bank’s revenues from fixed income trading will be down

• Dodd-Frank will seriously limit the ability of the investment banks to make money out of derivatives products and exotic swaps (continuing to reduce the effectiveness of the OTC derivatives market)

HOT TECHNOLOGIES

• Java 8 will be released in the summer providing Java developers with the ability to write Lambda expressions into their code for the first time, a feature that has been widely enjoyed by C# developers since 2007. Java 8 will also include the final components of Oracle’s new Rich Internet Application package “JavaFX” which was otherwise released with Java 7

• 2012 now looks like it was the year of Big Data and NoSQL, and I expect both technology veins to continue to do well in 2013. Both were picked up to varying degrees by the financial markets and were largely used for their analytics features in response to regulatory reporting requirements

• Scala is still gaining in popularity with many developers in the City having learnt it in their spare time and 2012 saw an increase Scala projects led from top down. I suspect the trend will continue in Scala’s favour over 2013.

• Adobe’s CQ5 UI suite really took off in 2012 and I suspect it will continue to do so in 2013.

• HTML5 is now practically considered an industry standard and will continue to solidify its position in 2013

• Mobile and web applications will continue to grow in importance in 2013 – I don’t think this market has reached its potential by any stretch. As security measures improve for iOS we will continue to see increased utilisation of smart phones and tablets for business purposes by sales teams, portfolio managers and traders

That’s all from me for 2012. See you in the new year!

QCon is coming…

The next QCon is scheduled for March 2013.

Tutorials are scheduled for 4th and 5th March, Conference for 6th, 7th and 8th March.

The speakers haven’t been announced yet, but if you register before 9th November you can get the early bird ticket price for £1,044… which seems pretty steep to me but I guess in the main its companies who buy the tickets for their employees, or really keen techies who can afford it. If you are neither but want to go you can actually volunteer to help and I think they’ll let you attend some days for free. Either that or there’s normally a free event or too on the last day.

Here is the LINK to the registration page.

Can Oracle keep the Java train on the tracks?

Since Oracle took over Java from Sun in 2009 their management of the Java software suite and custodianship of the programming language has been met with mixed reactions. About half of Java users are generally supportive and the other half seem to be critical. Traditionally the language is extended via new “versions” of the JDK and today Oracle is planning the 8th version of the Java language.

Java 8 is scheduled for release in the summer of 2013 and will include the final components of some of the features that were planned for Java 7 – namely their Rich Internet Application package “JavaFX” and “Project Coin” – and some new features such as language support for Collections and Lambda expressions.

Now it seems that Lambdas will be the interesting part. This feature is the only one of the two originally planned headline packages for Java 8 that is actually going ahead – the other being Project Jigsaw which is now planned for Java 9.

We’ll look at Lambdas in a moment, but so that you have a full overview of what we are talking about lets just look at Project Jigsaw quickly. This feature is planned to enable you to write “Modular applications” in JSE, which should make Java more scaleable and enable you to write Java applications onto small embedded devices like smart phones and tablets (I suppose to compete with Android, J2ME, Objective-C and the like). The reason for kicking this into the long grass is purportedly to ensure that version 8 is released as bug free as possible.

So on the face of it, it looks like Java 8 is going to be a bit of a damp squib. Ambitions have been scaled back and only one new feature is being released. What are they going to release that is going to be new?

Lambda expressions and PlayStation 3

Innovation in hardware has continued down the route of increasing performance by parallelizing computations across “several cores”, moving from a world of single core processors or a multi core world. Remember the fuss about Playstation 3? That was Sony’s move from a single core processor to a multi-core.

Today the corporate world of programming is starting to catch up on that technical lag and a demand has begun for a language that better utilises the performance potential of a multi-core environment.

Enter Lambda expressions and functional programming.

Lambda expressions, or anonymous functions, is a way of writing code that is functionally based. By adding Lambda expressions into the Java suite Oracle is looking to bring into their tent the functional features so far available on JVM with Scala and Clojure. Giving their clients a language platform that is more compatible than the existing JVM variants and utilises the increased performance of a multi-core environment.

Is this new?

Well it is for Oracle’s Java suite. Very new in fact. But in terms of programming, .Net adopted Lambda expressions 5 years ago in 2007 (as a feature of C# 4.0). F#, Lisp, Scala and Clojure already exist and are widely used. Oracle is actually playing catch up here, not breaking new territory.

Language vs platform

At this point it is useful to come back to the divide between the Java programming language and the Java software suite – interestingly Microsoft makes the distinction easier by calling the former C# and the latter .Net whereas with Java its just “Java”. Unlike Microsoft Java has a massive community building Open Source frameworks and features, adding a rich and sizeable driving force behind the language’s development. Oracle owns the software suite but not the language, and it’s from this Open Source space that much of the new functionality of Java has been developed. So Spring and Hibernate are both from the Open Source community, not Oracle. Since 2009 Oracle has “progressed” Java by adopting / absorbing these innovations, so EBJ3 is their version of Spring and JPA is their version of Hibernate.

So what is new with Java 8?

Developers already had access to functional features with Scala – an object oriented language with closures. And they can already write applications on embedded devices using android or J2ME or Objective-C (the point of Project Jigsaw).

Anything?

Well the Lambdas is going to be very well received by Oracle’s big corporate clients. Small companies that use Java have probably already adopted a functional language if they wanted to exploit a multi-core infrastructure, the big players however are less likely to have done so because they are much more risk adverse and for them it makes sense to wait until you get an “official” version that is supported by Oracle.

But to everybody else, Oracle is spending a lot of time and effort standardising what already exits, instead of inventing new features they are consolidating the Java position.

I think the question is not,“Can Oracle keep the Java train on the tracks?” but “Where are those tracks leading?”

By absorbing the advances made by the open source community Oracle is taking Java down a track that will eventually look like this: Oracle don’t own the Java language, but they do provide support for it. By writing each JDK they also determine what features will be compatible with “their” software platform, and it doesn’t take a genius to see that before long they can exclude Open Source features that they now have a version of (JPA and EJB3 for example) and withdraw support for technologies they don’t own. Effectively dictating what is going to be compatible with their platform and what isn’t, finally asserting the ability to control the Java world they purchased in 2009.

Fine, that’s what corporations do – make money from stuff they own – but in doing so surely they are going to push out the Open Source community which is what defines Java from C# and that has for the last 3 years been the only driving force for innovation?

Is Oracle going to crash their own train?

Not quite. I suspect that they will continue to fudge things, potentially pushing out the little companies, continuing to lose support in the OS world but ultimately not withdrawing support for the legacy JDKs because too many big companies (such as the Investment Banks) rely upon OS technologies like Spring and out-dated JDKs like 1.5 and their business is too integral to the income Oracle makes on Java. And Lambdas in Java 8 will be popular with their big fee earners. So we will see increased the capitalisation from ownership… but not world domination.

What good is EJB3 in the financial markets?

I know of only one team that uses EJB3 to build financial software in the London market. I get the impression that Spring did such a good job in the early days at convincing developers that their framework was the best and most accessible framework, that even when Oracle comes out with a modernised, updated framework with “as much” functionality as Spring (EJB3) – that no-one in finance still wants to use it. In fact developers with EJB3 still tend to be categorised as less creative developers who are less interested in the cutting edge Java technologies by many hiring managers – be it fairly or not. From what I hear, much of the Java community actually thinks that Oracle is doing a good job as the custodians of Java (for instance there is a lot of positivity about the latest concurrency and threading packages), but nevertheless EJB3 remains unloved by the financial markets.

In general I find EJB3 cropping up in consultancy work, and therefore its a common skill to find in European developers – an IT market almost totally dominated by consultancies – in the UK, its much less prevalent, although it does have its advocates. For instance whenever I ask the hiring manager for the one financial software shop that I know that does use EJB3, he quotes Superman Spiderman to me (!) and says “with freedom comes great responsibility” – meaning that with Spring you get a lot of creative freedom, but he thinks that not many developers actually know what to do with that freedom. So he sees the formal structure of EJBs as giving technical leads a useful tool to help ensure coding standards in their teams.

So what to do if I have only used EJBs and want to get into the financial markets?

I think it must come back to learning Spring in your own time. These days if you don’t have Spring then you are either an experienced developer who has been working on legacy Java projects that were designed 5+ years ago, or you tend to be from the continent. Either way you are missing a marketable Java framework on your CV. The solution in my experience lies in the fact that hiring managers really value pro-activity and passion for technology in candidates, so if you can learn Spring yourself, and then either get officially certified or build a Spring-based program at home (both is better) then you will have a powerful argument on your CV. It won’t make you a shoe in, but it will make a lot of difference.

 

NOTE: It was of course Peter Parker’s Uncle Ben who gave the freedom/responsibility quote, not Superman. Thanks to Matt for pointing that out. And Mark for pointing out that Uncle Ben was actually paraphrasing Ellie Roosevelt. I suppose that’s what you get when you write a blog for geeks – you get out-geeked!! I’m not changing the pic though. I like Superman much more than Spiderman, I was just disappointed I couldn’t get one of Christopher Reeve.

The difference between OO programming and Functional programming

I had this explained to me in the pub last night… I hope through all the beer I got it right!!

With Object Orientated programming you have objects and to do anything you must ask each object to change itself. So for example if you have a stock and you the value has changed you need to send a message to the object asking it to change its value. Objects cannot receive multiple messages at the same time so a process called “locking” is required to lock all but one of the messages and queue them up so that they can be dealt with one at a time.

With Functional programming the value in question (you don’t have objects) doesn’t change but instead you get new values every time something new happens. (Confused yet – I know I am!) But it does make sense if you take a simple sum: 1 + 2 is 3 right? 3 is a new value. You didn’t ask the “object known as 1” to change it’s meaning to become the same of the value of 3 right? So with Functional programming multiple requests can be dealt with very quickly because each one doesn’t require a fundamental change of the original object’s value.

Clear?

So what? You’re a recruiter.

I know, and I know this is probably so simple that its all wrong but it makes me happy feeling that I understand a tiny bit more about what Java actually is.