Dev Bootcamp

The Rockwell station.

You Have To Know What Scares You More

I graduated Dev Bootcamp in September, and got asked to come back on contract as a junior instructor, and that job became full-time official last month, and that meant I finally got to reunite my family in Chicago, so we’re together again and my career trajectory has changed in a huge way and 2014 was the most amazing year of my adult life.

But that’s not what’s important for today.

What’s important is that my family moved to Lincoln Square, right off the Rockwell Brown Line stop. That matters because the train is at street level at Rockwell, which means I get to see a drama play out every morning that reminds me of my work.

The Rockwell station is just west of its namesake street. A street level station means there’s no bridge over Rockwell, just a track embedded in the asphalt and four big lighted wooden arms that come down when a train’s about to cross; it’s a railroad crossing, and sometimes people get hit at crossings, so there are bells and flashing red every few minutes before Kimball-bound trains slow down into the station. Or before Loop-bound trains arrive at the station, load up, and then cross Rockwell heading east.

The timing matters for this analogy. Kimball trains come through the crossing faster, since they’re decelerating from speed. By contrast, you’ll see and hear the warnings for a Loop train before the train has arrived at the station, before it has slowed down to a stop before the closed crossing, before passengers have boarded.

And I say all this so maybe you’ll think differently about the kind of person who would ignore bells and flashing lights and duck under a descending wooden arm to make their train. Maybe they’re not ignoring a clear danger. Maybe they have enough context to know when there’s no danger at all.

For many DBC students, the beginning of Phase 1 is all loud warnings and descending arms. Day One hits and it’s FULL – intros given, overviews covered, rules communicated, and on top of that there are several code challenges to get through in what amounts to only a few hours of core coding time. It’s hard to get through everything on the first day, and if you don’t, the fullness of the day gives your ego an easy out: “surely tomorrow, when there’s more time to code, I’ll get through the challenges easier.”

And then comes Day Two and the pace actually increases and it’s really easy to feel like you’re already in danger of total challenge/day/program/career/life failure, depending on how loud your inner authoritarian can yell at you from inside your head.

Before Dev Bootcamp, you were really good at something, art or negotiation or electrical engineering or parenting or sales or being a full-time student, and a lot of your identity is wrapped up in that first expertise. Society messages to us that everyone’s supposed to get good at something and then make some money doing it, and we get nervous enough about the money part that we forget to challenge whether that “something” really needs to be singular for anyone. It’s not that you can’t take on a brand new skill as an adult (I’ve personally watched hundreds do it since last May), it’s that no one’s ever explicitly told you that it’s totally normal, it might even be the default path to happiness, so all you’re left with is the sense that you’re struggling and that you’re doing it alone, because who’s ever done anything this crazy before?

Well, your cohort’s doing it, so that makes you feel safer. And you’ve got instructors who did it, and that helps a lot. But inertia is powerful, and when your brain can’t get its daily expected dose of expertise dopamine, two days in a row, it can make you panic all the same.

I’ve seen a few people have to leave DBC. Sometimes the program just doesn’t fit a student’s learning pace, and it hurts to say goodbye, because you still know they’re going to go off and become great coders one day, but you won’t be there to see it. But sometimes a student just hits an emotional wall and shuts down, and it has nothing to do with their technical prowess, it’s all about their courage.

It goes something like this: “I know I’ve already repeated this phase, and I really need to buckle down these next three weeks if I want to pull through. But what if I summon a Herculean effort and I’m still not good enough in time? Maybe it would hurt a little less if I just tapped out now and failed on my own terms. At least then I could retain some sense of control.”

This morning, on my way in, I saw the gate start to come down, and three people took off running to beat it. Two ducked under, and the third decided at the last moment not to chance it.

If the train represents a perceived danger, and the wooden arms are the ego’s defenses against that danger, maybe the difference between those who go for it and those who hedge is in the context. Maybe Runner 3 didn’t know it was a Loop train and that there was plenty of time to duck even after the arm had dropped completely. And maybe the knowledge that DBC is a safe place to learn and make mistakes, the knowledge that you’re surrounded by students and mentors and teachers who have your back and will help you succeed, the knowledge that so many before you have found success here by trusting the process and bringing their whole selves into the struggle…maybe that knowledge will empower you to pick your moment, stare down the train and get yourself where you were trying to go.

However… what if the train represents a path to somewhere awesome, a path you can miss out on traveling if you hesitate for too long? If that’s the case, maybe the arms and bells and lights are the ego’s defenses against personal change, and maybe Runners 1 and 2 weren’t afraid to duck under them because they knew the ego is a vicious liar when it doesn’t want change, and in that context the warnings weren’t warnings at all, they were just excuses.

