The End

You, faithful reader (all one or two of you), probably suspect me of being a lazy procrastinator who has neglected his blog and left key portions of the story untold. You’re probably right, but the reason I’ve been procrastinating is that I haven’t wanted this journey to end.

I’ve always sucked with endings. When I wrote fiction, I dreaded getting to that point when I had to start thinking about wrapping up the tale. I didn’t want to stop exploring the world and the characters I had created. With Wyncode, I wanted to keep driving onward, learning and exploring new concepts with my amazing classmates.

But in fiction as in life, you can only avoid the ending for so long. A reluctant ending is better than none at all, so I will do my duty and bring this journey to its conclusion.

For the final project, my team built thebulk.co, a crowd sourcing site to buy items in bulk. The idea originated from one of my teammates. She had extensive experience as a project manager and had worked on big projects like HBOGo, so she was a natural lead for the team. We ran into tons of blockers throughout the two weeks we worked on the app, but we stuck together and overcame them all. We had a MVP (minimum viable product) ready just a few hours after the scheduled code freeze. And that was my fault, because I thought it would be a simple matter to set up AWS hosting for our images on the final night of work, and not only did that setup take up the entirety of that final night, it overflowed into the entire morning and past the code freeze.

From now on, I set up AWS right from the start.

With the projects on code freeze, the last week of Wyncode consisted of advanced lectures and presentation preparations for Pitch Day VI. We all learned quickly that presenting is hard work, and we sucked at it. Luckily, we had the entire Wyncode team there to help us prepare. We practiced our presentations a handful of times in front of live audiences, including a full rehearsal at Live Ninja’s #wafflewednesday.

Our presentations that morning were disastrous. And the next night, we had to perform in front of hundreds of people, judges, companies that might hire us, and venture capitalists. One of the things I’m most proud of is the improvement all the teams made from that morning to Pitch Day.

 IMG_0980

We all killed it that night, and it was an amazing night with tons of surprises. It started with our head TA announcing he was leaving and taking a job with Udacity in San Francisco. Needless to say, we were super excited for him, and that set the celebratory tone for the night. And to end the night, we learned that one of our very own classmates, whom we had taken to calling Superman, was going to take over the head TA position! He has big shoes to fill, but I’m confident he’s going to soar.

At the end of the night, I had the opportunity to chat with a few people looking to hire coders. I collected and distributed business cards and followed up, but nothing really came out of those conversations. Luckily, I had already been in talks with one company to complete a project for them as a consultant.

That night, I celebrated with my girlfriend, my brother (who flew in from Baton Rouge to attend the event), and my parents. That weekend, I celebrated with my old friends who I had been badly neglecting over the two month bootcamp. And then Monday.

Up at six a.m. Back to my old job. Most of my classmates were back at The LAB, collaborating on projects and studying to improve their skills. I was in my small, spartan office. The room is about the size of a small bathroom. It’s freezing because the old AC at the school can’t regulate temperatures right. No windows. There’s one poster, a Heat Championship team, on the wall, and lots of papers thumbtacked to a cork board. Papers with medicaid codes, CHC processes and cross-battery assessment, bell curves, language dominance classifications, certificates from trainings, and my go-to reference for projective assessments. All my psychological test kits stacked in the corner like kindle for a funeral pyre. My entire library was boxed and taped shut.

I had stripped my office before the end of the school year with the intention of never going back. And yet, there I was, unable to believe Wyncode was over, and dreading losing coding time because I had to evaluate the next kid on my case load. I had told myself that if I ever stepped foot in that office again, I’d be a big fat failure. It would mean that I wasn’t smart enough, that I couldn’t learn something new, that I was too old to start a whole new career.

That kind of thinking led to a rough start to the week. At The Lab, they were having Wynterviews each day, during which teams from hiring partners came and interviewed each of the final-project-teams. With work, I had a hard time making it to the interviews, and I hadn’t received any solid responses from my resume submissions on job boards. I saw myself at sixty, sitting that that tiny closet of an office, shuffling the same papers around after completing yet another evaluation.

