learning

Dev Bootcamp Rap Recap: Week 1

Let’s try something different on the weekends, yes?

Yes.

Listen up.

Annotated lyrics below:

I’ve only been here for a week
But I’m already feeling like it’s gonna be the year of the geek
My peers in this effort are clever and clearly unique
Climbing this mountain and a coding career’s what we seek
And while we’re nearing the peak, we have Sherpas
who pack for us and transform us from bad learners
into stack warriors fast forwarding our grasp on how the code works. 
It don’t hurt to ask for it if you need guidance,
cause the speed frightens the bravest of souls
searching for knowledge they can aim to control. 
Working with scholars trying to daily expose your vast ignorance
leaves a bitter taste in your mouth like black licorice;
I won’t candy coat it, it’s hard work for most folks,
but getting through it together is how you grow close.
This OO and TDD is no joke at DBC…
who needs degrees if your code’s dope?

Time to put an end to the foolishness
I got foo-bars and drop gems like a Rubyist.
The loop exists until I’m greater than or equal to great
at believing mistakes are the building blocks of usefulness.
Cause perfectionism’s a recipe for hurting
but still, some people do it to themselves like recursion…
this is programming examined by a wordsmith
my stack’s overflowing with verses. 
You ask if it’s worth it, 
like, “should I really have the time to blog?”
maybe you heard it’s long nights involved and that’s true. 
But if I’m never signing off I’ll burn out like a dying log
and that’s realer than a float or an integer
I’m trying to state the obvious: 
you gotta save time for yourself like a modulus, 
cause if it’s nothing left over you’ll stress over the smallest little problems
and not arrive at accomplishment.
That’s why I gotta spit sometimes
I’ve only got one mind
adjusting to the hustle of crunch time.
I bust rhymes and return to the screen craft
with a passion for tapping keys, stabbing at tab as I punch lines…
So what’s prime? How do you test for it?
Describe the type of data structure that’s best for it.
I’m going in like a nested array
debugging out till the end of the day.
– thIIIrd person

Back to the keyboard tomorrow. This was fun. Let’s do it next week.

Advertisements

My Life Needs CSS and Blogging is My Stylesheet.

Blogging hurts this week.

It hurts because I’m fully in this Dev Bootcamp thing now. Invested in it. Awash in it. Complicit in it. I’ve been funneling free time into learning exercises, getting to know a few dozen (very kind) people in my cohort, asking a lot of questions, and juggling work and family life with all the energy I can muster. At the end of a long day, I don’t want to blog; I want to watch something stupid on Netflix while I read through lesson material or tool around with CSS.

CSS tangent: Positioning is owning my face right now. I feel like I’m hacking around in the dark instead of anticipating what a margin or padding or float change will do to the browser display. I barely understand fixed vs. absolute vs. relative vs. static. Barely. And it’s doubly frustrating because these are literally the skills that separate your Facebooks from your Facebooks-that-didn’t-load-properly-and-now-everything-is-stacked-on-top-of-each-other. I can feel myself starting to catch on to some stuff. It’s slow going. I’m frustrated and hopeful.

Blogging hurts because I want to spend all my precious time flailing at CSS until something gives way and sweet understanding spills out like the code is a curly-bracketed piñata. It hurts because my fingers are already tired from writing. At the end of each of the five exercises I’ve completed so far (four to go!) is a call to reflect on what I’ve just learned. I take every self-reflection seriously, which means I’ve written about 3000 words since Monday. I’ll write at least another 2000 this weekend. It feels like there’s nothing left over to blog.

And yet…

About half of this week’s assignments involve creating a page from scratch and populating it with content. I’m supposed to tell the world a little bit about myself, link people to stuff I care about, study other websites and report back on what makes them tick and why users might like them, describe Dev Bootcamp culture as I see it, even sketch out a wireframe. (I don’t have any idea what that means yet. Give me til Sunday, I’ll get back to you.) All this content creation is just like blogging, only it’s hosted on GitHub, where instructors and other boots can comment with constructive feedback and keep each other sharp.