But that’s not right either. Coding (and, I’m slowly learning, life itself) isn’t about finding the right solutions, it’s about the best solutions available considering the specific situation and the tradeoffs involved. There’s no black and white, just pros and cons and a choice to be made.

And if that’s true, the train is both danger and opportunity. It’s not your death or your salvation, it’s a risk. It might crush you, or it might open its doors and let you change your scenery. But the tricky part is that when the bells start to go off and the lights start to flash, you will need to decide for yourself what the warning means, and you’ll need to act on that decision quickly.

It’s convenient that I ride toward the Loop way more often than I ride toward Kimball, because it gives the analogy another layer. When I hear the bells and see a train barreling westbound toward the tracks, I know ducking the arm would be a stupid risk, not because I’m more likely to get crushed by a westbound train, but because west is not even where I need to go. Hopefully, long before you started DBC, you got at least a kick out of writing code that works; if not, this might not be the right risk for you in the first place.

But that’s hindsight at this point. You’re here now, and you’re uncomfortably new at this, and the work is really hard, and your defensive brain is warning you that you might be in danger. And yet the train that’s endangering you, these challenges, this process, the uncertainty of what comes after, the uncertainty about yourself, is the very reason you left the house in the first place. At this point, you can hold yourself back or push yourself toward the risk.

I don’t know your tradeoffs, so I can’t speak for you. And it’s a scary choice no matter what side you land on. Scary like running through a railroad crossing is scary, because in both cases you’ve grown up being told to never ever chance it: “A career change? At YOUR age? But you’ve got such a good thing going…”

Still, I’ll bet money that while running through a railroad crossing is scary no matter what, one of those runners was more afraid of getting crushed, and two of those runners were more afraid of missing the train.

I graduated Dev Bootcamp in September, and got asked to come back on contract as a junior instructor, and that job became full-time official last month, and that meant I finally got to reunite my family in Chicago, so we’re together again and my career trajectory has changed in a huge way and 2014 was the most amazing year of my adult life.

For me, putting my head down and going for it was the right move.

Dev Bootcamp Rap Recap: Week 7

You’ll hear a lot more about Phase 3 in the coming weeks. This one’s more of a retrospective. I feel like I’ve come so far so fast, and I’m eternally grateful for the lessons I’ve learned at DBC. Check out the rap recap below, and read along with the lyrics below that. Have a great week!

The apprentice sat down next to the master and asked her how to use new tools to follow his passion.
She looked at him and smiled and took his hand like a child, and guided him to a table with blank canvas.
He sat scratching his head, cleared his throat and he said, “I wanna do bigger things! This really ain’t much.”
“You might be right,” she replied, “but way before you define a new art, first you gotta master a paintbrush.”

That’s how it felt the day I started out,
I thought I’d hold the whole web in my hands and stand tall and proud,
I sorta scoffed at the process people were talking ’bout,
and when I looked at the lessons I had a lot of doubts…
At first glance it all seemed esoteric and abstract –
I wondered if they’d ever bring us past that,
but as I moved from algorithms to a class act
I started craving the next challenge out the grab bag.
And as I flash back, marking my time here, it’s quite clear:
the real challenge was beating my fear!
All my ignorance masquerading as arrogance
is so apparent when I compare it to what I idealize in the present.
My mind is a weapon with double edge; if I never apply inner pressure then I’m only gonna hurt myself. 
I learned why help’s the greatest word I can speak to strive for the best of my potential
and I bet that I’m stronger than ever,
better for for the wear, aware of my heart and my head
I’m honestly at peace with who I’ve become,
and where I’m trying to go, cause I’m in the zone and remarkably stretching. 

I always thought that I could be like this.
I’m not perfect but I’m working like a fiend and I can see my gifts:
I learn best when I’m thinking with hands on,
I’m hoping I can keep with the plan to tinker with craft and stand strong.

And someday I’ll get paid to code
but it’s something money cannot buy that makes me go, 
I’m just a student who’s achieving in leaps,
loving the art of making beautiful and meaningful things.
I know the sky is the limit,
cause I write lines a little different than I used to
as I improve through the time I’ve been given.
Not just in Chicago, I’ll never stop coding cause I’m walking a long road,
here I go!

Dev Bootcamp Rap Recap: Week 6

I did it! I got through Phase 2 in one go, and I was so happy and proud of the effort I put in. Then Phase 3 hit, and the pace didn’t change. I feel like I’m hitting my stride, gaining more stamina when it comes to long coding sessions and grinding through the work in spite of feeling stuck on new problems. In the flurry of activity, I lost my hold on my blogging routine, but hopefully I’ll rediscover my balance this week. In the meantime, enjoy this rap recap. It’s a week late, and I’m trying to explain why in the lyrics. Read along below the video.

