61
DO THE WORK Scottish Ruby Conference 2014 Lori Olson

Do The Work

Embed Size (px)

DESCRIPTION

Have you ever run into that problem you are trying to solve, that is tangential to your core business? It’s easy to run off, look for a gem, and use it. What is harder, is when that gem … isn’t quite right. Maybe you should look for an alternative. Maybe you should fix the gem. Or if your problem is different enough, you can fork the gem Or maybe you should just stop wasting so much time looking for the “easy” solution, and just DO THE WORK.

Citation preview

Page 1: Do The Work

DO THE WORKScottish Ruby Conference 2014

Lori Olson

Page 2: Do The Work

LORI OLSON

[email protected]

• www.wndx.com

• @wndxlori

• Freelance developer, mentor, trainer

• CANADA!

Page 3: Do The Work

KUDOSChanging the world, one Thank You at a time!

kudosnow.com

Page 4: Do The Work

LADIES LEARNING CODEInstructor/Mentor

Page 5: Do The Work

TELL YOU A STORY

I’m going to tell you a story.

Page 6: Do The Work

CAUTIONARY TALE

It’s a somewhat cautionary tale

Page 7: Do The Work

DOWN THE RABBIT HOLE

About just how far down the rabbit hole you can go…

Page 8: Do The Work

INSTEAD OF DOING THE WORK

when, instead of doing the work

Page 9: Do The Work

FALL INTO THE TRAP OF AVOIDING THE WORK

you fall into the trap of avoiding the work, looking for the easy way out.

Page 10: Do The Work

THE STORY

Page 11: Do The Work

WRITE A RUBYMOTION APP

As a side project, to learn more about RubyMotion and iOS Development

Page 12: Do The Work

WIMBYWells In My Back Yard

So I picked WIMBY, or Wells in My Back Yard. That’s a play on NIMBY, or Not In My Back Yard. !You might call that a garden….

Page 13: Do The Work

CALMAR, ALBERTA, CANADA

• "According to the records, they believed that somewhere in that vicinity was a well site," recalled Ms. Beaudry, 45, a mother of two. They guessed right. In her backyard, a metre from her house, crews found a broken, leaking, 50-year-old natural gas well.

Page 14: Do The Work

BUT WHY? HOW?

How is it even possible for people to not know they have an abandoned well on their property? !Once the wells were abandoned, Imperial/Texaco Canada surrendered the lease back to the landowner and consequently no longer had an interest in the lands. Caveats were later removed from the land titles because there was no regulatory requirement that provided for registration of well locations on land titles once activity had ceased.

Page 15: Do The Work

WELLS ABANDONED IMPROPERLY

It was only in the mid 60’s that rules and regulations acquired some teeth, and wells had to be abandoned according to well-established, well-regulated procedures.

Page 16: Do The Work

HOMES TORN DOWN

• The re-abandonment of the 1-36 wellbore required the acquisition and removal of five Evergreen Crescent properties to accommodate the safe operation of a drilling rig.

A quote from the Imperial Oil website, w.r.t. the Calmar incident.

Page 17: Do The Work

I MUST DO SOMETHING

So, having encounter this story, I felt I must do something. But what?

Page 18: Do The Work

DATA. GOT THAT

In fact, I spent the better part of 7 years immersed in the Oil & Gas data used by most of the Canadian oil industry, and provided by 2 of the biggest data vendors in the business.

Page 19: Do The Work

LOADS OF DATAThere are over 750,000 oil and gas wells in Canada, and of

those, over 244,000 are abandoned.

Page 20: Do The Work

THATS A LOT OF WELLS

to keep track of

Page 21: Do The Work

FOR AN IOS APP THATS A LOT OF DATA

Page 22: Do The Work

YOU SHOULD USE CORE DATA

All of my research let me to the conclusion that I needed to use Core Data.

Page 23: Do The Work

CORE DATAin RubyMotion

And there-in lies the problem. Not just using Core Data, where there are books and tutorials galore, but using it in RubyMotion, not so much.

Page 24: Do The Work

I BET THERE’S A GEM

FOR THAT

Isn’t there always?

Page 25: Do The Work

–@topfunky

@charliesome You must be new to Ruby. We write 16 different independent gems for everything here. ;-)

Page 26: Do The Work

SO MANY GEMS

• motion-sqlite

• Nitreon

• Magical Record

• Superbox

• Motiondata

• MotionModel

• CDQ

Why yes, in fact, there are a lot of gems. And where there are many options there are so many opportunities to become lost in analysis paralysis.

Page 27: Do The Work

SO MANY REQUIREMENTS SO LITTLE TIME

Page 28: Do The Work

PRELOADING *LOTS* OF DATA

Page 29: Do The Work

NON-TRIVIAL DATA MODEL

Page 30: Do The Work

RELATIONSHIPS

Page 31: Do The Work

FILTERby location

Page 32: Do The Work

LIST

Page 33: Do The Work

MAP

Page 34: Do The Work

