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

Options Available When a Company Faces Financial Distress

Financial distress can develop gradually or arrive suddenly, and when it does, the decisions made in the early stages often determine what options remain available later. Directors who act promptly ...

Daily Bulletin - avatar Daily Bulletin

What Healthcare Teams Look for When Choosing Specialist Surgical Supplies

In clinical environments, small details rarely stay small. A delayed instrument, a poorly matched device or inconsistent supply quality can affect theatre flow, staff confidence and patient outcomes. ...

Daily Bulletin - avatar Daily Bulletin

Reducing Sales Friction Through Centralized Content Delivery

Sales friction appears whenever buyers or sales teams face unnecessary obstacles in the buying journey. It can happen when information is hard to find, when messaging feels inconsistent, when product ...

Daily Bulletin - avatar Daily Bulletin

Why Choosing the Right Bollard Supplier Matters for Australian Businesses and Public Spaces

From busy CBD streetscapes to sprawling warehouse loading docks, bollards have become one of the most essential safety and security fixtures across Australia. Whether protecting pedestrians from veh...

Daily Bulletin - avatar Daily Bulletin

Why Modular Content Is Transforming Modern Marketing Teams

Modern marketing teams are expected to produce more content than ever before. They need to support websites, landing pages, email campaigns, social channels, product pages, sales enablement material...

Daily Bulletin - avatar Daily Bulletin

Everything You Need to Know About Getting Support from Optus

Whether you've been an Optus customer for years or you've just switched over, at some point you'll probably need to contact their support team. Maybe your bill looks different from what you expected. ...

Daily Bulletin - avatar Daily Bulletin

The Marketing Strategy That’s Quietly Draining Sydney Business Owners’ Bank Accounts

Sydney businesses are investing more in digital marketing than ever before. The intention is clear. More visibility should mean more leads, more customers, and steady growth. However, many business ...

Daily Bulletin - avatar Daily Bulletin

Why Mining Hose Solutions Are Essential For High-Performance Industrial Operations

In environments where the ground itself is constantly shifting, breaking, and being reshaped, every component must be built to endure. Mining operations are among the most demanding in the industria...

Daily Bulletin - avatar Daily Bulletin

The Reason Talented Teams Underperform

If you’re in business, you might have seen it before. A team of capable and smart people just suddenly slows down, and things start spiraling out of control. On paper, everything looks perfect, but ...

Daily Bulletin - avatar Daily Bulletin

The Daily Magazine

Why Stress Relief For Dogs Is Essential For Emotional Balance And Long-Term Wellbeing

Managing emotional health is just as important as physical care when it comes to pets, which is why ...

Australia’s Best Walking Trails and the Shoes You Need to Tackle Them

Australia is not short on spectacular walks. You can follow ocean cliffs in Victoria, cross ancien...

Why Pre-Purchase Building Inspections Are Essential Before Buying a Home in Australia

source Have you ever walked through an open home and started picturing your furniture, family d...

5 Signs Your Car Needs Immediate Attention Before It Breaks Down

Car problems rarely appear without warning. In most cases, your vehicle gives clear signals before...

Ensuring Safety and Efficiency with Professional Electrical Solutions

For businesses in Newcastle, a safe and fully functioning workplace remains a key part of day-to-d...

Choosing The Right Bin Hire Solution For Hassle-Free Waste Management

When it comes to managing waste efficiently, finding the right solution can save both time and eff...

Why Cleanliness Is Critical In Childcare Environments

Children explore the world with curiosity, often touching surfaces, sharing toys, and interacting ...

What to Look for in a Reliable Australian Engineering Partner

Choosing an engineering partner is rarely just about technical capability. Most businesses can fin...

How to Choose a Funeral Home That Supports Families with Care

Choosing a funeral home is rarely something families do under ideal circumstances. It often happen...