It makes sense to keep blogging, even when it hurts, because I still need an outlet beyond this mandatory work to share how I feel and what I’m struggling with. Blogging helps me grow faster. Half the time, while I’m typing a description of some problem, a possible solution just pops into my head. And every time I reflect on mindfulness or growth mindset or emotional intelligence, it’s a reminder to myself that these things are more important than I’ve given them credit for in the past. Plus, I still plan on looking back on my journey when I turn twenty-AHEMCOUGHCOUGH in October, and it’s more fun to look when I’ve written more down.

My default escape is to find refuge from my work in my home life and find refuge from my home life in mindless entertainment. It’s a habit I’ve cultivated since I was a kid. It’s comfortable to me. The thing is, the stuff that’s comfortable to me never makes me happy for very long. Work or dishes pile up and I end up resenting myself for letting things get out of hand. I need focus and structure to be at my best. Comfort is the enemy.

I could say to myself, “You’ve put in a couple good hours on coursework today. Reward yourself. Blogging is a chore. Don’t mess with that.” And there would go another day I’ll struggle to remember when I’m trying to recall why I got myself into this huge life commitment come summer. I don’t want to lose days like that. So I do what hurts. I work up the courage to start writing about how I feel and I don’t stop until I’ve learned something new about myself or solidified something I knew about something else.

My life is like a CSS stylesheet. I have all these classes and ids assigned, #dev_bootcamp and .family and .work and #leisure and .self_care, and I have only so much time (browser space) to put them in, and it’s up to me to edit each element so they all flow together in a way that’s visually (existentially) pleasing. Sometimes I can tell what will happen when I edit a value: If I increase the margin width of #dev_bootcamp, I’ll do a better job clearing my head before and after working on a project. If I pad my #leisure, it won’t bleed over into other areas of my life when it shouldn’t. If I don’t assign a fixed position to .family, there are days when I forget how to scroll back to it.

Positioning is owning my face right now. But blogging, at least for me, is a way to step back, look at the big picture, and set my template before I start filling in the content. Sure, I could get along fine without it most of the time, but that’s a bad slice of fate to tempt. Eventually, my life’s <div>s will get complex enough that they’ll crowd me right out of the window unless I know how to handle them beforehand. So I write, and it helps, and I come back to write again, and I inch toward the best kind of discomfort, where I’m still on edge, but it’s the front edge, and I’m wobbling because my edges are expanding, and I’m going somewhere.

The Thinking Trap.

“Thought is a dangerous habit and should be avoided whenever possible.” – Dennis Waite

“The only problem that I have is that I think too much.” – Vinnie Paz

Here’s how it usually goes for me. I start learning about a new programming concept, I hit that first big knowledge wall, I lose steam, I get discouraged, and then one of two things happens. Either I keep plugging away, reread the material, fool around in the text editor until something clicks, or I quit what I was doing and retreat to Facebook or Netflix or whatever.

When I do that second terrible thing, I tell myself I’m just taking time to think. That by stepping back and letting my mind work over things in the background, I’ll somehow magically learn the whole lesson and return to the challenge with the right answer, fully formed in my skull.

Thats the trap. Learning something new is an interactive process. I need to do the work if I want to get better at it. Thinking about programming a recursive loop is like thinking about practicing the oboe. I can do it all day and feel really good about myself, but when it’s time to perform, I’ll sink if I haven’t ever turned offmy inner monologue and pulled up a chair and just done the damn thing.

For me, thought is a refuge from anxiety. Learning is hard sometimes, and it can make me nervous. Thinking about learning is easier than actually pushing through the process itself. Thinking feels safe. I know what it’s like inside my head. It’s predictable. Less scary than going out on a limb and not knowing if it will support me. Especially when I’ve been conditioned to fear being wrong by a society that punishes imperfection instead of rewarding exploration. So I think. And I smile. And I feel proud of myself for thinking so well.

And I don’t get any better at anything.

If my brain could learn programming by thinking about learning programming, I’d already know everything there is to know without ever cracking open a book or writing a line of code. But since it can’t, and I don’t, my best bet is to build up my “keep trying anyway” muscle.