I know it’s a little late to ship this,
I know that I slipped out of existence,
cause I was turning my focus to JavaScript,
working and hoping that I could commit enough to live 6th week only one time,
and speed through the crunch time,
my social presence went from a feast to a lunch line.
I never guessed that I’d lose the heat from the sunshine; 
I was hidden and living at the peak of a CRUD grind. 

I kept reaching for a punchline only to grab lines of code from my troubled mind,
and catching up was the name of the game
my frantic pace was insane, I couldn’t even try to bust rhymes.
My priority shift was quite enormous: I quit from nightly blogging and missed shots to talk to my kid.
I had to sacrifice a lot for my wish to reach the Phase three spot but I did,
by dropping off of the grid.

I guess I did what I had to, banging on the door of potential until I passed through.
I’m hard-headed but finally understand dudes saying doing more than just coding can be a bad move.

And that’s true but I honestly think it’s worth it to try,
that’s why my rapping is returning to life,
I might not do it perfect – I’m uncertain and shy,
I might get down on myself and feel nervous at times, but that’s all of us!
Any programmer can lose confidence,
breaking links can make you think you’re an impostor but,
if you can weather the lows you can get back in the flow; 
I happen to know that it feels like an awesome rush.
So try not to play it safe –
test limits and get driven to win it working crazy late.
And let the struggle be your saving grace,
cause this emotional roller coaster is crazy but it makes you great.

Dev Bootcamp Rap Recap: Week 4

This week was the toughest and most inspiring yet. So I tried to write a verse as intricate and cross-dependent as the curriculum itself. Lyrics with links are beneath the video, and you might want to do some clicking, because some of these metaphors are kind of a stretch.

Enjoy!

It goes create-read-update-delete,
It’s no delaying the feverish pace we keep.
First we rake db:migrate and seed,
and then we table strings and make them sing.
Cause we’re sitting in with Sinatra, giving it all we got,
delivering something awesome and shipping it on the spot.
We’re dipping our toes in water and dripping a little knowledge to test.
I confess that it’s getting a little harder but we got this, we aren’t weak;
we stay cool and venture out (like a freon leak) into the web
and check the browser for the ERB, and we all see the progress of three long weeks.
Breathe, dog, breathe…because every day is a training one:
breaking CRUD toys with poise and having crazy fun,
raising up hands to ask questions and make ’em run,
staying tough, driven, and with it and never playing dumb.

Dedication is how we handle the pressure
and this user authentication is a valuable weapon.
I’m getting after the sessions. The routes are hooking up,
and that’s how the cookie crumbles when the packets are sending data
in hashes with hexes I’m feeling good which 
means the programming world is where I should live.
Ruby is dope but I’m flexible and I could switch
over to Haskell and that would make me a HOOD-rich codeaholic

…and at least I would be functional
but that discussion should be conducted when I get done with school.
I’m staying grounded about it and in a humble mood,
steady growing my knowledge like the seed of a mustard moves.
I’m journal writing these raps to sort of save state,
plus I hope I’m lighting a path like border gateways.
So if you feel insecure like port 80 observe my short statements
and maybe you’ll try to chase fate,

and witness why I’m believing in where I’m staying –
I’m saying these are some people with dreams and they’re amazing.
See, on the weekend we drink in these validations
’til we’re turnt up like one screen at a pairing station.
It’s apparent we’ll make it cause we’re looking out for each other
as brothers and sisters and getting good at what we discover.
It’s cool, we’re showing up because we love what we do,
and as for practice there’s never really enough to consume.
We stay hungry, but not for the dollar; we ain’t Puffy,
the Benjamins matter less than the drive to create something
and take it from me, if you’re just trying to make money
you’ll find this ain’t funny – the grind is straight nutty. Dig deeper.

I’ll try to help you see these things each week,
computers counting this as release 3,
and I’m on a mission to spit this out from DBC –
bringing more flow control than the TCP.

– Duke Greene

The Dev Bootcamp Rap Recap Repository

Here are all the Dev Bootcamp Rap Recaps I’ve uploaded to date. Thanks in advance for listening and pulling your friends over to your screen of choice so they can listen too.

Look for a new one each weekend here or at my homepage.

WEEK 1 (Full post with lyrics here.)

 

WEEK 2 (Full post with lyrics here.)

 

WEEK 3 (Full post with lyrics here)

 

WEEK 4 (Full post with lyrics here)

 

WEEK 5 (Full post with lyrics here)

 

WEEK 6 (Full post with lyrics here)

 

WEEK 7 (Full post with lyrics here)

The db:seeds of Discontent

The pace is starting to pick up.

