Read The Times Australia

Daily Bulletin

Finding flow: learning Ruby on the job

  • Written by: Eleanor Kiefel Haggerty, Developer, The Conversation

I’d graduated from university with a degree I loved but the prospect of finding a stimulating job, let alone a career, was slim. I wasn’t sure where my life was leading. I was stuck.

This podcast on design thinking talks about two distinct challenges in everyday life. Dave Evans, who teaches Designing Your Life at Stanford University, calls these challenges “tame” and “wicked”: tame challenges are solvable, whereas wicked challenges are mutable.

It was a wicked problem I faced; wicked, but actionable. So I began to learn to program. I attended a RailsGirls event, began online tutorials, and then attended my first RailsCamp. Not too long after, I was hired by The Conversation as a junior developer to learn Ruby on the job. Over a year later, it’s past time to reflect on my early months in development.

The practicalities

Before walking into the office for my first day, I wanted to make sure I understood a few things to take the pressure off those first few weeks. Not necessarily programming, but understanding day to day practices that encourages the development day to “flow”.

Command line

The Command Line Interface, or console, is your terminal window where you type commands. The more familiar I became with my command line, the more I could focus on programming instead of worrying about remembering the command to type into console.

Git

Git is a distributed version control system, which tracks code changes made by multiple users over time. Give it a go here. I used this frequently when trying to understand branches, repositories and multiple user collaboration.

Editor

Choosing an editor is an individual decision. I use Atom as it is what I’ve always used and I’m most familiar with it. In the same vein as understanding CLI and git, understanding your editor and its tools is a great way to gain confidence.

Other popular editors are Sublime, RubyMine, Vim and Emacs.

The necessities

Questioning confidence

I’m not a confident programmer (yet). But I am confident in my work environment, in my ability to find something in the codebase, I know how to ask questions and, most importantly of all, I know that it’s ok to make a mistake.

Mistakes happen to everyone, no matter how high their skill. Once I realised that not everything I wrote had to be exactly correct the first time, I got the confidence to play around more and explore other avenues to achieve the same result. I often ask my colleagues: “Why is this piece of code written this way?” More often than not, the reply is: “I’ve done this 10 times, and I just know that this way is better”.

Removing such unnecessary pressure was a relief. Thinking that you’ve got to write something correctly the first time is unsustainable and impractical. My colleagues know this, because they’ve done it 10 times. Code is a lot like archaeology. I often find myself weaving through files and methods before finding the solution to a problem. Learning takes time; so does confidence.

I had no prior experience working in technology, but I studied Ancient Greek for a few years. Learning a “dead” language is not too dissimilar to learning to program. Both require application, consistency and revision. And hard work. Lots of hard work. I applied the same practices to learning to program as I did when I was learning Greek.

I keep a running doc that contains everything from notes of idiosyncrasies within our code base, to what to run in the console if assets aren’t compiling properly. In a separate doc are more general notes. If I hear an unfamiliar phrase, then that goes in the doc. Later, I consult with Google or ask a colleague if I’m still unsure.

Asking questions is hard. Identifying the right question takes a surprising degree of skill and vocabulary. It helps if I break it down into a few stages. I try to state: what I’m doing; why I’m doing it; what I’ve already tried; what I don’t understand and what I do understand. Don’t be afraid to say you don’t know what something means. Asking a question often leads to pairing or can be quickly resolved by posting a code snippet in Slack.

Establish routine

In my first few weeks I had a few key tasks I did everyday or week. These became a routine I could rely on to explore and familiarise myself with the codebase, which helped to build up a solid workflow foundation. It also helped me identify a balance between independent learning, pair programming and information processing that I adhere to each day.

One of the earliest routines I established was running a rake task. I had to understand: what is a rake task and how do you run it; what is bundler and why is it important, how git works with more than one person working on a project, and how the code review process worked for the team. Although familiar with many of these things independently, working that knowledge into a team environment is a whole other challenge.

Establishing a routine gave me familiarity and confidence within both the team and the codebase; I slowly began to have more confidence when pairing on small, self-contained projects within the code base that stuck to a standard Model-View-Controller and Create, Read, Update, Destroy, flavour of development.

Looking back, I realise how much of a benefit this was. Our code base was (and still is) huge to me. Implementing standard programming practices I was familiar with, having done some online tutorials, but within a large codebase being worked on by multiple team members gave me valuable insight and confidence in the early months. The more familiar I became with different sections of the code base from such small tasks meant I was later able to pick up more complex cards within the same area.

Goals

Defining goals early on was surprisingly difficult. I wasn’t sure what was realistic. I observed day-to-day interactions between colleagues and thought about how I could reach a similar level of skill and confidence. I was reading every pull request submitted by my colleagues (although I certainly didn’t understand everything I read). I wanted to be comfortable writing articulate and considerate reviews, to have informed discussions about the decisions they’d made, and to contribute my own opinions.

Identifying practices my colleagues did with ease each day allowed me to articulate a specific goal. My first goal was to be able to confidently review, and subsequently merge, a variety of pull requests.