If I can do that, I’ll develop a habit of growing without giving up. And that’s a habit I’ll never have to avoid.

 

Follow-Up: The Scoop on Dev Bootcamp

Ok, maybe not “the” scoop. But it’s my scoop. After connecting with several DBC grads via email, Facebook, and Twitter, I know what to expect from Dev Bootcamp. At least I think I do.

This post marks the gripping conclusion of the search I started in this other post. Check the comments in that one for answers, too. Dave Hoover, who runs the Chicago DBC, stopped by to provide some helpful numbers and guidance.

To get my information, I tapped family networks for knowledgeable contacts, talked to people who have hired (and rejected) applicants with a Dev Bootcamp pedigree, asked DBC admissions staff to introduce me to boots, scoured the blogosphere for grads with current contact info, pestered Twitter users with DBC credentials in their profiles, and used an app called BootieTracker, created by a team of boots, to locate Chicago-area students and message them on Facebook with my questions.

I asked a ton of questions.

I wanted to know if the life-changing experience touted on the website was for real, if I would get help when I needed it, if the journey would be worth the effort.

I wanted to know whether people really went from 0 to 60 with no prior programming experience, whether a lot of people were getting kicked out to inflate graduation rates, whether DBC’s stats – 85% hired at $75K per year on average – were accurate.

I wanted to know how people handled the grueling pace of the program, how they felt about pair programming, how they struggled and overcame their setbacks, how they fared after graduation.

I wanted to know what boots wished they had known going in, what the program looked and felt like, what tech companies thought of Dev Bootcamp graduates, what grads took away from the experience as a whole.

I wanted to know everything. That’s what I generally tend to want. And I never get it. But I can get close. And I feel like I got close with this round of research. Close enough that I’ll be plunking down my deposit this week and focusing all my energy on Phase 0 prep. Let’s go over the info that cemented my decision.