PART TIME

But I was only doing this little project on the side. Part time. Evenings & weekends.

Page 35: Do The Work

RESEARCHa.k.a. Yak Shaving

And so it went. I researched, and I researched some more. And then so more. And so it went.

Page 36: Do The Work

NOTHING WORKS

Eventually, I came to a CONCLUSION. Nothing works. At least, not for the specific requirements that my application had.

Page 37: Do The Work

–@scottdavis99

Young C is expending an extraordinary amount of energy finding shortcuts rather than just doing the

work. Future #convict or #programmer?

I saw this and thought… this is me. Instead of just buckling down, and doing the work of figuring out Core Data for myself, I wasted all that time trying to use other people’s code that was not suited to my core requirements.

Page 38: Do The Work

DIDN'T KNOW ENOUGH

about Core Data

Page 39: Do The Work

DIDN'T UNDERSTAND THE GEMS

And because I didn’t know enough about Core Data, I didn’t really understand how the gems worked

Page 40: Do The Work

COULDN'T MODIFY THE GEMS

And because I didn’t understand how they worked, I couldn’t really modify them easily, either.

Page 41: Do The Work

THE IRONY

I tried to use gems as a shortcut, only to end up wasting more time than just DOING THE WORK.

Page 42: Do The Work

–@bketelsen

spent 6 hours researching a way to do it the easy way, when I could have written it in 3, the hard way.

Yup, I resembled this guy too. I wasted 3 weeks of part time efforts, digging into all those gems, so I wouldn’t have to learn Core Data for myself.

Page 43: Do The Work

DO THE WORKback to the basics

So, after all that, I needed to go back, and actually spend time figuring out Core Data in RubyMotion for myself.

Page 44: Do The Work

LEARN THE SDK

Because RubyMotion, for all it lets you code in Ruby, does not relieve you of the need to learn the Apple iOS SDK’s.

Page 45: Do The Work

READ THE API

And what does that mean? Learn the SDK. It meant going back, and actually reading the Apple documentation for Core Data.

Page 46: Do The Work

READ THE EXAMPLES

It meant downloading and reading the example code that comes with the API documentation.

Page 47: Do The Work

FIND MORE EXAMPLES

It meant finding some Objective C posts about using Core Data (on Ray Wenderlich’s fab site).

Page 48: Do The Work

IMPLEMENT SAMPLE SOLUTIONS

and using those examples, walking thru them, and translating them into RubyMotion.

Page 49: Do The Work

HARD PROBLEMS ARE HARD

Along the way I (re)discovered… hard problems are hard. Most of my requirements turned out to be fairly challenging problems, in and of themselves. Most gems are make tedious things simple. But they don’t really tackle the hard problems.

Page 50: Do The Work

@SERIOUSPONYOn expertise and just how deep the rabbit hole goes

Most of the gems stop at the “Turns out it’s quite simple”. !Most of my requirements drove me all the way into “OMG complex!” !* https://twitter.com/seriouspony/status/419887010388537344/photo/1

Page 51: Do The Work

Turns out, I was sort of glad that none of those gems worked for me. I learned SO MUCH.

Page 52: Do The Work

I KNOW! I’LL WRITE A BOOK NOW!

So much in fact, that I ended up with enough material to write a whole book on the subject of Core Data in Ruby Motion.

Page 53: Do The Work

DOING THE WORK

The moral of this long and involved tale that is somewhat embarrassing and somewhat uplifting is that when the problem you are attempting to solve is core to your application, sometimes what you need to do is just sit down, and do the work.

Page 54: Do The Work

PERILS

What are the perils involved in avoiding “Doing the work”?

Page 55: Do The Work

EXPERT BEGINNERHow Developers Stop Learning: Rise of the Expert Beginner

This is where you learn just enough to think you are proficient, but really, you never get to be an expert at anything. Lots of developers fall into this trap. We need to dig a little deeper, avoid the easy solutions, and do the work. !http://www.daedtech.com/how-developers-stop-learning-rise-of-the-expert-beginner

Page 56: Do The Work

@SERIOUSPONYOn expertise and just how deep the rabbit hole goes

The expert beginner gets stuck in that trough, and never realizes there is more to learn !* https://twitter.com/seriouspony/status/419887010388537344/photo/1

Page 57: Do The Work

ADVANTAGES

What are the advantages of doing the work?

Page 58: Do The Work

LEARNING IS ITS OWN REWARD

Ok, sure it’s a cliche, but that doesn’t make it less true. There is deep satisfaction in deep diving into learning, and becoming truly expert in something.

Page 59: Do The Work

BELONG BY DOINGThis is a great quote. I wish I could track down where it came from. !Do the work.

Page 60: Do The Work

CORE DATA IN MOTIONhttp://coredatainmotion.com

And of course, maybe you too, will some day discover that you have learned enough about a difficult topic that you have enough material at your fingertips to write a book.

Page 61: Do The Work

DO THE WORK!

Thanks for listening!

Finnegan says…