And then Thursday, I got a call from the company I had been in talks with to complete their project. I had been in competition with a firm from Boca, and they had decided to go with me. Could I meet with them on Saturday to kick off the project?

And like that, I had a job.

I’ve been winding down my last two weeks, leaving things in order for whoever comes to take over after me. And of course, I’ve been studying my ass off, trying to build my skills so that I can be effective on my first gig. So really, the end is just the beginning, because the greatest thing about wynning code, is that the journey never ends.

A HUGE thank you to the entire Wyncode team and all my classmates for making these last two months truly special. And I can’t finish without mentioning our head instructor one more time, Ed Toro. If any future students are reading this, be prepared. Ed’s instruction moves blazing fast. It’s impossible to keep up (unless you’re Superman). Don’t fight it. Embrace it. Realize that Ed is trying to download decades of coding experience and knowledge into your brain in just nine weeks. You’re not going to get it the first time…in fact, you might come back few months later to tell him about this cool new trick you learned, for him to tell you that trick was covered in slide 38 of the Ruby methods lecture during week two. So until the day that he designs a Matrix like interface to make you a programmer in an hour or two, just do your best keep up.

IMG_0895

And to anyone starting out on their own coding journey, go start hacking!

“A computer is like a violin. You can imagine a novice trying first a phonograph and then a violin. The latter, he says, sounds terrible. That is the argument we have heard from our humanists and most of our computer scientists. Computer programs are good, they say, for particular purposes, but they aren’t flexible. Neither is a violin, or a typewriter, until you learn how to use it.”  ― Marvin Minsky

No more fun and games…

I’ve been neglecting the blog to focus on coding. Even when we have a slow week, I feel like every minute I spend not coding is a minute that I fall behind.

But I would like to briefly capture some of the many awesome Wyncode moments of the past few weeks. I’ll start with friends and family night.

We started learning Rails on Monday, roughly two weeks ago. Wednesday the Wyncode crew assigned us to groups and gave us a Rails project to complete. And Friday, we would present our work for all our friends and family. Oh, yeah, and we still had to attend lectures and workshops throughout the day.

When they come up with seemingly impossible tasks like this, I wonder if they plot them out in their little conference room, twisting their mustachios and giggling.

I thought it was an impossible task, but my group banded together and whipped up a working prototype just in time for presentations. It was a great event and a great night, followed by an alumni picnic on Saturday, which was a real treat. Wyncode has built an amazing community, more like a family, really, and being a part of it is truly a privilege. Wyncode might just take over the #Miamitech scene!

The following week, we continued working on Rails and individual projects. We had time to catch up on past assignments and work on a project of our own choosing. I decided to spend my time working on a slightly more complicated app (for a book exchange) that included encrypted passwords and authentication, search via scraping Amazon’s homepage, multiple models, a join table, foreign keys, and one-click database entries based on the information scraped when the user initially searched for titles.

This was a frustrating and complicated task that often triggered the “I’m never going to get this” despair I’ve been forced to get comfortable with during my tenure here. I didn’t so much feel like I was building an app, but more like I was stitching together a Frankenstein pile of code. Instead of dead body parts, I dug around the graveyard of failed apps on my hard drive hunting for the last bits of the programs that still worked. My blueprint was made up chunks of the lecture notes cobbled together with snippets from tutorials and Pronouncements of the Documentation.

The pieces of this Frankenapp were held together with frayed string. Each time it struggled to life, a working organ would stress the stitching to the breaking point, and it crumpled as it voiced a blaring complaint. I got this monster up and walking a few times, only to watch his ankles and knees collapse beneath the weight of unwieldily code.

I breathed life into him just long enough to present his bruised and scarred face to my classmates yesterday. In the end, he was still my offspring, and no matter how twisted and hideous his visage, we shared that bond.

But now fun and games are over. A few days ago, we voted on final projects, assembled our teams, and it’s balls to the wall till the end of the course. Two weeks to build a fully functioning professional web app and present it to the #miamitech community at Pitch Day.

And to all my friends and family, and anyone out there who is interested in coding or #miamitech, Pitch Day is August 13th, at 7:00 p.m., at The LAB Miami. It’s a great event, and the more the merrier.