Bullet points? Bullet points…

  • Most boots graduate. Everyone I spoke with reinforced Dev Bootcamp’s claim that the overwhelming majority of boots complete the program. Though a few do get asked to leave, and others drop out, those are the exceptions that prove the rule. In general, if Dev Bootcamp thinks you’re passionate enough to get accepted, you’ll be passionate enough to see things through. (This only applies to Phases 1-3, which take place onsite. The in-home Phase 0 might have a higher drop rate, but the nature of my search made it impossible for me to figure that out. And I was less interested in doing so, because losing steam at the start isn’t too costly; if you drop within the first three weeks of the intro phase, you get all your tuition back except for the deposit.)
  • Apprentices get paid, too. When I first looked at DBC, the path to becoming a junior developer sounded like this: 1) Apply. 2) Get in. 3) Work hard. 4) Poof! 5) You’re a junior developer. Nope. Not even close. The reality is more like this: 1) Apply. 2) Get in, start learning. 3) Work as hard as you can. 4) Learn as much as you can on your own time. 5) Get a job where you can keep learning on the clock. 6) Learn at work, after work, and on weekends for several months. 7) Somewhere in there, you become a junior developer. For a lot of graduates, step 5 means starting out as an apprentice, someone who does very basic stuff for the company while learning more complex stuff for themselves over 3 to 6 months, after which they either say goodbye (repeat step 5) or stick around as a real developer (step 7 completed, now do step 6 for the rest of your life). The good news is that apprentices in Chicago still make a living wage, anywhere from $40,000-$55,000 a year. Not a bad gig for a fresh-faced boot.
  • Repeating phases is a thing. Buried beneath the “Intensive 9-Week Program” branding is a deep desire to see boots succeed. Students invest a lot in DBC, and it looks like the investment is mutual. These guys really don’t want you to fail. So if you’re faltering at the end of a phase, you can retake it one more time to lock it in. Boots repeat Phase 2 the most. Phase 3 can’t be repeated, because it’s the final project and career planning phase, less about pure learning and more about applying principles in real-world terms. Some boots recommended that I budget extra time and money in case I need to rerun a phase or two. I’m glad I got this information before I settled on a rent arrangement for my stay in Chicago!
  • The command line is your best frienemy. When grads gave me advice about how to prep for Phase 0, learning the command line (Terminal on my MacBook) was the most emphatic recommendation. I need to practice navigating and managing folders and files, calling up help screens and manuals, and learning shortcuts to streamline my time. Since this work is all about the code, and the code is running in the command line, I must choose to befriend it or fight it every step of the way. Those I spoke with couldn’t stress it enough to me; I can’t stress it enough to anyone reading this for help.
  • Less HTML, more JavaScript. Dev Bootcamp primarily teaches Ruby, Rails, Javascript, and basic HTML/CSS. Of the four, HTML/CSS seems to be stressed the least. One graduate said I should refresh myself on the bare-bones basics and then get back to the Ruby and JavaScript stuff. Still, I shouldn’t beat myself over the head with JS, though, since DBC does a good job of teaching everything at the right time, and Ruby comes first. I was told to get the Code Academy JavaScript track done and leave it at that.
  • Pair programming can help…and hurt. Working in tandem is a great way to accelerate your growth, if you and your partner have similar proficiency and learning styles. If not, the imbalance can be a hurdle. Working with someone who leaves you in the dust could inspire you to push yourself that much harder. But it could be discouraging, and someone used to functioning at a faster pace may not take the time to reach back and help you get on their level. Working with someone much slower than you might feel like a drag on your time and energy, though teaching a concept is often the best way to learn it. However you feel about pair programming, it’s going to happen, so be prepared to work empathetically with other human beings. And remember to speak up if you feel yourself floundering, because…
  • Asking for help is good. And necessary. Dev Bootcamp says this, current students say this, graduates say this, employers say this. Knowing when you’re stuck, and looking outside yourself to get unstuck, is a crucial habit to develop. Use Google, Stack Overflow, GitHub, teachers, mentors, peers, whatever you have at your disposal. The students who knew how to swallow pride and ask for help grasped concepts faster and got more done each day. Being humble is always better than staying in the dark.
  • Experience matters less than passion. Some of the people I talked to had walked away from computer science majors. Some came from business or teaching backgrounds and had spent a couple years learning to code in order to solve work-specific problems. Some hadn’t touched code before they started at Dev Bootcamp. But every single grad I talked to was passionate about programming. It’s passion, not knowledge or expertise, that keeps someone on campus for 14 hours a day during the week and 10 on weekends. Dev Bootcamp gives people the tools they need to become “world-class beginners;” you don’t need to bring many tools of your own. But sharpening them takes a lot of time and effort, and passion makes the effort worth it. By the end of the three phases, those who showed the most hunger and drive were the ones who thrived.
  • Success is in the struggle. I had to take some time with this one. I asked several grads, “What were some habits of successful students compared to students who struggled with the material?” One answer: “…Well, what do you mean by success vs. struggle?” Another: “Dude, success comes from the struggle. You’re thinking about it wrong.” My bad. I hadn’t let it sink in that every single person at DBC faces an uphill battle. Strike that, we’re talking mountains to climb. And the successful people are the ones who get in there and strengthen their climbing muscles, the ones who learn by slipping how to grip better, the ones who aren’t satisfied with climbing only the mountains they know they’ll scale on the first try. If I’m ready to feel helpless, hopeless, and afraid, I’m ready to push through that and get to the wisdom that lies beyond.
  • You have to find your own cheese. More about the learning environment: This isn’t a classroom where you listen to lectures about mazes and cheese all day, poring over maze theory and case studies of dairy farms, and then take a test on paper with a closed book and multiple-choice questions. It’s a place where they throw a ton of information at you at the beginning of the day and then say, “We’re dropping you into a labyrinth. There’s some cheese in there. Go get it.” On some days, you’ll find it in an hour and spend the rest of the day teaching others how to find it or building a new labyrinth of your own. On others, you won’t find the cheese at all. The DBC curriculum is designed to reward experimentation and prepare students for a career where they’ll fail at things the first time, all the time. This flies in the face of an academic culture that rewards keeping your mouth shut and not opening it unless you know you know the right answer.
  • If you want the work, do the work. Employers stress that successful DBC hires are self-motivated and willing to push themselves outside their comfort zone. The grads that don’t get hired are the ones who stop learning once the program ends. Dev Bootcamp gives people a blueprint for self-instruction; if a person refuses to learn Java to get their dream job at a Java shop, that’s on them. Some of the graduates I talked to spent months sending out hundreds of applications and doing dozens of interviews. The word “hustle” came up several times. In essence, if you’re the type of person who can push themselves through a 100 hour a week commitment, you can push yourself into the workplace too. But you have to keep pushing, expanding your skillset and fleshing out your understanding by creating real projects on your own time and posting them to places like GitHub.
  • Learning never stops. If you want to be a programmer, there is never a point where you’re “done” educating yourself. Everyone I talked to said they spent big chunk of their free time attending programming events, tinkering with code, learning new languages, and so on. Senior-level programmers are the hot commodity in the web development world, and if you want to get there, you must several years of focus and dedication to take in all the information required to function at that level. Dev Bootcamp functions as a learning accelerator, and that function is twofold: in the coming months, I should expect to learn things faster than I ever have before, and I should expect to learn enough about how I learn to be able to teach myself new concepts as quickly as possible.
  • The rewards are real. Dev Bootcamp claims that 85% of grads get hired and that most of them are making upwards of $70,000 a year. Is this true? Yes and no. Check in with someone a couple months out of school and they’re probably apprenticing somewhere, building up their coding chops. Or they’re still searching for work while attending hackathons and making apps. Wait a year and check in again, and they’re likely working a job they love for pay that skews way closer to the advertised median. It’s all about who you ask, and when. Again, significant work is required to get significant results, but the results are easily achievable. It’s worth mentioning that people also felt their experiences represented those of their cohorts. There’s not a lot of variation in the stories I was told, which leads me to believe that no one’s BSing here.

