I’m now entering the sixth week of my time at Trainline. It’s been quite the experience, due to it being my first full-time job and it being a time of significant changes at Trainline in terms of technology, branding and even an expansion into the European rail market.
It’s been great to be in a team of people who know so much about Software Engineering and the systems in use at Trainline, and whom are so willing to pass that knowledge on. I’ve also been blessed with some really cool projects to work on at the start of my trainline career. The first thing I was tasked with doing was replacing the standalone Best Fare Finder application, with deep links to an improved Best Fare Finder experience which was already built in to the main ticket purchasing flow.
The Best Fare Finder allows you to find the cheapest tickets avaliable between two stations if you’re willing to be flexible on dates and times of travel
The Standalone BFF, pictured above, wasn’t responsive; didn’t look like the the newly rebranded trainline homepage and purchase funnel and required additional maintenence. Removing it and using the best fare functionality baked into the main purchase flow improved the experience for users and reduced the costs, both financial and of technical debt, to the company. The inline best fare finder which replaces it can be seen below:
The pictures of popular locations you can see in the screenshot of the homepage, or Roundals as I’ve started calling them (inspired by the name of the famous Tube logo which is a similar shape), had to be updated as part of this work. This was quite exciting as it meant that within a week of my first job I had pushed a change, albeit relatively minor, to the home page of a website with millions of visitors a month. The deep linking I developed for this inline BFF is now also used in Trainline emails to customers.
As part of doing this work I discovered that some parts of the Best Fare Finder backend were a bit difficult to work with and that access to useful information could be greatly simplified leading to a reduction in the number of places in which static data was manually updated by humans. I proposed that a RESTful API was developed with some easy to understand endpoints that delivered a JSON response.
My development manager and product manager were supportive of the idea and therefore I started working on a set of requirements and use-cases for the product, which I simply called BFF API (Best Fare Finder Application Programming Interface). The resulting system is written in Node.js 4 — making great use of all the new features of ES6 such as block scoping, destructuring and arrow functions — Hapi.js and an assortment of the libraries avaiable from npm.
It is unlikely that this system will be made user facing itself, but it may contribute to some of the things a user can see from the backend.
I’ve learned rather a lot in the last few weeks: including the business and technological processes involved in developing enterprise quality software, how to navigate through and modify/maintain legacy systems and some more about the Node.js ecosystem. Expect a blog post in the new few weeks about how I’ve changed the way I develop Node.js code in order to aid correctness and the ability to tests things.
Whilst some parts of the transition from academia to Real Life™ have been difficult to get used to (what is waking up at 7am and commuting?!) overall I’m enjoying the new experience and feel like I’m learning as much or more than I was at university and being paid to do so — the best of both worlds!
I will keep the blog up-to-date with my progress at Trainline.
Last week I submitted my thesis, workshop report and conference presentation for my MSc in Advanced Computer Science. Two days after my submission I was also required to present my research and answer a few questions fielded from a lecturer in Yorks Department of Computer Science who had not previously seen my work. The video shown above is the one which will be used to mark my presentation and question answering skills.
Having completed the three deliverables and the presentation my research semester, and thus my masters, is complete.
I expect to find out my final result in 4 to 6 weeks, however currently I am more focused on my impending start at Trainline — which I hope to write about soon.
When you design software you usually have a few use cases in mind, in the case of EpsilonGit the use case I keep coming back to is a project lead who wants an overview of how his team is working and how they are using their version control software.
A short while later I made a few small adaptations to package the orrery as a Windows Store (now called Universal Windows) Application. I thought a few people might enjoy watching the planets go around the screen, but didn’t really expect too many people to download it. To be completely honest, I mainly packaged it as an app to get points for the App Builder Rewards competition.
I haven’t touched the orrery, packaged as Solar System Simulation on Windows, for years. However, I wrote a little while back about someone who used it to teach their daughter about space, an unexpected use but a nice one.
Today I got an email from a student in Brazil who wondered if the software had a function to see planet locations at specific dates, as he liked the simple 2D graphics and wanted to use them to make a tattoo of the layout of the solar system on his birthday. Strange, but cool.
Unfortunately the Solar System Simulation (which is a gratuitous name — its in no way even close to a ‘simulation’) doesn’t support this function — but its a cool idea, and one I wouldn’t have thought of.
It might be fun to add it in one day, and see how popular some of the ideas I have would be compared to those that a user has had and wanted to be implemented enough to go to the effort to email me about it. I suspect the user submitted ideas might be more popular, because no one knows how well a customer users your product as well as a customer. But I might be wrong, it could be an interesting bit of research.
So, expect the unexpected uses of your software and services — both in positive ways, such as odd-but-exciting use cases, and negative, such as malformed input — but also be excited by the prospect.
P.S ‘Solar System Simulation’ is still available and works on Windows 8, 8.1 and 10.
Last week any Microsoft Student Partners who wanted to continue to be in the programme for the 2015-2016 academic year had to reapply, as I will be graduating in September I of course was unable to do so, bringing around the end of my time as an MSP.
I’d like to take this time to thank Phil Cross, Paul Lo, Ben Nunney and all the others who made being as MSP both great fun and really rewarding. I’ve posted about some of the cool stuff we got up to before:
- Imagine Cup
- North European MSP Summit
- MSP UK Summit
- Appy Christmas
- Campus Party
- Developing App Builder Rewards
Whilst we got a lot of cool perks like endless free Windows Phone and Windows 8 devices, this paled in comparison to the opportunities of travel and honing our skills both in presenting and dealing with people and in programming and development.
If you’re thinking about becoming an MSP — go for it. You’ll be afforded a lot of opportunities the average student just doesn’t get, which both you and future employers will love.
One of the questions I had to answer for both myself and interviewers was “What do you want to achieve in your first job?”. My answer was always a quote I read on a blog by a programmer hero of mine, Jeff Atwood. He said you should, as a junior software engineer, “endeavor to be the dumbest guy in the room” which simply means place yourself around intelligent experienced programmers and learn! This is what I wanted to do and I’ve been fortunate enough to be hired by a company that has an environment that will allow me to do that – thetrainline.com.
thetrainline.com sells train tickets in the UK and Europe both from its own website and by providing the software for Train Operating Companies such as Virgin Trains and First. They operate out of an office in Farringdon, one tube stop from London Kings Cross station.
I start in late September and honestly cannot wait to learn and earn with them. My official job title will be “Agile Developer”.
A big thank you is in order to Teck Loy Low who I met on The Hacktrain and subsequently put me in contact with thetrainline. If this isn’t a good advert for getting yourself involved with hackathons and the like I don’t know what is.
My CV – This only gets you the interview, you have to do the rest
It feels like yesterday, but it has now been 50 weeks since I graduated from The University of Hull. I know this because its my Birthday in 2 weeks — and theres the small matter of Charlotte graduating (Well done!). The ever-accelerating passage of time has meant that in recent months I have turned my attentions to planning out what I intend to do once my MSc is over.
This blog is primarily written for me to look back on in a few years and hopefully say “look how far I’ve come” or quite possibly ask where it all went wrong from here. However, it may include some useful tidbits of information for future graduates looking for jobs.
My job hunt started when a company well known for their search engine approached me offering me an interview for a Graduate Software Engineering position in either Mountain View or London. This was exciting. I was invited for a final interview having completed a telephone interview with an software engineer/team leader. At this point I had to decide if I wanted to work in either London or Moutain View — opting to work in Moutain View meant that my interview had to take place within a week due to certain visa requirements — in retrospect I should have waited and gone for the London job with more time to prepare, however the draw of a Californian life-style was too much! I can’t actually write about what I was asked in the interview, however I can say that it was a fantastic learning experience. Anyone who gets a chance to interview at a large tech firm certainly should, even if its only for the chance to better their skills.
In the end I wasn’t offered the job. I was dissapointed but the lady from HR told me I was close to getting it and should reapply in a year or two once I had more experience under my belt. This was both reassuring and something nice to work towards.
Around the same time as that interview I was engadged in a process alongside Dr. Dan Franks to apply for funding for a PhD program, in which I would work on an Evolutionary Computation project dealing with issues of crowd behaviour in evolved systems and comparisons to the real-world. This was an awesome project and I appreciate the work Dr. Franks put into my application with me. I also appreciate his honesty when it came to discussing whether doing a PhD was right for me at this time in my life — in the end I came to the decision it wasn’t. Whilst I love research and doing new and exciting things I was more interested in getting my teeth into some real-world software engineering projects and improving my skills in that area. I hope that a PhD is something that I come back to at some point later in life. I was offered the PhD on a full stipend and fees paid, but turned it down after a lot of reflection.
A few months passed as I knuckled down on the last few modules of the taught portion of my course but now, as I wrote previously, I am in the research semester of my Masters Degree — whilst this is in some ways no less busy than the taught portion of the course it does have the advantange of being a period of time in which I don’t have to be physically located in York for anything other than a weekly supervisor meeting — this has given me the oppertunity to go job seeking again.
Without enumerating over each interview process I’ve gone through over the last 3 weeks, because there been rather a few, I want to make the following observations:
- You will probably recieve a few emails thanking you for your time but informing you that the company doesn’t wish to move ahead with your application. A few rejections in a row can get you a bit down, but…
- There are many reasons for not being offered a job. As many, if not more, than there are to be offered one. It could be something as simple as not being as enthusiastic about their technical platform as you are about say, Node.js. So don’t take anything personally and behave professionally, don’t take it to heart.
- Doing interviews will undoutedly make you a better Software Engineer. After a few weeks of Data Structure, Algorithm and Software Architecture questions coming at you in a high pressure environment you’ll notice how much your thought processes have changed and how much you’ve improved.
- Attending interviews is a great way to discover if you think you could handle commuting every day. In the past 2 weeks I’ve travlled over 3,000 miles doing interviews (York to London return is 431 and a half miles). I came to the conclusion I could, quite happily, travel a (shorter) distance each day
- You will know if you would work for a company within an hour of being there. I remember one interview in particular where I knew very quickly there was no way I would want to work there (the best thing to do in this situation is continue as normal and be professional). Other times you’ll experience what you percieve to be your dream work environment. Remember, you’re interviewing the company just as much as they’re interviewing you. You’ll be spending 8 hours a day there, 5 days a week for the foresable future. There are plenty of CS jobs avaliable so make sure you get one which is good for you. If you like a job that also means you’ll work better for them, so its good for them too if you turn down a job you wouldn’t love.
- Every company interviews in a slightly different way. I personally found a mixture of programming on a PC as well as ‘whiteboarding’ data structure and algorithms gave me the best environment in which I could show what I percieve to be my skills. Some companies only do one, or the other, which is a shame.
- You should read “Code Complete” and “Programming Interviews Exposed” and brush up on your Data Structures and Algorithms before going to any interviews (I wish I’d done this before going to that search engine company), you’ll thank yourself for it.
- Companies love enthusiasm. Proving you’re enthusiastic about Computer Science is quite easy, especially if you have a blog like this one, however as quite a stoic person I found it hard at times to show enthusiasm for a companies product — especially if that product was not public facing and therefore I’d never had a chance to use it. I’m not really sure what to say or do to help these situations.
- You will be asked about anything, no matter how minor it is, that is on your CV. Fortunately everything on my CV is true so it wasn’t too bad, I can only imagine how hard it is if it isn’t.
- There are some questions you will be asked by every company. You should work on refining your answers over time. The two I got asked everywhere were “Why don’t you have an A-Level in Maths?” and “Why did you decide to do a masters degree at York?”.
Just yesterday I formally accepted one of the 4 job offers I had received in this process at a fantastic company, for whom I’m very excited to be working for. I’ll write more about that in my next blog post!