I just hope this next app has a prettier face than the last one. It would be fitting, of course.

Every Frankestein needs a bride.

 

“´Wonderful´, the Flatline said,´I never did like to do anything simple when I could do it ass-backwards.´”
William Gibson, Neuromancer

Learning Code

“It may be that the only real way to learn things is to just go slog around the mud and figure it out yourself.” –Sandi Metz, Interview on CodeNewbie Podcast

It may seem weird that I’m posting that while attending a bootcamp to learn how to be a web developer. And weirder still that I firmly believe it, despite learning so much over these first four weeks of the course. And can it get even weirder, being that I was a teacher, and have worked in education for most of my adult life?

For me, it boils down to this: Teachers can teach you, but they can’t learn you nothing.

The actual learning requires you to get your hands dirty. It requires you to fuck up and break things and lose hope. But you learn as you put the pieces back together and buff the finish to a nice, shiny gloss.

My Wyncode experience has reflected this. Wyncode does a hell of a job teaching these concepts, but I don’t really learn them until I’ve nearly drowned in the mud and just barely crawled my way back to the surface.

This is probably a good time to tell you about the general daily format at Wyncode. Each day starts with a lecture led by our head instructor, Ed Toro. Ed is a really smart guy. Computer Science MIT graduate, tons of coding experience with seemingly every programming language ever invented, practical real world experience with big companies and start-ups…Ed is a font of knowledge that spews forth coding wisdom. He not only knows how shit works, but why it works, all the way down to the metal. I haven’t been able to ask this guy a single question that he couldn’t answer off the top of his head, a single bug that he couldn’t identify within seconds of scanning my code. Dude is bad ass.

Because he’s so smart, and because the material he covers is almost always brand new material, keeping up with him can be difficult at times. This is a good thing, mind you. Otherwise, we’d never get through all the material we have to cover over 9 weeks. And it really works with the model that Wyncode has implemented. After this initial exposure and homework challenges that force you to apply what you’ve grasped from the lecture, Wyncode provides several techniques to fill in the gaps.

The most effective are the live-coding sessions, usually led by Ed or our head TA, Walter. With these, they review all the concepts covered during the initial lecture while showing us how a professional developer thinks about and applies these concepts to practical problems.

This process has been invaluable to me. I think every coder has gone through the torture of staring at the blank screen and trying to figure out how in the hell they are going to come up with that first line of code. The live coding provides an excellent model for the type of thinking a student would want to apply to the problem.

To further fill in the gaps of our learning, TAs are available throughout the day to work with students individually. The TAs are knowledgable and gracious with their time. Moreover, they have a wide range of experiences, so a student who wants to go beyond the general curriculum can always find someone who has employed that technology in a project.

They are kinda like iPhone apps…Want to focus on Node? There’s a TA for that.

And seriously, they are super generous with their time. I’ve chatted online with them countless times, as late as one or two in the morning, and they have stuck with me, offering suggestion and fixes, until the malicious code has been tamed.

On top of this, we have access to Codeschool and other online learning tools. It’s funny. Before Wyncode, the online resources I tried were pretty useless to me. They were either too difficult, or so easy that I learned nothing. But using something like Codeschool after having gone through the steps I described above really helps cement the knowledge in my brain, and more importantly, helps build confidence.

All of these facets work really well together. The initial exposure, the targeted exercises, the meta-thinking that you learn via live coding, the individual help. Wyncode is truly structured to provide a robust educational experience.

And yet, when I learn most, is on those weekend projects, when I sit home by myself till three or four in the morning, coding and testing and running into failure after failure, until I finally get my code to work. Of course, this is part of the curriculum as well, but for me, this is mud-slogging time. This is the dirty work that speeds up my acquisition of the skill-set the most.

That’s it for today. This week, we’re learning Rails, and models and controllers are kicking my ass. I’m off to learn to code.

In the mud.

 

 

 

Enter Week 4