Whew. That pretty much sums up what I’ve learned from my search. I’ll have plenty of firsthand information to share in due time, but you’ll have to settle for secondhand until I actually start my phases. The lessons I learned are pretty high-level; take away the first six points and this isn’t just advice about Dev Bootcamp. It’s about life. Which is why I’m so excited about it. Everyone I talked to said DBC changed their lives for the better. And no one had lost their passion for learning; if anything, passion intensified once boots graduated.

I love to learn. If I could choose any superpower, I’d want this one right here. If Dev Bootcamp can help me get a tiny bit closer to that level, then I’m in. Let’s do this.

Now, if you’ll excuse me, I have to go wrap my mind around recursion. Time to struggle.

April O’Neil, out.*

tl;dr It’s for real, it’s super difficult, and it’s worth every penny of the $12K tuition if you’re willing to invest the time as well as the money. But only if you love programming. If it’s all about the financial upside for you, get out while you still can.

 
*Don’t ever do a Google Image search for April O’Neil. Please trust me on this, and enjoy the default post image for now.

April 5-11: My week in ten haiku.

 

Begin confident.
Learn, falter, learn even more.
Repeat tomorrow.

 

When constructing loops,
put an end in view, then go.
So it is with life.

 

Do stoner coders
hack all day, and once asleep,
dream of hash rockets?

 

Cursing line twenty,
she hunts for the bad syntax.
Aha! No comma.

 

Twitter seduces
from the edge of his workspace…
minimize window.

 

The ladder’s too tall
to tackle all at once. Breathe.
Then grab the next rung.

 

“Mindfulness? A fad!”
Smug, the programmer forgets
what he was coding.

 

I swear I’ll begin
to learn Sublime once I can
pick a color scheme.

 

Fingers move on keys
and bring forth elegant lines.
Piano or code?

 

Every Boot I ask
says it’s worth the time you spend,
and to spend more time.

Dr. Strangecode, or How I Learned to Stop Raging and Get Unstuck

