I’ve been at Can Studios since 2008, making me one of the longest serving developers here. I’ve used a range of coding languages and tools, but there’s always something new to learn. Recently I started using the Laravel PHP framework. For Coding Week I wanted to share what learning on the job looks like for software developers, and why people and problem solving are central to writing good software.
I never get tired of coding. Can Studios’ work covers all sorts of educational products with different learner requirements: there’s always a new puzzle to solve. But most of the time we’re doing that within a product’s existing technology stack.
Yes, tools change all the time. But the chance to pick our tools from scratch is rare… it can be a while before you get to use the latest technology.
Yes, tools change all the time. But no client wants to (metaphorically) strip off the paint and wallpaper to replaster their house unless it’s absolutely necessary. So the chance to pick our tools from scratch is rare. That means it can be a while before you get to use the latest technology.
For example, when we needed an internal testing tool my colleague Jamie used Laravel and built it in a day: complete with a full user interface, graphs, and data tables that were paginated, sortable and searchable – all from scratch. It even looked great on screen!
It was like going to a friend’s for a quick snack and them rustling up a gourmet meal.
Jamie is a big fan of Laravel and his enthusiasm is contagious; I was dying to get into it. As developers it’s really important that we’re continually moving with the technology. But the reality in a business is that we have to make sure the benefits of our new skills aren’t outweighed by the time and effort taken to learn them.
…the reality in a business is that we have to make sure the benefits of our new skills aren’t outweighed by the time and effort taken to learn them.
My chance came when we undertook a major reboot of one of our own products. Obviously I’d used other PHP frameworks, and there’s a wealth of Laravel tutorials online. But once I’d got the basic concepts sussed, I needed to learn by doing.
Pair programming made us verbalise our logic and gave us the safety net of a second set of eyes to troubleshoot and make suggestions.
One of the things that’s unusual about Can Studios – compared to lots of software houses – is that our developers are office based. We sit together, talk face-to-face and can quickly help each other out when needed.
So another colleague and I, both of us Laravel beginners, were given time to work on a throw-away project.
These mini projects are a great way to learn: with no commercial fallout if it goes wrong, you can experiment and learn from your mistakes.
We also used pair programming – two of us sitting at the same machine and taking it in turns to drive (type code) and review/problem solve. That made us verbalise our logic and gave us the safety net of a second set of eyes to troubleshoot and make suggestions.
After this we began on the live project. Because it was an internal product, us Laravel newbies had leeway to push the boundaries and see what it could do. But even an in-house project has a schedule, product owner requirements and end users to satisfy. Our work had to be efficient and high quality.
That’s why it was great to be using Laravel alongside more experienced colleagues. Not only did they provide very practical help with the nuts and bolts of Laravel at times, but they demonstrated the processes and protocols to work with Laravel effectively as a team.
One great thing about Laravel, compared to the older version of Zend I was used to, is the functionality it provides out of the box. For example, Laravel has a pre-built log-in page, all the authentication to go with it (including the database tables) and mechanisms to handle user verification and forgotten passwords.
I didn’t have to write tedious authentication code for the umpteenth time….More importantly, it freed us humans from the coding grunt work so we could focus that time and budget on the best bit of software development: solving puzzles to deliver new features.
That meant I didn’t have to write tedious authentication code for the umpteenth time. But more importantly, it freed us humans from the coding grunt work so we could focus that time and budget on the best bit of software development: solving puzzles to deliver new features and better user experience.
And with Laravel, as we develop those features and functionality we can get them out to customers faster. That’s because Laravel has lots of tools for creating automated tests – dramatically cutting the time it takes to issue product releases.
We were able to rebuild the whole product, from the ground up, in a few months with Laravel – and make it more efficient, robust and cost-effective to run. Which means we can give our customers even better value for money.
I wish I’d been using Laravel sooner. But the upside of waiting until the right moment to learn – in the grand scheme of the wider business – is that I learned it well.
Sharing challenges and learning across the team to solve live problems is, in my experience, one of the best and fastest ways to learn. And it’s one of the things I like most about my job.
Mark’s tips for learning a new coding tool or language
Don’t feel you have to know everything before you start! We all learn best with a bit of help from others.
Use the online help that’s out there. For example there are hours of easy-to-follow tutorial videos at laracasts.com – which I learned a lot from.
If you can, buddy up for a bit of pair programming! Take turns coding, making sure you discuss everything as you go so you swap ideas and learn from each other.
Sometimes the hardest bit is knowing where to start. Try a little problem such as writing a to-do list or address book. List a few tasks you want to achieve and go for it!
Don’t be afraid to ask for help – if someone really knows their stuff they may well be up for sharing their enthusiasm with someone who’s getting started. You’ll get that chance to pay it forward too one day!