I arrived early on Monday, rested after the 4th of July weekend, and feeling slightly accomplished after finishing the first draft of my personal website. Last week we worked mostly on internet protocols, getting comfortable with how the internet works, and starting to get some practice with HTML and CSS. I spent the weekend playing with the code on my website, trying to get things to work the way I wanted, and I also reviewed some JavaScript basics, trying to prepare for the assault of material this week.

For now, check out my website here. I’ll be adding to it as I learn more throughout Wyncode. I was really happy that I was finally able to get CSS to layout all the sections of my home page the way I wanted! I tried a similar project before Wyncode, and I had to let it go because it became an unsalvageable mess of colliding and overlapping divs, overflowing text, and broken images. What I have now may not be a design masterpiece (design is not something I’ve studied), but I got all the elements to work the way I wanted. I’m pretty confident that I’ll be able to code websites to people’s tastes.

I think the 4th of July brought a much-needed break for everyone. I was starting to burn out a bit. For the first three weeks, I worked till the wee hours of the morning every single day. I’m sure my classmates put in similar efforts, and I think the grind of the boot camp was starting to take its toll on many of us.

If I had time to really analyze it, I would say the most interesting thing about Wyncode has been how people handle the rigors of the course differently. We have a mix of people, from college kids, to people switching careers, artists, business owners, you name it. Everyone that I have met is intelligent, accomplished, and devoted to learning. Some people have taken off like rock-stars, performing so well that they actually have served as quasi-TAs to the rest of us. Others need more time to learn and assimilate the material.

What happens when you take people who have succeeded in every undertaking, and throw them into an environment where they have to fail and fail and fail again in order to start to learn? Because that’s what coding requires — a shit ton of failure. Hell, that’s what’s considered best practice when writing code. It’s called test driven development. You write a test, run it, let it fail, analyze the error, and then write the fewest possible lines of code that will fix that failure. Rinse and repeat.

So what happens psychologically in this type of scenario? It’s more than a blow to the ego.

It’s an identity crisis.

All of a sudden, people who breezed through their jobs successfully have to scratch and claw their way, every single minute, out of the pit of despair dug with each shovel-full of failure.

I thought I recognized this crisis in the eyes of some of my classmates last week. I may be just projecting, but I recognized it  because I was feeling a bit of despair myself.

When I was studying counseling for my school psych degree, I learned that in Chinese, the word for crisis is made of two symbols: one means danger, and the other, opportunity.

Wyncode embodies that, and as week four rolls in, I think I’ve clawed past the worse of the danger and am starting to glimpse opportunity.

That is, of course, until the next new programming language kicks me in the teeth.

“You never let a serious crisis go to waste. And what I mean by that it’s an opportunity to do things you think you could not do before.” –Rahm Emanuel

Just when I thought I was getting the hang of it…

Today was brutal. I was feeling good after this weekend. We were assigned a voter simulation project (you can check it out on my github repo: github.com/memnon34) that required us to use object oriented programming.

I busted my ass to finish that project. Our instructor guided us through the initial steps and helped us think of ways to organize our code. Even with that, the project was super fucking hard. I busted my ass Saturday. I spent the whole day coding, from 11 am to 3:30 am. I barely stopped to eat. By 3:30am, I was shot, and I couldn’t finish, but after catching a few zzz’s and trotting back to the LAB on Sunday morning, I ironed out the final wrinkles and I had a working simulator! All the features worked, it didn’t crash if a user entered bogus input, and it ran all the way through every single time I tested it.

Granted, sometimes it would call a winner when the voting was tied, but that was a simple fix that I could implement later.

So I arrived to class Monday morning in a great mood. Feeling accomplished. Feeling like I was finally getting this coding thing.

And then Monday happened. HTTParty and Nokogiri and JSON and curl commands. Grabbing gibberish from websites. Post, put, get, delete. All of it runs together, and all of it gives me data that looks like the fast moving cascading code in The Matrix. I don’t know why this is hard for me. Other people seemed to be getting it fine, but I can’t even start to comprehend this shit today. I don’t know if it’s my age or never having to struggle with any type of learning throughout my life, but now I have a really hard time dealing with the frustration of not understanding concepts.

It’s an overwhelming frustration that scares the shit out of my laptop because it knows that there’s a brick wall in its future.