Frustrating. Just spent 20 minutes banging my digital fists against a wall, wondering why I couldn’t solve this simple, baby-spoonfed problem. Feeling like an idiot. Wondering why I couldn’t get it right. Even starting to doubt myself a little bit. Was I really cut out for this?

The challenge was to create an array sorting method with a reverse-alphabetize function. You can find it yourself in the Ruby training. It’s in chapter 10, Ordering Your Library, lesson 5/6. I’d link it, but I’m mad. Because the solution thingy was broken.

When I stopped groaning and let myself check the Q&A forums for a lifeline, I saw that my code was actually a perfect match to someone’s submitted solution. The only issue was a glitch in the system. Vindicating, frustrating, and kind of inspiring. Because, when I was stuck, I tried different solutions that looked more wrong, but ultimately came back to the one that felt right. And it was right.

Almost right.

Despite the occasional flaw, Code Academy is great, and the greatest thing about Code Academy is this little picture-in-picture window next to your code, where you can see your work running immediately after you write it. I’m good at context clues, and I’d been seeing “nil” show up on incomplete code a whole lot. Basically it happens when the program is done running, and there’s nothing to print. The Ruby tester throws the word up to confirm that something happened and that it then finished happening. Even after I tested what I “knew” to be the right answer, I was getting that nil. No output, just nil.

Luckily, looking up your learning styles and using knowledge of self in your workflow is a mandatory part of DBC prep. Last week, I had reaffirmed something I’ve known about myself since I was 7 and reading my parents’ books about raising me. (I may have been an annoying little s*** at age 7, but at least I was an informed one. Wait, maybe I was a little s*** because I was informed. Moving on.) I’m a concrete random learner. Which means, among other things, that I’m a verbal guy, and I do a lot of experimenting to solve problems, and I need to do things my own way.

Oh, and that I do things out of order sometimes. And I digress a lot. I know I was talking about fixing the nil. Let’s revisit that.

Working out of order, doing little chunks of everything in the Dev Bootcamp prep packet, I had already installed Sublime Text 2 and set up my Terminal to handle Ruby, Rails, Git and Heroku (no idea why yet, but dammit, I did it). It’s how I became prepared to work through Chris Pine’s Learn to Program text. Now that I knew Code Academy’s tester was suspect, I reverted to tech I knew I could trust. I copied my code into a Sublime file, saved it as a Ruby app, and loaded it up in the command line. Bingo! Nothing showed up.

Long story short, the Code Academy chapter had been letting me get away with a misplaced and/or unspecific “puts” command (puts prints things to the screen and then starts the next work on a new line). With the code in a different window, I felt freer to explore. And I fixed the glitch in a couple quick keystrokes. That felt good.

I think I can understand the frustrated “stuck” feeling that DBC graduates say they broke free from at Dev Bootcamp. They say that learning how to get unstuck is one of the most important skills in a good programmer’s toolbelt. And they also say that short bootcamps do a great job of sharpening that particular tool, by surrounding you with other strugglers and mentors who know how to bring a stuck student into an aha! moment.

Learning is always hard, and it’s always fun. I think I learn things a bit more quickly because I have more fun learning. But there’s nothing fun about getting stuck because your teacher screwed up, or because your textbook was misprinted. Code Academy is way more good than bad, but I can see where the rough patches would stop others from moving forward on a path of self instruction. I just see the roughness as reinforcement that I can’t learn optimally in a suboptimal environment, and it’s hard to gauge how good a learning environment is when you hardly know anything about the material.

That’s why I wanted to go to Dev Bootcamp in the first place. I know I’m smart enough to take a couple years, muddle through things on my own, and get enough groundwork in to apply at a program that’s less “0 to 60” and more “20 to 90.” But I don’t want to waste years on silly hangups when I know my own potential is so high. I want real people, with real job experience in a real market, giving me the tools I really need to push beyond myself. The kind of tools where it won’t matter if I know the “right” coding language, or the most elegant solution, at least not this instant. Because I’ll able to adapt, able to grow, able to get myself unstuck from anything.

To do that, I’ll need more than hours alone at the computer. I’ll need a good human teacher and a kick in the pants.

From a boot, preferably.