This can be: “I tried this out and it works as expected”, or “I tried this, but noticed that the email field accepted invalid values”. I often hear juniors say they feel as though they can be wearing on their colleagues, that they’re distracting and demanding. By throwing myself into the review process I felt more comfortable in my role as a junior: I can do this, I was contributing to the daily-workflow, helping the team prepare to ship software to the live site.

Be brave

A strong theme in this post has been: I don’t know. Learning to program does not follow a straight trajectory, or adhere to a set of rules. If you know and understand one line of code, that doesn’t mean the next line will make any sense to you. And that’s ok. Programming as a junior isn’t all about solving the problem or writing the code. It’s also important getting comfortable with the idea and process of doing so.

Here are a few useful links that have helped me out at various stages over the past year:

If you’re a junior, mentor or considering stepping in the world of development, I hope this has helped.

Authors: Eleanor Kiefel Haggerty, Developer, The Conversation

Read more http://theconversation.com/finding-flow-learning-ruby-on-the-job-71993

Business News

How Fulfilment Services in Australia Help Businesses Scale Efficiently

The growth of e-commerce and modern retail has transformed customer expectations. Consumers now expect fast shipping, accurate order processing, and seamless delivery experiences regardless of where...

Daily Bulletin - avatar Daily Bulletin

Practical Ways Australian Workplaces Can Reduce Operating Costs

Reducing business costs doesn’t always mean cutting staff, shrinking services or making the workplace feel bare-bones. In many cases, the smarter savings are hiding in everyday operations: the light...

Daily Bulletin - avatar Daily Bulletin

Executive Recruitment Solutions That Help Organisations Secure Exceptional Leaders

Leadership has a direct impact on organisational performance, employee engagement, strategic growth, and long-term success. Businesses operating in increasingly competitive environments require experi...

Daily Bulletin - avatar Daily Bulletin

Why A WooCommerce Website Designer Matters For Online Growth

Running an online store today requires more than simply listing products and waiting for customers to arrive. Businesses need a website that is fast, reliable, easy to navigate, and designed to suppor...

Daily Bulletin - avatar Daily Bulletin

Turning Your Empty Tables into Revenue

The rise of AI demand tools in hospitality, the EatClub–CommBank partnership, and seven trends reshaping Australian dining  A growing number of Australian venues are turning to AI-powered demand ma...

Daily Bulletin - avatar Daily Bulletin

High-Impact Dental Marketing Strategies That Are Driving Real Practice Growth Today

The landscape of dental practice growth in Australia has shifted dramatically over recent years. Standard, broad-spectrum advertising campaigns no longer yield the return on investment they once did. ...

Daily Bulletin - avatar Daily Bulletin

How Telematics Helps Australian Companies Improve Productivity

Operating a commercial fleet in Australia is a uniquely demanding endeavour. Between the sprawling urban sprawl of cities like Sydney and Melbourne and the immense, unforgiving stretches of the Outb...

Daily Bulletin - avatar Daily Bulletin

Inside the Icon: The BridgeMuseum Officially Opens at the Sydney Harbour Bridge

A bold new way to experience one of Australia’s most recognisable landmarks has arrived, with BridgeClimb Sydney officially opening the all-new BridgeMuseum.  Located inside the Sydney Harbour Bridge...

Daily Bulletin - avatar Daily Bulletin

Is Your Brand Showing Up in AI Search? Most Melbourne Brands Aren't.

The New Front Door Nobody Told You About Something changed. Quietly. Without a press release. The way buyers find businesses in Australia has been rewired. Not replaced, rewired. Google isn't dead...

Daily Bulletin - avatar Daily Bulletin

The Daily Magazine

Traffic Light System Solutions For Safer And More Efficient Traffic Management

Modern cities and growing communities rely heavily on effective traffic management to ensure safety...

Gold Migration Lawyers in Liquidation: How the Closure Affects Your ART Appeal

If your appeal was with Gold Migration Lawyers, a recent change to how the Tribunal decides cases ...

The pressure cooker: life in urban Australia in 2026

Australian cities have always been demanding. Long commutes, rising housing costs, busy schedules a...

What Actually Makes a Good Criminal Lawyer in Melbourne

Most people only think about this question once. That is usually too late. Most people charged wi...

Why Working With A Chatswood Tutor Can Improve Academic Performance

Academic expectations continue increasing for students across primary school, high school, and senio...

Is It Worth Getting Solar Panels in Melbourne?

The real question is not whether solar works in Melbourne. It works. The question is what it is co...

How A Diploma Of Project Management Builds Practical Skills For Modern Work Environments

Developing the ability to plan, execute, and deliver outcomes efficiently is a key requirement in to...

How to Choose the Right Football for Every Level

Choosing a football may seem straightforward, but the right option depends on who will be using it a...

What to Ask a Wedding Photographer Before You Book

Booking a wedding photographer can feel deceptively simple: you like the photos, you like the vibe...