So again, I’m doubting if this career will ever be truly possible for me. I know it will be. I’ve only been at it two weeks, after all, but doubts can be sneaky little fuckers.

My only option: brute force the knowledge into my brain.

Tonight is going to be another long one. Time to get to work.

A gay dude and a bunch of women…

Orientation was last Wednesday. I arrived early to set up the environment on my laptop and ask questions about some problems I had run into during my pre-work. There was a section on Codecademy that guided you through creating a Rock-Paper-Scissors game. At the end, the site suggests improving on the code by adding a mechanism that would prompt the user for the appropriate input if they entered something other than “rock,” “paper,” or “scissors.” So I tried this:

Screen Shot 2015-06-13 at 2.28.38 PM

That didn’t work. It endlessly prompted with “Choose Correctly!” no matter what I typed into the text box. I tried changing it to an if statement, but that didn’t quite work either. It would prompt even when I had already entered the right term.

This thing had been killing me for weeks because I thought that the code clearly made sense, and I couldn’t figure out why it didn’t work. So I enlisted the help of one of the TAs, and we improved the code, but still couldn’t get it to work right. He recruited another TA, and still that little line thwarted us. So they grabbed the head TA, and we hacked it and started logging things to the console to test out what the code was actually doing, and still that fucking code kicked our asses.

Despite the failure, though, this was fun and exciting. I thought I had just caught a brief glimpse of what working in a tech job might be like: brainstorming, testing, contributing ideas, experimenting, frustration, and elation all shared with a team striving to achieve a goal.

A little later, while the LAB administrators were giving us their spiel about not propping open doors and sharing way too much detail about their plumbing and toilet fiascos, I decided to enlist the guidance of our head instructor, the one they call Yoda. I fired up HipChat and sent him that stubborn, offensive piece of code along with my line of thinking when I wrote it.

His blazing fast response came with this:

Screen Shot 2015-06-14 at 1.08.17 PM

And yep, that solved it. I still don’t quite understand why JavaScript needs && instead of || here, but Ed assured me we’d be covering that soon. I just hope that my struggle to comprehend this simple thing doesn’t mean that I’m going to suck coding.

As for the overall orientation experience, the Wyncode team treated us great. They ordered dinner for us from Suviche, and the head instructor’s wife sent us the best homemade cupcakes I’ve ever had (check out @Melibakes). We got all the details and the schedule for next week. And we got our first intro to computer science lecture.

Ed covered historical material and some basic theoretical concepts. I learned about Alan Turing, the father of computer science, and what it meant to be Turing complete. This lady with the cool name of Ada Lovelace was considered the first programmer. And who the hell could have known that steam punk was based on the idea of what the world would have been like in Victorian England if Charles Babbage had finished his Analytical Engine? That would have made my FFVII days much more enjoyable.

Most early programmers were women, and Grace Hopper created the first programming language that used human language instead of just numbers to talk to computers. Women used to major in math in much greater numbers in the early part of the twentieth century, and many of them went into programming. Turns out that if it wasn’t for a gay dude and all these mathematical women, computer science might still be in the stone ages.

What I didn’t understand was how the demographics could have changed so much over the years and created the gender bias issues you hear about in this field. Ed attributed it to the marketing of the 1980s. Radio Shack marketed to boys. Movies like War Games presented had Mathew Broderick as the savvy hacker, and the girl was just the faithful girlfriend. Lots of movies played on these stereotypical roles.

I know that has a major influence, but I can’t believe that to be the whole story. What about the fall off of women in the fields of mathematics? There has to be more to it than just ads and movies. In any case, I’m glad the field is now making efforts to recruit all people regardless of race or gender.

My biggest take away from the lecture was this: programming is an art. Start by writing ugly code that works. Done is better than perfect. It takes a lot of time to learn to express yourself well.

This is something I have to keep in mind throughout the course. I’ve been known to want to get things perfect. I’m going to have to remind myself everyday that this is a long journey that is not going to end with Wyncode. I’m going to have to have faith in the process.

As I finish this, it’s Sunday. Wyncode starts tomorrow!