We learned the basics of Active Record over the weekend, which let us use Ruby syntax to manipulate database information. A big part of the learning curve was practicing how to precisely define the relationships between data tables and translate those relationships into AR associations. We were given a few challenges over the weekend, plus a link to the necessary documentation, and told to get to work. Just like that, we’ve entered Phase 2, where students begin to learn faster than they can be taught, and self-instruction starts moving to the forefront.

Code challenges are getting complex enough that it now takes more time to explain to an instructor why I’m stuck than it takes for them to help me get unstuck. Multiple folders for models (data), views (pages), and controllers (logic) create a new challenge: when something breaks, any one of four or five files could be the cause, and figuring out which one is at fault only gets me a little closer to a fix.

And the clock is always ticking.

It would be an overwhelming situation without the time crunch. But there’s a time crunch. Getting hung up on a challenge and falling behind means playing catchup late into the evening and flailing to stay above water the next day, when they pile on more complexity and take off more training wheels. Today I felt the crunch in a big way, and it wasn’t even really my fault, and it sucked.

The task involved loading a huge list into a database and working with selections from it in Ruby. I had completed the challenge last night, but my pair for the day hadn’t, and I can always use some extra practice, so we got started. After a reasonable hour or so of work, things should have been going smoothly, but for some reason, results weren’t showing up like they were supposed to. Instructors stopped by to give us a few debugging suggestions, and we hammered away at our methods like lunatics, but we couldn’t dig to the core of the problem.  We started throwing up Hail Marys, printing every little thing to the screen in hopes of catching where we were going wrong.

In a moment of desperation, we tested for a ridiculous edge case, and that’s when we finally saw the issue: the database hadn’t seeded correctly. Our logic had been perfect since before lunch, and we had been spinning our wheels and questioning our grasp of the material for no reason. To make matters worse, it was now 4pm and I was exhausted and headachey. My day was basically shot, my energy spent.

And the next challenge was the real test of the day. We worked at it for an hour before the official day ended and I realized I couldn’t maintain focus any longer. Defeated, I slunk home for a nap and a blog break to clear my head.

Now it’s 7pm, I have at least one more challenge to attack on my own, and I’m still hurting from last night’s late recording session. I never like Tuesdays (too much structured lecture, not enough open coding time), but today was the hardest one yet, and it’s not over by a long shot.

So it goes. Not every day is a party. Frustration is definitely part of the package. But I’ll get through my work tonight, and tomorrow I hopefully won’t have to flail so hard. Maybe I’ll even pull ahead a little bit.

Whatever happens, my motivation still runs deep. And we’re actually making simple web applications now, which fires me up even more. Even on a crappy day, the reality is that I’M DOING THIS, I’m becoming a web developer, and the occasional outrage (why did you not seed properly, db?!?!) isn’t enough to knock me off course.

Every setback is a lesson. Every struggle strengthens my resolve. Days like this are the ones I’ll cherish the least, but ultimately they’re the ones that will matter the most. Bring them on.

But please, not again until next week at least. I’m tired.

Dev Bootcamp Rap Recap: Week 3

Raps. Lyrics. Links. You know the drill.

I’m leaving Week 3 behind,
trying to put it all together like a schema design,
and singing a rhyme’s another way for me to define
what I mean when I try to say that DBC in the CHI is the dream of my life.
So just breathe and type, for real, and try to heed advice
A db‘s the type of fabric people like
Cause whenever it gets rough you can SQLite
One two one two, and one to one –
I one to many a battle cause my puns are dumb.
I call a method to try and see how the function runs;
If I can inject a plus I can lump the sum knowledge of all of us,
working together and staying positive,
every table is inner joined, getting cooperative.
Listen, if it’s awesome you can accomplish it,
so keep holding your head high like an ostrich…

…but that’s the wrong bird.
I’d say “chirp chirp” but that’s the wrong word.
My Bobolinks are a class of bomb nerds
and we browse on trees like mastodon herds.
We craft sublime text, and when times press, we relax from high stress.
We work hard and play hard and learn hard to stay hard and attack the five tests the wisest.
A level-headed endeavor to weather the pressure is evident whether or not we’re killin it,
and if we need more time we hang back (no shame in that), we stay active with a will to win.
And though the hot sun still exists,
graduation is an oasis in the wilderness. 
The apps they make are amazing and they were built to give
proof to the point that potential is pretty limitless.

So make room – we’ll be making the same moves, like, way soon –
that’s the purpose of learning Phase 2.
Why do we rake through database groups and trace routes and break loops?
Yo – it’s how we pay dues!

I stay cool, calm, and collected
and get ready to greet new Mantis brethren,
I’m trying to increase my average freshness,
and my current high score is an Active Record.