Keyart by Kuraberry

My Story

Hello Internet I am Martin

It was a warm spring day in the south of England and I was on my way to the local Computer fair. Walking into to the fair, I was surrounded by tables and stalls piled high with all things computer from Hard drives to CPUs, Printers to networking.

With a crisp £20 note, I was ready to find myself some bargain tech to take home and tinker, explore and learn with. Looking through the stalls, I found a new boxed 33.6Kbps parallel dial-up modem, I hadn’t set out to get connected to the internet but the idea of connecting my computers to others from anywhere in the world seemed exciting.

On a semi-whim, therefore, I bought the modem, and on the way home popped into my local Dixons to pick up a CD for the first free ISP in the UK “Freeserve”. After getting home and getting it all hooked up, the drivers and the Freeserve software installed, I hit the dial button.

The modem made a noise like an electronic canary, and within less than a minute I was connected to the Internet. After completing the setup steps, creating my first account and email address I was on the Freeserve homepage. For the next 2 hours, I was transfixed, exploring this new digital world.

From the moment that I opened the internet browser, and was presented with my first web page (Freeserve’s homepage), I realised this is a revolution. I could access any information on so many topics, I found a place where I could connect to other people like me. There was information on Anime, Games, Music, Movies, Tech and so much more. It truly felt like I could explore a world from my desk, I was hooked.

My First website.

A few months after my personal internet revolution, I realised that instead of being a viewer I could be a participator. Unlike other classic media like Television and Magazines, the barrier to entry on the internet was practically non-existence.

To get a site online all you needed was to learn how to format your page and have somewhere to host it. The hosting was included with my ISP account, so that was taken care of, now it was time to learn the language of the web.

My first step into this world of creating web pages was shown to me by my uncle. He had recently introduced me to a new browser called “Netscape Navigator”. Although the browser at the time didn’t really interest me, after all, it was similar to Internet Explorer in my eyes, it did come with Netscape Composer.

Netscape Composer was a What You See Is What You Get (WYSIWYG) HTML editor. It allowed me to build a simple website in a weekend without having to really understand HTML. At the time I was a massive fan of the Westwood Studios Command And Conquer – Red Alert game. The Game included a map editor that I use to enjoy making my own maps in. So naturally, my first site was centred around Red Alert. It was a very basic One-page site, that included information about the Game, my Tactics and of course my Maps to download.

I uploaded this site to my hosting and was able to show it off to my friends and post in forums. By today standards it was a very simple site, that looked like a child of its time and had URL which was not easy to remember. At the time though that was OK, the World Wide Web was new, we were all learning and experimenting together.

Expanding my knowledge

After my first step into building websites, I was hooked. Web development brought all my interests into a single outlet. I was able to be artistic and a designer, was able to program and use technology, and I was able to share with people the things that excited me.

As you can imagine I carried on building web pages in my bedroom, from Fan sites for Buffy the vampire slayer, to sites telling people how to make sites and a broad range in between. Every time I built something I learned something new, by this time I had left Netscape Composer in the past and had learnt HTML.

What inspired me to keep pushing and learning was seeing what others had done and trying to replicate it. After HTML I learned JavaScript to add interactivity to my page. Then I added this new thing called Cascading Style Sheets (CSS) to my tool belt allowing me to have so much more control over my design.

I came to the realisation to drive my sites forward, make them easier to manage and maintain and to add new and exciting functionality I had to learn a server-side language. By this time I was in college learning computing and IT.

The language of choice for the educational establishment that I was at was Visual Basic. The natural choice seemed to, therefore, be to pursue learning Active Server Pages (ASP). However been a poor student ASP was an expensive avenue to pursue, It cost a lot of money to host and for the surrounding infrastructure. Looking around the internet a lot of hosts support this thing called PHP (Personal Homepage as it was called then, now it stands for PHP Hypertext Processor).

PHP was a free and open source, meaning that I was able to easily get up and running. Not only was PHP free and open source so was the ecosystem and stack that supported it the LAMP (Linux, Apache, MySQL and PHP) stack.

From my Bedroom to the Pro’s

Learning PHP turned me into a full stack developer, at this time in the internet world, development wasn’t really specialised. As a web developer, you pretty much did everything from sorting out hosting, to design and building.

In early February, I was shown a job as a Junior Web Developer for a boat trading web and print company. I applied and was lucky to get an interview for the position. I travelled down in my Sunday best with my best code examples. By this time I had written my own framework (I didn’t know that what it was called, I called it an engine like a game engine) which again not knowing that it was called was loosely based on the Model View Controller (MVC) pattern. I had DB instead of models, screens instead of views and apps instead of controllers but basically, it was a similar concept.

