How to be a Cowboy Developer 101

Cowboy Developers

These are the simple steps you’ll want to follow if you want to hold a company ransom through their own technology!

1/ Indentify a Host Company and acquire a position as either the only Developer in the company OR find a position where you are the only Developer on a project and the company oversight doesn’t understand technology and can be easily bamboozled.

2/ Develop a system that is so fiendishly complicated that only you can support it.

3/ Position yourself as the guardian of your host company’s technical future and demonstrate your indispensability by sabotaging the recruitment process of new developers and undermine any attempts from colleagues to actually understand how your program works.

4/ Extract your financial price from your Host Company! This could be a “job for life” or an outrageous day rate. And remember! you have them by the balls, SQUEEZE!

Tips for Success:

  • Try writing the program in one language but only write it using the conventions of another, older more low level language
  • Choose a completely outdated or obscure programming language and software suite (explaining that its the best solution for the Host Company’s needs)
  • Over-engineer the architecture of the core business functionality into such an illogical set-up, that even if they do hire new people, no-one will want touch to it. They can easily build new services on top, but touching the core functionality will be too “dangerous”
  • Hold your nerve!

Where technology companies are based in the UK

A number of my clients have recently been telling me about new offices they have got or recently opened in other parts of the country. Having up until very recently lived in London (and never dreamed I’d ever live anywhere else), now that I have moved out, I was quite interested to see where the other tech hubs in the UK were, using techbritain.com my results were quite surprising:

London: 2,467

Manchester: 212

Reading: 205

Birmingham: 183

Edinburgh : 118

Newcastle: 106

Cambridge: 105

Brighton: 90

Cardiff: 80

Sheffield: 64

Leeds: 57

Oxford: 53

Bristol: 33

Southampton: 24

UK tech company distribution

How to pronounce the name “Maciej”

That’s right, it’s the name on everybody’s lips right now “Maciej”. But how should it be pronounced?? I’ve spent the last few years oscillating between either “Mat-edge” or “Ma-see-edge”, however I went out for beers the other night with a charming holder of this stalwart of Slavic names, “Maceij” and I was delighted when he put me right once and for all.

MATCH – EY

So hopefully, with a bit of practice I’ll never get it wrong again 🙂

CV Driven Development (CDD)

CV Driven Development (CDD) is a software development process which prioritises design and development choices that will enhance the implementing programmer’s Curriculum Vitae over other potential solutions, regardless of how rational that choice is.
The origins of CDD are lost in time but it is widely believed to be a common practice throughout the commercial programming world, dating back to the very earliest days of professional software development.
CDD is most commonly pursued as an informal, grass-roots lead practice, however there have been a number of well documented episodes when in times of economic or “bonus-hardship”, CDD has been management lead as part of a wider “staff retention” initiative.
See also: Mortgage Driven Development
CDD - CV driven development

If Simon Cowell followed CV Driven Development

Early 2015 technology market update

A new client of mine recently asked me to provide an update on what’s happening in the development and technology market right now, so I thought I would share it here. Comments in the comments please:

The introduction of the HTML5 standard has precipitated the rise of the OO Javascript, Javascript frameworks (Angular, Ember) and full stack Javascript (NodeJS, Empress, Angular) developer skills. These skillsets are now commonplace in the contracting world, although developers with greater than 3 years solid experience in pure Javascript development is rare as the language has not been used in its present sophisticated form for longer than this time.  The Angular, Ember and NodeJS frameworks are not older than 3-4 years. Prior to this Javascript was almost exclusively used as a “toy language”, one to be used in conjunction with an OO language like Java, C# or PHP on the front end.  Consequently there is a large skill shortage in this area, so we have seen all the usual signs of a hot market – other developers hurriedly converting to this language, most of the supply is contract based, developers coming from overseas to fill the skill gap, permanent salaries are outstripping like for like with the standard OO language developers. Many of the enterprise scale companies have attempted to solve this supply problem by creating their own Javascript expertise through graduate schemes.

The Ruby, Python and Javascript languages are the development languages of choice for start-ups.

Some banking bonuses have recovered however most of the top investment banks appear to be planning to pay a low or zero bonus again this year.

