
December 30th, 2008 by

lukas
Job hunting in London was quite different from other places where I have previously looked for a job. The market is huge, there are literally hundreds of companies looking for skilled developers and tens of recruitment agencies ranging from the “we do it all” to niche players who specialise in certain technologies, domains or methodologies (yep, there are companies who specialise in “Agile”
I’d hazard a guess that there are hundreds - if not thousands - of job seekers in IT in London at the moment.
I have been told by various recruitment agents that 12 months ago the majority of the work was contract work but due to the economic crisis there has been a definite shift to permanent / full-time positions and up to 90% of current positions advertised in London are such. The few contract positions still around are mainly (surprisingly) in the investment finance sector - unavailable to most but the most hardcore (real-time Java, Swing, investment finance guru types).
Given the downturn, there are obviously also fewer permanent jobs going around but a few sectors are still hiring if not booming. Having spent about 2 months closely watching job ads and talking to recruiters I have observed a lot of activity in the following:
- Banking / Finance - a lot of activity - even though thousands have been laid off, the mergers, consolidation & cost cutting initiatives all involve IT systems - many opportunities abound
- E-Commerce - retailers are busy improving their on-line presence, upgrading web sites, adding new functionality (so they can shut physical stores to cut costs) - a lot of front-end & e-commerce work
- Gambling / Gaming - there seems to be an enourmous amount of activity in this sector here in London at the moment - why do people tend to spend money they don’t have in a crisis?
- Telecoms - most of the major telecoms providers seem to have some roles open at the moment. I found that they require high specialisation (i.e. pigeon-holing - sorry, we need somebody with Webwork and Apache CXF and not Spring MVC and Axis) and unless you match their spec exactly you’re unlikely to get an interview.
Having come from a more consulting type environment where every project used new / different technologies, I think the biggest pain was the focus on specialisation. I am assuming this is a result of such a big market. Several interviews I had focused on one or two technologies (e.g. Hibernate or Spring MVC) and if you didn’t know it to guru level then you’re out of luck, regardless of the fact that you’ve worked with a ton of similar technologies in the past. One of the most idiotic situations I had was when a recruitment agent invited me for a “chat” and then handed me a test consisting of 30 questions on the intricacies of Hibernate and Spring xml configuration syntax and told me his clients are looking for Hibernate and Spring professionals.
I used 3 websites to post my CV and look for positions:
http://www.jobserve.com - best interface & search, lots of jobs
http://www.jobsite.co.uk - ok interface & search, lots of jobs
http://www.cwjobs.co.uk - crap interface & very bad search functionality but contains lots of contract opportunities
There is also http://www.monster.co.uk but this site is badly organised, user unfriendly and has few IT opportunities compared to the others and apart from posting my CV on it I have not bothered with it.
Last minute tips:
- CV should be short and tailored to position - for the London market the CV should not be more than 4 pages!
- Refresh your knowledge - prepare before you start interviewing - if you haven’t coded in a while, fire up your IDE and write some code
- Once you start looking - be ready to be technically tested anytime
- Keep track of who you talk to and which companies you get forwarded to - with so many agents it’s very easy to have the same position presented by multiple agencies
- Figure out how far you want to commute - there are many large IT companies in Greater London or within 50km of London (e.g. Reading). Find out whether you are close to a rail link - the trains are more reliable than the tube. (It makes more sense to first find a job and then an apartment)
- Update your CV once a week and refresh it on the job sites - this way it will stay “current” on the site and more noticable to agents
- Follow-up all applications with a phone call - the recruiters get swamped by applications for every job - make yourself stand out from the crowd by having a conversation with them about the position
- Get a good internet connection - Initially I was able to cheaply share a FON connection but hotspots are few and far between in London. Unlike Canada there are very few coffee shops offering unlimited internet and you will usually have to pay for getting online as there aren’t many other options for when you’ve just arrived..
Looking for a job is a full-time job in itself so don’t get discouraged and let me know how it goes.
Good luck!
Posted in software development career |
2 Comments »

March 20th, 2008 by

lukas
I’ve been spending quite a bit of time doing systems design with the help of component diagrams this week. I used to draw component diagrams as a bunch of simple boxes with a few interconnecting lines to show “relationships” between sub-components and call them high-level component diagrams. I was therefore quite surprised by - when done properly - how much additional information can be captured in this type of diagram e.g. for our SOA project we can show details of specific interface points between components.
As this is a new project we’re using the top-down approach to design. We have 2 remote teams designing separate but very interconnected parts of a fairly complex SOA system and the teams create and share the component diagrams for the individual pieces to help both sides understand each other’s designs and make sure everybody is on the same page. It’s working well. Design inconsistencies are spotted quickly and misunderstandings are avoided as we peer-review each other’s diagrams. We all prefer drawing boxes and arrows rather than writing copious amounts of text and diagrams are easy to update so the cycle is quick and productivity is high.
For modeling we use Borland Together Architect (finally something that knows UML 2.0!). Deliverables of our design phase can be either JPG exported diagrams or the entire Together Architect workspace as is. This is fantastic as we don’t waste time creating those of-little-value 100-page documents based on some 50Mb template which no one reads anyways and they are outdated the moment you start development.
With Together Architect I can take this whiteboard drawing:

and convert it into this in about 10 minutes:

I have used the following articles as reference during the component design stage:
As you start working with component diagrams you’ll quickly realise which things make sense and which don’t. Maybe it’s not necessary to show the DAO classes as a component on every diagram. Maybe indicating only a single type of relationship is good enough for this design and leaves it less cluttered. I believe that there is no right or wrong way of creating these diagrams. Different projects will have different requirements with respect to detail, types of components you want to show etc. As long as everybody on the team has the same understanding of diagram semantics and the diagrams are shared and reviewed across the team your project should get the maximum benefit of this stage of the design.
Posted in software design, software development career, programming |
No Comments »

February 16th, 2008 by

lukas
One of the most important things when developing software is having a fast code-deploy-test cycle. To be a great software developer you not only have to be smart you have to work smart and speeding up this phase is key. A combination of a good integrated IDE (I always use the latest version of Eclipse), quick deployment capabilities for your server - possibly integrated into the IDE, a strong focus on unit testing and a LOCAL development environment all combine to provide a quick turnaround of this often very time-consuming phase.
On my latest engagement I was quite shocked to see some developers working in the Java Eclipse IDE but not understanding build-paths or project settings so they would edit the code in the IDE but build the application from the command line using maven. Then deploy the ear file on a remote Weblogic server and have to ssh to it to look at logs etc. while testing remotely (!!). Although it took me the better part of 2 days to install the software and get the complex development environment configured on my LOCAL machine, when it was done, I could code a change, deploy it on a locally installed Weblogic server and test it locally - all in under a couple of minutes. The time saved over the course of an entire project is well worth the initial couple of days outlay - not to mention the frustrations that you spare yourself when you deploy and test and realise you put that debug statement one line too far below and you have to repeat the whole cycle just to move it.
This also applies to the development of your blog and personal website. I have until now been using the Wordpress provided admin interface to edit files on this blog. This turned out to be painful so I downloaded the entire blog code to my computer and whenever I had to make a bigger change I would edit the files locally (I use the free PSPad) and upload them to the server to see whether the changes worked. This was still slow going - especially if you are making lots of tweaks and also - like myself - are still learning both php and javascript.
I found XAMPP. Apache, PHP, MySQL all in one, easy to install package.
- Download the appropriate XAMPP version from the site above.
- Install on local machine as per instructions. (e.g. in C:\xampp)
- If you have an existing MySQL server it will be used instead of the one that comes with XAMPP - make sure you change to your database login details in C:\xampp\htdocs\xampp\mysql.php
- Start Apache and MySQL from the supplied XAMPP Control Panel.
- Copy your entire blog/website (e.g. blogsite) directory files to C:\xampp\htdocs\blogsite
- Run your website by going to http://localhost/blog/blogsite
- If running Wordpress it will prompt you to recreate the tables when running for the first time.
- You will need to log in to the admin console to change to your theme - since the configuration of this is also stored in the database.
That’s it. You will now have your entire blog on your local machine. (NOTE: your blog posts etc. will of course not be migrated since you’d have to download the entire db schema and data and upload it into your local database)
You can do any development and testing locally - which will give you a much faster development turnaround time. Once done, go live by uploading all changes to server. You’re on your way to iterative development and eXtreme programming
Posted in software development career, blogging, programming |
No Comments »

February 14th, 2008 by

lukas
I went for a job interview today for a Software Architect position. It was at a product company and they were looking for a Solutions Architect rather than an Enterprise Architect (many places don’t distinguish between the two). It appealed to me since I have been involved in a number of projects which I had to take through their entire life-cycle - from requirements gathering, architecture, design and development right through to testing and deployment. I am therefore more familiar designing architecture for smaller components (vertical architecture) rather than enterprise-wide solution architecture.
For reference, this is a quick summary of what questions I was asked - specifically relating to the Architect Role. (Note: although this company used Java/J2EE the questions were fairly technology agnostic)
- Based on one of your last projects explain what your approach was and the processes you used in the architecture phase.
(e.g. describing steps in creating the Software Architecture Document (SAD), deliverables of this stage of the SDLC etc.)
- List some examples of OO patterns and describe when they would be used.
- Take a pattern (in this case the Adapter Pattern) and draw up a class diagram of how a client class might use such an adapter.
- Differentiate between the following relationship semantics in a class diagram and what they mean to object life-cycle:
Hint: association, aggregation, composition. See this JavaRanch explanation.

- Is the following a logical or physical data model and why:

- On use cases - what does a use case represent. Explain the various symbols in a use case diagram. What are the main 2 use-case relationships and what do they mean in a systems context.
- Given an application (This pertained to their application - I was given an overview of components and functionality) what are the areas of potential performance bottlenecks and what are some of the ways these could be addressed?
- Explain the various transaction levels for declarative transaction handling. Draw up 2 different rollback scenarios and explain when a rollback could occur (i.e. on what type of exceptions).
- What do you see the role of an architect to be?
- How does an architect work with BA’s or the customer? What should the architect’s responsibilities be with regards to the development team?
I think this is about it. There were also a bunch of standard interview questions such as “Where do you see yourself in the next 2 and 5 years” etc. I’m not going to list these since they are pretty generic across all roles.
These were quite typical architectural level questions - high level without going to much into technical details - focusing mainly on the ability to model and represent business problems.
Has anybody experienced any other common (or not) questions asked at an interview for a Software Architect role?
Posted in software development career |
1 Comment »