How To Be A Real Developer In Two Easy Steps

Post on 08-Aug-2015

49 views 2 download

Tags:

Transcript of How To Be A Real Developer In Two Easy Steps

How to Be A Real Developer

In Two Easy Steps

About Me

• Didn’t go to Cogwarts

I didn’t go the fancy academy of computer scenery

About Me

• Didn’t go to Cogwarts

• Haven’t been hacking since birth

We had computers at home, but mostly used them to play Carmen Sandiego and write stories about dragons, not for hacking the mainframes.

About Me

• Didn’t go to Cogwarts

• Haven’t been hacking since birth

• Started programming accidentally

I actually didn’t start programming until just a few years ago, and I started doing it accidentally: I had a boring job, and to pass the time I started tweaking my PC desktop. I started using little widgets for application launchers or desktop notepads, and occasionally, I’d open up the little text files with instructions and change some of the instructions to do something else. Or sometimes, I’d just start a new text file of instructions to make a whole new thing.

Apparently, that’s programming.

About Me

• Didn’t go to Cogwarts

• Haven’t been hacking since birth

• Started programming accidentally

• Went to a web dev bootcamp

Kind of a long story from there, but…I taught myself HTML and CSS and fastforward a few years, and I decide to attend a web development bootcamp, where I learned Ruby, Ruby on Rails, JS…

About Me• Didn’t go to Cogwarts

• Haven’t been hacking since birth

• Started programming accidentally

• Went to a web dev bootcamp

• Became an apprentice at Detroit Labs last March

Then, last year I joined DL’s first apprentice class. And I did pretty well, and graduated and became a full-time dev, and then we got a new apprentice class and I was talking to Kate Catlin right in that kitchen and telling her about my experience, and she said…

“When did you start to feel like a

real developer?”

…and I laughed at her, because c’mon now. I’m not a REAL developer, not yet.

And that bothered me. I mean, I work with all these awesome smart people and DL charges just as much for my time as they do for people who actually know what they are doing. And it’s not like I’ve done *nothing*, I know some stuff.

– Smart Person

“Fake it ‘till you make it.”

This is pretty great advice—if you don’t think you can do the thing, act like you can do the thing and sooner or later you are doing the thing, right?

What do all these “Real Developers” have in

common?

So I looked at my coworkers, and this collection of No Shit Honest To Hank Real Developers, and decided I would see what they have in common and then I would do THOSE things and then I’d be in. And keeping with the idea of an MVP, of doing things in the smallest complete steps, I tried to find the smallest steps possible and start with those.

Step One

So I looked around and the first thing I noticed was that all real developers have…

Step Onegithub stickers

Score.

Step Two

Second thing I noticed, and this was a big one—

Step Twopimped out command line

Seriously, look around, all Real Developers have some kind of pimped out command line. They’ve got colors, they’ve got symbols—I worked with a guy in TO who had these emoji based on his git status, a fish for uncommited, sushi for up to date, and a cheeseburger when there was a merge conflict.

And mine? Looked like this. Not even like this, because I didn’t get a screenshot before I started, and I hadn’t named my computer, so it just said “Detroit Labs User.” It was very sad. Not Real Developer of me.

Some basics• Get to know—or at least, don’t

fear—vim

• /.bash_profile

• PS1=“<some stuff\and stuff>”

• \@ current time in 12-hour am/pm format

• \u username of current user

• \W basename of current working directory

• \\ a backslash

