Jan 9–15: The Jobbening begins for real

Surprise Ruby Test, some Java snippets and how to get a free PluralSight Subscription

My first Tech Interview Fail!

I interviewed at the Makers office with a Kentish Town-based consultancy called Softwire, who are looking for two new recruits. They sound pretty much exactly what I’m looking for: great on-boarding, smart teams and a roster of awesome clients including the BBC. They seem to attract a fair few CS grads from Oxbridge, which is either a good or a bad sign, can’t tell.

Unfortunately I was given no clues at all on what to prep for, so I assumed it couldn’t be that intense. But in the end I got a real curve ball. Rapport-wise it was going great — but then my interviewer, a friendly lead dev called John, showed me a rather elegant algorithm with all the variables named generic foo values, and asked me to tell him what task it might perform.

The gears in my brain splintered. Painful, sweaty silence ensued as I tried to remember everything I knew from doing Ruby Katas all those weeks before. It felt like a long time.

I can’t even remember the code any more, but it contained three loop statements, each conditional on the last, that after some extra lines moved a counter forward. Each involved a division by 20, 10 or 5, which was obviously a reference to banknotes, but I just had no idea what it was doing to them.

Eventually John explained: it figures out the number of permutations of 5, 10 and 20 note combinations you can make from a given integer of currency. Even when he explained the code to me and asked me to clean it up, I was still struggling to process exactly how the logic worked.

Thankfully there were also some more familiar challenges — the Gilded Rose being one of them, which I wasn’t asked to solve but to just explain how I’d go about it — cue enthusiastic flurry of design pattern and ruby testing jargon.

Even so, I felt very exposed. I tried to make the most of it and asked for John’s advice on how to get better at this kind of thing. He said it’s important to just practise, especially with my lack of a mathematical/ engineering background. Which was the first time that’s really been described to me as a limitation.

Learning to be a developer has two important dimensions: there’s the knowledge aspect, the learning of individual languages/frameworks, their syntax and how to use them... and then there’s the logical problem-solving.

The latter is also about knowledge, of course, but it’s more about extended concentration: breaking things down into smaller components, weaving and twisting multiple variables around in your head simultaneously.

I’ve been putting off this side of things because I got slightly complacent, thinking I had it nailed from studying Chris Pine and all the creative puzzling I did in advertising before.

And I suppose because the latter stages of the course were all about building simple apps in new frameworks — and there’s just always seemed so much to learn language-wise, so much I need to go back over.

But this experience shows I need to strike a balance, and spend far more of my time stretching the logic muscles. So I’m grateful for that.

I got a free Pluralsight subscription

Some genius on Slack pointed out you can get 3 months of this professional training site as a free benefit of setting up an account on Microsoft Visual Studio (also free).

This article explains all…

And I used it to pick up some basics of Java…

I had no exposure to Java at Makers, and didn’t think much about it until I spoke to a series of developers who’ve made their careers in banking, and made it sound quite cool — it’s specific and comes with lots of tools for manipulating data to save memory, which make it highly performant and scalable.

When I saw the Sky job being offered to students who could complete their tech test in Java, I decided it couldn’t hurt to try. And though it has a lot of new concepts to master and is quite verbose by contrast to what I’ve done so far, it’s not all that bad!

A few things I picked up from the Java Language course on PluralSight...

When you declare variables, you have to specify the type of data they contain.

And there are quite a lot of data types! For example, a decimal number can either be a float or a double, based on the size of the memory they take up.

Other than that, the syntax looks a lot like JavaScript

The class declarations, curly brackets, conditionals all look refreshingly familiar.

public class Conditionals {
public static void main(String[] args) {
if (1 < 4 && 0 > 5) {
System.out.println("You ordered a cup of hot, mint tea.");
} else if (21 <= 19 || 17 >= 28) {

System.out.println("You ordered freshly squeezed orange juice!");
} else if ( !(true == true) ) {
System.out.println("You ordered hot cocoa!");
} else {
System.out.println("You ordered a cup of Java!");
}
}
}

Switch statements — also similar.

char answerChoice = 'C';
switch (answerChoice) {
case 'A': System.out.println("You answered: " + answerChoice + ". Please try again.");
break;
case 'B': System.out.println("You answered: " + answerChoice + ". Please try again.");
break;
case 'C': System.out.println("You answered: " + answerChoice + ". That is correct!");
break;
case 'D': System.out.println("You answered: " + answerChoice + ". Please try again.");
break;
default:
System.out.println("Please select a valid answer choice.");
}

In for loops there’s a shortcut involving a colon:

float[] theVals = { 10.0f, 20.0f, 15.0f };
float sum = 0.0f;
for(float currentVal : theVals) {
sum += currentVal
}

Immutability

In the code below, you assign a string to one variable and then that variable to another variable. Are they exactly equal?

String s1 = "I Love";
s1 += " Java";
String s2 = "I";
s2 += " Love Java";
System.out.println(s1 == s2);
=> FALSE

No, because they’re assigning the string to two separate memory spaces.

The equals function

If you just want to know if they contain the same value, the equals function will tell you.

System.out.println(s1.equals(s2));
=> TRUE

Interning — assigning a subject to the exact same space in memory

The fact that s1 and s2 have the same value but are taking up two spots of memory could be a performance problem. But it’s solved with the intern() function — this assigns it to the same spot.

String s3 = s1.intern();
String s4 = s2.intern();
System.out.println(s3 == s4);
=> TRUE

For now I’ll continue learning Java at a slow and steady clip, see if I really take to it. If I go for a back-end heavy job it’ll be very useful to have a head start.

I went to my first Makers Hardware Night!

I haven’t touched a breadboard since I was 15 during GCSE Electronic Products.

At the time, after a disastrous experience trying to make an automatic fish feeder with a stepper motor and an arduino, I didn’t think I ever would again. But now that I can code and am 12 years wiser, I decided to attend with fresh vigour and actually had a great time!

Following beginners’ tutorials I got a potentiometer hooked up with the correct resistor to an RGB LED and built my own mood light. The code that runs on Arduino is apparently C++, so that’s another one I’m adding to the heap! Next stop: C4 Explosive (Jk).

The Makers Careers Fair!

I always wonder about the casual, uppity use of the word ‘fair’ in this context, since the atmosphere at similar events I’ve been to has been less afternoon-tea-on-the-village-green and more akin to a Darwinian scramble over the last scraps of food in a starving refugee camp.

But full kudos to the careers team for bringing this bonanza of a day together: enough great opportunities, and enough networking time afterwards, that everyone got a chance to chat to plenty of firms they liked.

I’ve applied to four: a Finance Technology consultancy called Digiterre, who said they’re looking for coders with design backgrounds(!)…

..Compare the Market, who have a really varied position available involving coding, testing, architecture and even cyber security…

Kingfisher Digital, a holding company for DIY stores across Europe who are building their own startup culture in an office in Shoreditch to disrupt their own business model…

And the Financial Times, who are looking for just one JavaScript whizz to bolster their digital graphics team. Which feels super topical, signing up to fight for quality journalism!

By the way, on the issue of Economics, get this book if you’re interested in understanding the fundamentals through a fun illustrated history of the subject.

I re-read it recently and it’s truly amazing. From the birth of banking to the Great Recession, it explains everything in really straightforward terms.

Wish I’d had it at A-Level.

Show your support

Clapping shows how much you appreciated Lawrence Hunt’s story.