Big data technologies continue to revamp the Business Intelligence industry with Hadoop, Mark Logic, MongoDB and AWS  leading the way. Handling data in general is a big  trend in the market and therefore we also seeing a new cadre of developers who are interesting in specialising in C++.

The internet security market continues to grow as more and more awareness of security vulnerabilities are exposed. We see this is a large scale trend in the technology recruitment industry.

Scala and other functional languages are today, less “the next thing” and are now far more mainstream. It appears that the hype over the past 4 years has not materialised into Scala pushing any of the major development languages (Java, C#, C++, PHP,  Python Ruby, C, Objective-C) off of the top most used positions.

We now see web specific languages and frameworks far more frequently on  developer CVs than previously, reflecting the general buoyancy of internet-based eCommerce business, e.g, Ruby on Rails (RoR), Grails, Django, and C# MVC.

Mention of the Agile methodology appears to have become compulsory citation for developer CVs.

DevOps continues to be a hot market with supply generally not meeting demand. Much of the market is therefore contract based or the skillbase is more recently acquired skills. DevOps generally refers to a deployment manager who can manage the deployment of  software applications onto cloud-based servers. The programming / configuration languages of Puppet and Chef are therefore hot technologies right now.

Developers based in the UK are expected to have an ever increasing amount of contact with the business that their applications support, leading to an ever increasing demand for developers with good communication skills.

In the last 6 months to a year, we began to see greenfield projects begun in the finance sector that were designed to generate revenue rather than satisfy regulatory requirements. This was in total juxtaposition to the proceeding 4 years.

In the past 2 years we’ve also seen an increased appetite for developers to consider working for a software vendor when considered against working “inhouse” for a large corporation.

London continues to attract large numbers of developers who are not based in the UK. Many of the European developers now being attracted are Spanish, Portuguese, Italian or Greek. Typically candidates from the Southern Mediterranean have strong national accents and poorly suited to analyst or client facing roles. The high cost of living coupled with improved salaries means immigration from Poland, Czech Republic and the Baltic States has dramatically slowed down. We are seeing some developers come from Romania and Hungary following the recent lifting of immigration restrictions, however the established nature of the IT markets in Bucharest and Budapest and their relatively decent standard of living means that the bright lights of London are not that attractive.

Finally we believe we are at the very earliest days of what will be a major trend over the next 5 years which is the “internet of things”. This is the industry devoted to connecting non-traditional computer platforms via the internet (such as your car GPS system to your home’s central heating system and making your house warm up before you arrive home in the evening). At the moment British Gas’s Hive product is the highest profile operator in this exciting new industry.

 

This graph showing the popularity of each programming language in the market is very interesting: https://image-store.slidesharecdn.com/9495a4a0-2db2-4245-b712-0e313264e54b-original.png

Idiot’s guide to writing a CV

– FOR TECHIES ONLY –

Idiot's guide to writing a CV - example

Getting writer’s block sprucing up your CV? Try this fool proof technique:

FIRST LINE:

State the name of the company and what dates (MM/YYYY) you were from and until.

SECOND LINE:

State your job title.

THIRD LINE:

Say what challenge your team was tasked to solve, in one sentence.

FORTH LINE:

Say what the solution to that challenge was, in one sentence.

FIFTH LINE:

Say how that solution was implemented and what technologies were used to implement that solution.

SIXTH LINE (if appropriate):

Explain how you took ownership or responsibility for anything.

REPEAT FOR EACH JOB YOU HAVE HAD / REPEAT FOR EACH PROJECT YOU WERE A PART OF.

A rough guide to the Italian University system

Or, “how to understand what your Italian developer’s degree actually means”

LDV with big data on his mind

An Italian academic with big data on his mind?

There are numerous Italian developers in London today, for many years there was a steady trickle but since the global recession I think its fair to say that that trickle has increased to more of a steady stream. Italian developers tell me they come to London seeking better opportunities, the attraction of working in a global city being one thing, but also being a part of the vibrant tech scene that we have here as well.

Speaking to my clients however, and there is not a great deal of knowledge in London about what the top IT universities in Italy are and how the system of final grades works.

How does it all work?

In a similar way to the system in Spain, in Italy it’s common to go to best University closest to your home but if you get outstanding grades then you might travel to a university further from home. So if you live in Genoa, and you’ve got good grades and a real passion for Software Development, its probable that you’ll want to go to the Milano Politecnico or the Politecnico di Torino.

In terms of the “best” universities in Italy, there are universities that are prestigious to attend and there are universities that teach Computer Science to a high degree of excellence.

Of the top IT universities for IT in Italy, there are 3 Politecnico’s :

  • Milano Politecnico (the largest technical university in Italy)
  • Politecnico di Torino (Italy’s oldest technical university)
  • Politecnico di Bari

And 3 other well established universities that have excellent reputations:

  • Universita’ degli studi di Pisa
  • Universita’ degli studi di Salerno in Fisciano
  • Università degli Studi di Napoli Federico II (the world’s oldest state university)

Rome has two top universities for IT, the Tor Vergata (a public research university located in Rome) and La Sapienza that are worth noting as well. La Sapienza is well-established university and has one of the oldest libraries in the world, it is also the oldest established university offering the Ingegneria (Engineering) type of degree.

The Politecnico at Bari is Italy’s has largest campus at 60,000 students, and has an international reputation for research. In my experience there are a number of excellent graduates with PhDs in big data related subjects in the UK who studied at Bari.

As with the British system of higher education there are a number of more recently established universities which are much cheaper to attend and have a lower entry criteria, and which are typically less prestigious as well. Interestingly however the Tor Vergata University of Rome was only established in the early 90s and has managed to establish a very strong reputation for the “harder” sciences of mathematics, engineering and computer science.

 An “Ingegneria” degree

The number one IT/Computer Science degree in Italy is the Ingegneria which is a type of degree offered by only a small number of Italian universities (mainly those in the list above). An Ingegneria degree can be studied for degrees in subjects such as Computer Science, Civil Engineering, Telecoms, Nuclear Power, Chemical Industries etc.

The “computer science ingegnere” are highly sought after and are generally considered to have a better degree than a graduate with a straight “computer science” degree.

Entrance Criteria

The entry criteria for the top universities in Italy involve entrance exams and achieving top grades at secondary school or scuola superior. All of the above universities have an entrance test on Maths ability, logistical properties and so on.

Final Grade

Graduates leave university in Italy with a score between 60 – 110, and may or may not receive a distinction mark on top, called Lode. Lode is the same as the Latin Laude or Cum Laude, translating as “with highest praise”.

Undergraduates complete their initial studies to achieve an initial mark of at least 60 (60%) and then complete a thesis (which can take between 4 months and 1 year) in order to complete their degree. Once your thesis has been handed in there is a final interview with a commission of professors, including the professor who assigned you the thesis. This consists of a presentation of the results of your thesis  (probably made using Powerpoint, for example) which is then follow by a series of questions about it. When you’re finished, you’ll be asked to temporarily leave the room, so that the commission can discuss and decide which grade to assign you). The final grade is the sum of your initial mark plus the result of how well you did at your thesis, meaning that in practice, very few undergraduates receive a final grade of 60.