• \[\033[0;31m\] Color Codes! This one is red.

• \[\033[1;31m\] Bold!

• there’s a script you can download that will allow you to add your git branch so you always know where you are at and/or your status

When I post these slides, I’ll add some links to tutorials and places that explain more about all these things, but the most important part is learning vim and not being scared of it.

I should say this is for bash, if you are using zshell, I can’t help you.

Code time!

But I had an idea. A dream. A command line prompt that included weather information.

Ruby script that goes out to the weather underground api and gets local weather conditions

Funny story: I wrote this script with the formatted URL and the open and do the thing, and then I went to the Wunderground api and discovered that they had sample code in Ruby for this exact thing. So that was fun.

<talk through the thing>

Wunderground api has a couple dozen weather conditions, but I caught the major ones. I’m okay with “Hurricane” being an eggplant.

This refactor sets variables for city and state… but I have to specify every time. That’s not cool.

v0.3 makes sets a default city and state but allows for customization

Luckily, Matz has my back, and Ruby allows for optional variables—so if I specify when I call the method, it’ll give me the weather in that place. And if I don’t, it’ll just give me home.

But how do I get that on my command line?

That’s all well and good, but how do I get that on the command line?

Like This! The result of two straight days of googling and swearing

You just pass the path into that PS1 = “” guy.

because I was convinced it could not possibly be this easy

Really. That’s all you do.

(╯°□°)╯︵ ┻━┻

Everything is stupid.

I can probably make this a variable, honestly, but I didn’t want to look at it for, like, a month after this.

Check this out

Now I just need to submit my paperwork to the

international licensing bureau of

Real Developers! I’ll get that golden hoodie and a

discount on a mechanical keyboard!

Wait.

…there isn’t any. Crap.

But that means…

I can decide what makes me a real developer

And honestly, the github stickers and command line, that’s just me being a smartass. I still don’t feel like a Real Developer. And there’s no licensing bureau, so I have to figure it out myself. So I took another look around, not just at DL, but everywhere. What do the people I respect do?

Real Developers…

• Are polyglots

• Test-first always

• Pay it forward

• Contribute to open source

–Narcissists, Mostly

“But what about me?”

So I’ve got these new criteria, I’m serious this time, let’s see how I think I stack up.

And I have this dark night of the soul kind of thing, where you sit with a glass of scotch and stare into a fire and question all your choices. What I came up with was kind of depressing.

Real Developers…

• Are polyglots

• I don’t even know one language very well…

• Test-first always

• Pay it forward

• Contribute to open source

Real Developers…• Are polyglots

• I don’t even know one language very well…

• Test-first always

• I don’t always test first…

• Pay it forward

• Contribute to open source

Real Developers…• Are polyglots

• I don’t even know one language very well…

• Test-first always

• I don’t always test first…

• Pay it forward

• WTF do I have to offer…

• Contribute to open source

I barely know what I’m doing, here.

Real Developers…• Are polyglots

• I don’t even know one language very well…

• Test-first always

• I don’t always test first…

• Pay it forward

• WTF do I have to offer…

• Contribute to open source

• Open Source Is Scary…

Because that’s the internet, and people are dicks.

Well, crap.

But is this even true? As it turns out, staring into a fire with a glass of scotch is not the best way to self-evaluate. In the morning, over coffee, I looked at my notes and realized—this is all bullshit.

Well, crap. No, seriously, this is all crap.

But is this even true? As it turns out, staring into a fire with a glass of scotch is not the best way to self-evaluate. In the morning, over coffee, I looked at my notes and realized—this is all bullshit.

Real Developers…• Are polyglots

• I don’t even know one language very well…

• Objective C, Swift, Ruby, Coffescript, Lua

• Test-first always

• Pay it forward

• Contribute to open source

I do OBJC all day, I’m learning Swift, I just made this thing in Ruby, I’ve made bots for hip chat in Coffeescript, this all started with Lua…

Real Developers…• Are polyglots

• Test-first always

• I don’t always test first…

• Test-first always is a journey, not a destination

• Pay it forward

• Contribute to open source

Test-first is a goal, an ideal. It’s Brigadoon. It’s the thing you strive for but never achieve because the value is in the attempt.

Real Developers…• Are polyglots

• Test-first always

• Pay it forward

• WTF do I have to offer…

• I volunteer at meetups, I mentor, I teach my friends.

• Contribute to open source

I do things! And I have a lot to offer, I know what it’s like to be struggling to learn and how to pull through.

Real Developers…• Are polyglots

• Test-first always

• Pay it forward

• Contribute to open source

• Open Source Is Scary…

• Well, okay. But that’s a dumb reason not to do things.

We all do scary things every day, like get out of bed and talk to other people and drive in cars. It’s good for you to do scary things. And it’s good for you to contribute to open source.

Why do I keep doing this?

First it was just stickers and command line emoji, now it’s “Be able to simultaneously code in haskell and assembly” and “contribute to Ruby core.”

Why does “real” even matter?

Why does “real” even matter?

Nobody cares about your stupid problems.

This is the most frightening and liberating thing you can learn about life, right?

Why am I even worried about this? What does it matter if I meet some standard that doesn’t even exist?

–Some hippie folk song my parents listen to

“Ships are safe inside the harbor, but that’s not what ships are for”

And here’s the thing: the problem really isn’t that I’m not a real developer, the problem is I’m afraid you’ll find out I’m faking it.

• If you are afraid of messing up, you are going to code defensively

• If you are afraid of messing up, you are going to code defensively

• If you code defensively you won’t take risks

The stupid things I do when I’m spiking by myself vs. the safe path I take when pairing.

• If you are afraid of messing up, you are going to code defensively

• If you code defensively you won’t take risks

• If you don’t take risks, you don’t discover anything new

–Some teenager in a Che Guevara t-shirt

“Question authority”

• If you are afraid of showing ignorance, you won’t question things

It’s not that I don’t feel like a Real Developer, it’s that I don’t want other people to realize that I’m not a Real Developer.

• If you are afraid of showing ignorance, you won’t question things

• If you don’t question things, you won’t understand them

Like getting my weather emoji actually on to my command line—I was so afraid to show I didn’t know, I wasted two days. When I finally asked somebody, they explained it in under five minutes.

• If you are afraid of showing ignorance, you won’t question things

• If you don’t question things, you won’t understand them

• If things are never questioned, they never change

Wow.

I’ve never seen a woman

doing Objective C before!

• Gatekeeping is a thing

• Gatekeeping is a thing

• A terrible thing

some examples—the pop quiz guy

• Gatekeeping is a thing

• A terrible thing

• If I don’t think I’m a “real” developer, the gatekeeping weasels never will either

But there’s something more insidious here—remember, the problem isn’t that I don’t think I’m Read Developer, it’s that I don’t want other people to find out! So I start explaining about marking and sweeping.

• Gatekeeping is a thing

• A terrible thing

• If I don’t think I’m a “real” developer, the gatekeeping weasels never will either

• Even answering the weasels reinforces that the weasels have the right to ask

And, also, there’s better ways to express happiness at seeing someone new in the community

Side NoteThere are ways to express delight at seeing someone

new, or someone who for some reason doesn’t “look” like most of the people in your community that don’t make you a punchline in conference talks for the next year.

Talk to me later, I’ll give you some scripts so you can not be That Guy.

How do I start to feel like a real developer?

More stickers? Learn more languages? Get therapy?

I was right all alongThere really are two steps.

And they are pretty simple.

Am I real?

Immanuel Kant was a real pissant

Who was very rarely stable. Heidegger, Heidegger was a boozy beggar Who could think you

under the table. David Hume could out-consume

Schopenhauer and Hegel, And Wittgenstein

was a beery swine Who was just as sloshed

as Schlegel.

I’m going with this guy.

Am I a developer?

Am I a developer?

• I’ve got a github sticker

Am I a developer?

• I’ve got a github sticker

• I’ve got a pimped out command line.

Hi. I’m Anne, a real developer.

northofnormal