It was one of the best interviews I have ever done, instead of trying to sell myself, I was able to just talk about what I was passionate about and excited me. I remember talking for ages about the merits of classes and reusable code. When I left it didn’t feel like I just had a job interview but rather had a chat with a group of friends. Two days later I was offered (and accepted the job) and went from my bedroom to the pros.

Moving to the pro and working with other developers opened up my eyes massively. In the first week, I had learnt about Frameworks, Content Management systems, coding styles and Version Control. I was hungry to learn more and more, not only to apply it to my work but also to apply it to my own projects.

I was lucky in this first role, that I had an amazing mentor and lead developer. He allowed and supported me to grow my skill set further. No project was ever too large for me to get involved in allowing me to rapidly build my skills and experience. The team was also very small which meant by necessity I was able to get involved with all areas of the web business. I turned my hand to Javascript, PHP, ASP, Microsoft SQL Server, MySQL, DBA, Design, Server management and much more.

For the love of Ruby!

For my first few years as a professional developer, I concentrated on building my general web skills and specialising in PHP development. Working a web agency exposed me to a wide range of different development project for different clients. Agency work also exposed me to client-based work and dealing with clients. This was a valuable skill to develop and I continue using those skills today, even when the client is the business that I am working for.

It was at this time that I wanted to expand my program horizons. After reading the quote

Learn at least one new language every year. Different languages solve the same problems in different ways. By learning several different approaches, you can help broaden your thinking and avoid getting stuck in a rut. Additionally, learning many languages is far easier now, thanks to the wealth of freely available software on the Internet.

I decided that the best way to achieve this was to learn a new language. At the time I had looked at a number of languages including Java, Python and Ruby. Ruby really felt like a good fit. From the first line of helloworld.rb I realised that it was Ruby that I had been looking for, it felt natural, it felt right and it was powerful. So I started to learn Ruby and by extension Rails. At this time I was only doing it in my spare time but was enjoying the experience greatly.

Learning Ruby also had a massive impact on my development knowledge and skill as a whole. Learning ruby allowed me to see how another language handled certain challenges and like the quote said broadened my horizons. Ruby is built on the principle of Object Oriented programming, everything in Ruby including types that are traditionally primitives in other languages, are first-class objects in Ruby. This focus and requirement to write object orientated code were one of the biggest things I got from learning Ruby. I was able to apply that knowledge across all languages that supported object orientated.

The next role I took had a focus on Ruby, although I was still heavily using PHP and Javascript, most of my day to day development was now in Ruby and by extension Ruby On Rails. Like with my first job in the industry, my first job in Ruby took my Ruby knowledge to a whole new level especially around Gems (Ruby Libraries) and the Ruby toolchain.

Testing times

Ruby also introduced me to the idea and demand of Testing my code in a more formal and controlled way. Using libraries like RSPEC a behaviour driven development test suite for Ruby, I started writing formal tests for my applications.

Testing was yet another revolution to me, formal testing allowed me to work faster with more confidence in the code that I was writing. After being introduced to testing in Ruby, I quickly took the skills and methodologies and applied them to the other languages that I commonly worked in. Using Chai and Jasmine in Javascript and Codeception in PHP I build test suites for all my projects both professionally and personally.

Learning testing in Ruby exposed me to the terminology of testing including unit tests, functional tests and code coverage. This was also vital for me to apply testing to other languages and know how to write good tests.

Now days testing and writing formal tests into my code has become second nature. I honestly can’t think how I wrote well without a test suite. The tests like I mentioned give me confidence that the code that writes works, and completes its function but also doesn’t have any side effects to existing code. It also as got me writing more loosely coupled code in order to make the code easier and more reliable to test.

The Story continues…

Of course, I am still a professional web developer, I now am the web team lead for a large UK Games Studio called Creative Assembly. I am still passionate about web development and design and continue to grow my skills. Recently I have started to learn Go, build complex front-end applications in Angular and continued to grow my expertise in Ruby, PHP and Javascript.

I have also started to focus on getting a better understand and therefore improving my design skills. This has involved going back to basics learning colour theory, as well as brushing up and expanding my knowledge of UI and UX design. You can see from my work page that I have already applied this new knowledge for doing design work for my current employer.

Web design is partly what drew me to the web and building websites. Although I have followed a development career, I still have a passion for the design side of the web, as well as mobile apps. I am excited to continue to work in the web industry and to continue to expand my knowledge and skills, this includes in non-web direction that I can then possible take back into my web career.