Showing posts with label LJC. Show all posts
Showing posts with label LJC. Show all posts

Wednesday, 9 June 2010

The Modern Java Developer

Hi all,

Here's a brief synopsis that a colleague of mine (Ben Evans) and I have been thinking about for sometime, and we're curious to hear your feedback if you think you'd like to hear about some of the themes within this synopsis at the 2nd LJC Unconference.

"The role of the Java developer is undergoing a period of immense change - challenges such as manycore processors, new approaches to concurrency and a wealth of new languages (including functional and dynamic) on the JVM are redefining the nature of Java projects. The core SE/EE APIs have been supplemented by a large and growing body of additional material and technologies which the developer must know.

Some of the upcoming new Java 7 features - including closures, invokedynamic and standardised dependency injection tackle some of these challenges.  But it's not just core language updates that matter anymore, there's also been a change in the modern Java project lifecycle with a host of common tools and practices a developer will now be expected to encounter (largely borrowed from the Agile world).  Lastly, there are new JVM languages which are gaining in popularity and which the developers may expect to encounter on future projects."

Do people agree with the synopsis above?  Are they finding their Java projects changing to a new model?

Feel free to debate as I believe we're definitely not there yet!

Wednesday, 19 May 2010

Exciting projects on the go!



Hi all,

This is another mainly Java/Technology related post, although it's more of an overview of what I'm up to.  This is as much to do with getting it sorted in my head as anything else but people have asked what I'm involved in, so here goes:

1.) Reviewing an upcoming book on the Hudson Build Server (a favourite build tool of mine).  I'm definitely behind on helping out on this one, I really need a few solid hours of quiet time to review the material produced to date.

2.) Reviewing an upcoming book on Java 6 certification.  I'm trying to learn as much about the book review process as possible before hopefully co-authoring my own, so that's my main motivation for this one.  I'm still on the fence about certification, I dislike most of it but if it encourages people to study then that's not all bad.

3.) Negotiating (along with a colleague) a book deal with a big tech book publisher, we're getting closer to some sort of a deal I think!  This is the big exciting one for me, I've always wanted to try an author part of book if not an entire one so I really hope we can make this happen.

4.) Moderating on the Javaranch, which is going through a bit of an SEO overhaul at the moment.  I'm also hopefully getting my wife ("a most excellent Graphic Designer" and that's definitely not just according to me) to help give it a facelift.

5.) Community leading two open source projects (PCGen and Ikasan EIP).  These I wish I could spend a few extra regular hours on a week.  PCGen was the project that lead me into Open Source in the first place and the community spirit is just freakin awesome.  No matter how many times I take sabbaticals away from it, I always miss it far too much and just have to go back :).

Ikasan is the new kid on the block that I'm trying to turn into a "successful open source project" as part of my day job.  It's got a great deal of potential, but I need to spend a good deal more time with the community in order to realise it.

6.) Co-organising the London Java Community and the London Graduate and Undergraduate Development Community which currently involves helping organise an Unconference for the LJC and an not yet announced talk for the GDC.

7.) Writing several talks for conferences (sssh it's a secret)

With several of items above, I work with some pretty amazing and motivated people and that's why I pretty much stay involved, it's just plain fun and rewarding to boot!

So there you have it, my tech related life in a nutshell :).

Cheers,
Martijn

As an aside, I spotted the statement "If you want something done, give it to a busy person" on the web a couple of days ago while I was lying in bed nursing a bout of the man flu (which my wife was ever so patient with).  I realised that it holds pretty darn true for all of psychotically busy friends and colleagues that I know, they always seem the most organised and on to it.

Tuesday, 1 December 2009

How to be a Rock Star Developer

Here is the Google Wave text that was taken down by some helpful community members from my talk at the recent London Java Community Unconference.

I plan to expand greatly on this talk with hard examples of the various points, let me know if you've got any useful examples you'd like to add!

Get the Rock Star attitude


  • Be passionate, care about the code
  • Be a leader - look at new approaches e.g. BDD, New JVM Languages
  • Be personable, stop and listen! - The person who directs a project the most is one that is the most effective communicator
  • help newcomers, they give you a fresh perspective - explaining things helps your understanding

Be inspired by the rock gods


  • Don't reinvent the wheel, covers are rarely as good
  • Read blogs and community sites - stuff that is not part of your every day blogs - e.g. Kathy Sierra - high level thinking
  • Stand on the shoulders of giants - smart people have tread that path before, so use their insights

Be part of a band


  • dont code in isolation - everyone needs a team - coding in isolation leads to be lost in your own little world - very few ideas / service that you can build that a team can't do better
  • Talk to the users early
  • The developer who communicate has most influence - many ways to communicate, try do it as clearly as possible to be effective
  • Bounce ideas off others - a wider audience can give you a wider range of feedback than your local team

Play a Fender Stratocaster


  • Do development on a fast PC
  • Use a big tft screen or have several screens
  • Make your environment comfortable

Open your mind


  • Learn how to look up reference material, trying not to learn api's verbatim
  • Read books on development - podcasts, video clubs etc
  • Read code by the experts - many references externally and internally
  • Learn a different type of language e.g. if you work with an OO language, dabble with a functional language, shell script - avoids the Golden hammer

know your studio


  • Learn your ide inside out to be as productive as possible - saves 5,10,30 mins then hours a week
  • Run a continuous integration server - early feedback
  • Use source control - don't lose those songs - big investment bank lost all source code because of 2 primadonas keeping code locally and had a power glitch.
  • Know your OS/Hardware/System Architecture - sockets open, threads, etc

Rehersals


  • Go back and enhance your old code - how do you convince the management - discuss financial impact of leaving bugs / features in the system - continuous cycle of self improvement
  • Get cold hard feedback - dont be too precious about your code - OSS has the source of a thousand eyes - commits go to a committers mailing list so people know what to review and can give feedback early - using patch files - fisheyes - no one writes perfect code
  • At least briefly research yourself before asking others - use google instead of embarassing yourself on a public mailing list
  • Run test suites

Polish your songs before the album release


  • Keep source code neat and tidy (Checklist) - read The Daily WTF website for examples of bad formatting
  • Reduce the simple bugs (PMD, Findbugs and more) - use Find bugs to give you better ways to do things, like an expert on your shoulder
  • Comment you public apis (Javadocs) - if you provide an API define at least what to call and what to return, to otherwise people will not want to use it

Monday, 2 November 2009

Java Unconference

Hi all,

Brief post (I know, haven't updated in ages!) to advertise the London Java Community's first Unconference on the 28th of November! I'm helping organise this one and time permitting I'll also be presenting at a couple of the sessions with juicy? topics such as "How to run a successful Open Source project" and "How to be a Rock Star Developer!".

See http://londonjavacommunity.wordpress.com/ for details of the Unconference.

Hope to see you there!

P.S: For those of you who don't know what an Unconference is, see http://en.wikipedia.org/wiki/Unconference for details.