Years of study

Degrees taken prior to 1999 took between 5 and 6 years. But today, Italian degrees follow a new system.

In the original system you needed a minimum of 28 exams (the majority of which were written rather than multiple choice) and then a face-to-face interview with a professor in order to graduate. It lasted 5 or 6 years and if you stopped after 4 years you left with nothing.

Since the reforms in 1999, and then further reforms in 2008 Students study for 3 years and then graduate with a laurea breve or a short degree, which is quite generic and doesn’t have a specialism. Graduates then study a specific subject (i.e. Computer Science) for 2 more years for a full degree and graduate with a Laurea specialistica or Laurea magistrale (depending upon the university).

Here is a handy flow chart showing how the new system works:

Newly reformed Italian uni flow chart

What has an Italian Computer Scientist studied?

Speaking to Italian developers already in London many tell me that there is still a high level of theoretical subjects covered and not as many practical courses as some would like to see (in the short degree) in the Laurea Breve. For example the University of Naples has a lot of courses such as Algebra, Physics, Maths, Algorithms etc but only has 6 or 7 exams regarding Web, programming languages and Software Engineering. This seems to be largely because many of the professors in the technology faculties actually come from a Maths or Physics background rather than a Computer Science background. In a Computer Science Laurea specialistica or Laurea magistrale the course is entirely focussed Computer Science. Many young Italians would also like to see English courses become part a degree.