Community

I’ve been pondering about community lately. According to Abraham Maslow, satisfying the need to belong is a prerequisite to developing self-esteem and confidence, which in turn is a prerequisite for self-actualization – the motive to realize one’s fullest potential. These higher order needs require a social context, which is why belonging supports self-esteem in Maslow’s Pyramid.

HeirarchyOfNeeds

The need to belong is driven by evolutionary factors. It is a powerful, fundamental, and extremely pervasive motivation. Belonging helps people in times of trouble. It provides a place to share good and bad news and to avoid loneliness and feeling unloved. It’s the place to get the information and the real interpersonal rewards that build confidence and self-esteem. Belonging’s powerful effect on productivity is well-studied and understood in business and industry forums all over the world.

Turing has a strong blossoming community of students, instructors, teachers assistance, alumni, and mentors. Even though I’m taking this module off, I still visit Turing a couple days a week to get work done and spend some time with the hommiez. I never go with the intention of pairing with anyone but somehow end up pairing anyway, learning a shit ton, and feeling super fortunate to have access to such a cool place. Big shout out to Jeff Casimir for not casting me out into the desert. Since so many people from the Turing community have helped me solve so many different problems, I figured instead of just thanking them I would praise through presentation. So let’s reminisce.

Before Trey Tomlinson, a tall Scandinavian looking dude who just landed a sweet job at CaptainU, came into the picture I wasn’t sure how to use RSpec to test a change to my test database. Here’s an example of how I tested a user successfully registering.

Screenshot 2015-07-31 12.36.00

I was just using the within block and setting an expectation of what should appear on the page, not really checking whether a new user was actually saved to the database. Here’s the Trey effect.

Screenshot 2015-07-31 12.34.39

Orion Osborn recently graduated from Turing and is now working for Invoca, pointed me to a great tutorial on Heroku on how to set-up paperclip with Amazon S3. He also patiently watched in horror/confusion when I showed him the dark side of sending AJAX requests. Turns out when your AJAX is set-up improperly and you’re trying to make any changes to your database from within a pry-session, your pry-session hangs and you can press Control-C all you want but unless you kill all of your Ruby processes (kill -9 ruby) that facker won’t let you out! Alan Smith, Turing grad works at LivingSocial, was fortunate enough to have witnessed this sorcery first hand and suggest killing all Ruby processes.

DJ Greenfield, recent grad with Zeus like hair, actually got the ball rolling on setting up that AJAX request so I’m not sure whether I should hug or kick him. He also helped me pimp out my images with JQuery for this dinner-dashy rails-app I’ve been working on. The basic idea of what I was trying to accomplish: When a user hovers over a category-image, I would like the opacity of the image to cut in half and the category name to appear as a link to that category’s-show-page. Seems simple enough right? F**k No! Along with DJ I had to recruit Justin Holmes (Former Dolphin trainer for the NASA Dolphin In Space Expedition and contestant on The Bachelor) for this delicate affair. I think we all learned more about JQuery and CSS inheritance in those couple hours than in the past few months! Everything works except the text(category-name-link) is inheriting its opacity from the image making the image and text fade upon hovering….. Brutal if you ask me, but I’ll move some divs around later on tonight and get it working. Once what’s in the computer behaves the way I want it to, I’ll write an educational blog post.

Even though Sally MacNicholas has to manage 2 kids, she still has the tenacity to produce the best API curious I’ve seen this module. She basically consumed Instagram’s API and reproduced the user dashboard page, it looks better than it looks on the real Instagram! She also took some headshots and cool pictures of Rob, Vanee, and I. I still haven’t received them, a-hem a-hem, but I have faith in Sally.

Robert Cornell, student at Turing, father of 2 teens, recently re-married, and co-founder of a tech-start-up is my friend and Turing lunch buddy. Tough to believe how he even has the time to do anything! Rob laid the guilt trip on real thick when he found out I was taking this module off! He’s since calmed down, maybe because I show up and have lunch with him from time to time. Maybe because he spent all of last week hyping up going out on Saturday and backed out 5-hours before game-time.

Regis is the new kid on the block who’s quickly made it to my list of top-five people at Turing I would do acid with. I feel like I become a smarter bohemian every time I speak to him. Our most recent conversation started with Node.js being single threaded, led to people resembling virtual machines, and ended with everything just being a box within yet another box.

Drew Reynolds is the go to for creative sass on the web, start-up knowledge, and a sick new techno/trance mix to pump out code to. When he posted a link to p5.js last week my mind was blown yet again. I’m totally into front-endy stuff and that library is just a treasure.

That rails app I was working on, I set it up in a way that forces an Admin to either add a new item to an existing category or create a new category for that item all from one form. In this form I had a dropdown menu that contained all of the existing categories and a “New Category” place holder. So I said to myself, wouldn’t it be sweet if you could click on “New Category” and have an input field magically appear? heck yeah it would. So Patrick Medaugh, myself and JavaScript’s bastard child JQuery went to work. An hour later, we made magic happen.

Screenshot 2015-07-31 21.40.42  Screenshot 2015-07-31 21.35.53

I started using Sketch a few weeks ago and I must say it’s pretty awesome. If you’re into graphical design UX/UI stuff I would highly recommend you check it out. I was struggling to figure out how to wrap text around curved lines or shapes. There’s not too many designers a part of the Turing community. Thankfully Cara Jo, a denver based web-designer happened to join the Turing community. I messaged her asking if she used Sketch and how I could get this darn text to hug stuff! Short story shorter, she helped me get it to work and I produced this masterpiece.

marz

Incredible isn’t is? So that’s a very brief case study of my past few weeks within the Turing community! If you’re not currently a part of a community Maslow thinks you should probably find one.

Accelerated Learning

The first week of Module-2 at Turing is pretty stressful. You’re bombarded with information the whole week. One student said it best, “I feel like the instructor just took a dump in my brain.” The first module at Turing emphasizes logic and problem solving. The second is geared more toward understanding the web and the applications that live on the web. The first Ruby framework you begin learning is Sinatra and then transition into the mother of all Ruby frameworks, Rails! Over the course of intermission week we were given a simple tutorial that taught us how to build our first Sinatra app called Task Manager.

Day-1 we were doing a bunch of HTML and CSS work, getting comfortable with styling our Task Manager before we move on to more back-end type stuff. Our homework was to style our Task Manager using bootstrap or foundation. I chose a free bootstrap template and really enjoyed doing some front-end work for a change. Below is a screen-shot of my homepage.

Screen Shot 2015-05-22 at 2.46.19 PMDay-2 introduced CRUD (Create, Read, Update, Destroy). If you think about it, from the users perspective most applications have CRUD functionality. We also discussed ‘How The Internet Works.’ In a nutshell, the internet is just a shit load of servers passing around information to other servers. When I say ‘servers,’ I mean computers just like the one you’re using. Our personal computers might run OSX or Windows, some of these servers run Ubuntu or Fedora. The software we might run is Safari, Microsoft Word and iTunes. Examples of software a server might run is Apache, Thin and Rack. Everyone who uses the internet essentially relies on remote servers that are dispersed all over the world! You can even turn your personal computer into a server if you like.

Day-3 we learned about model testing, which is really no different than regular Ruby unit testing. We also briefly covered Nokogiri. Nokogiri is some cool shit. It gives you the ability to extract and parse raw HTML from any web-page. This can be very powerful if a particular app you like doesn’t offer an API because you can extract their data and deliver that data on your platform. You can also use Nokogiri to target specific data by using that data’s CSS selector. So if you would like to extract all <li> elements from a page, you would just: page.css(‘li’). Capybara is used for feature testing. Feature testing allows you to test how a user interacts with your web-app. You can write a test that says: visit “homepage”, fill out a form, hit submit, redirect to “index page” and expect the index page to have the submitted content. After you’ve written the test, the code implementation becomes much easier because you know exactly what features you want your app to have. Now you’re just left with writing the code to get that test to pass. This is called test driven development and anyone who calls themself a developer uses this method. Our homework was to work through an SQL tutorial.

Day-4 was by far the toughest. Databases are the foundation of all web applications and being a back-end developer entails working with them extensively. Databases allow us to store, sort, calculate, and retrieve data. First we learned SQL (Structured Query Language). SQL is a programming language that allows us to interact with a database like PostgreSQL, MySQL, Oracle, MS SQL Server, and SQLite. If you’re interested, here’s a very basic hand holding tutorial. Next on the list was Sequel. Sequel is an ORM (Object Relational Mapper). In plain english, Sequel converts rows in your database into objects. Since Ruby is an Object Orientated Language, a Rubyist can quickly take these objects and manipulate them using basic ruby methods. Our Task Manager was initially set-up to use YAML:: Store in place of a database. YAML::Store allows you to store and access data in a text file. We converted Task Manager to use Sequel as our database language and SQlite3 as our database. This was super challenging because all of our controller methods and tests had to be configured. The class was super chaotic as everyone scrambled to bring their app back to life.

Day-5 well that’s today! Fridays are chill days filled with student hosted lightning talks, guest speakers, personal project work, blogging, electives, and student led study groups. Here’s a list of the lightning talk topics for today:

  • Code like it’s 1999
  • Animation with Snap.js!
  • China’s Great Firewall
  • Imposter Syndrome
  • Stuff, Things & the Internet of Things
  • The Illusion of Free Will
  • Ruby Warrior (Debugging and Refactoring)
  • Learning how to Learn!
  • Wine 101

All of them were entertaining and informative as usual. At Turing we not only learn how to code and collaborate but we also strive to improve our public speaking skills.

Home Stretch

Enigma was a hard enough project. I was still not very comfortable turning my ideas into code. The whole week leading up to evaluations was stressful. Knowing I had to get passing grades for Enigma, Sales engine, and my final assessment just compounded my stress. I mean, 2.5-weeks to complete 2 big projects and be assessed… dude I’ve only been programming for 4 weeks!

Enigma was due on the following Monday. Most people in the class weren’t finished on Sunday night, and some were finished but still had a bunch of refactoring left. Thankfully we were given another day and I completely finished my project 15-min before my evaluation! Cutting it kinda close if you ask me. After a pat on the back we were christened with our next super fun seemingly impossible project, Sales Engine.

Honestly Sales Engine is no joke. For the newly minted developer it’s a monster of a project. Just reading the project spec may intimidate the best of us! Sales Engine is a data reporting tool. The data is merchant transactions, and it is plentiful. Six massive CSV files have to be parsed, over 12 classes have to been built, hundreds of methods have to be created, object relationships and responsibilities have to be established, and most difficult of all “Business Intelligence.” Biz intel includes calculating merchant revenue for successful transactions, determining most profitable merchant(s), determining the customer(s) that spends the most money at a specific merchant, determining what day the merchant was most profitable and on and on it goes until you get dizzy and want to vomit!

My first time tackling Sales Engine was a blur. I hardly understood how to complete the first section, Relationships. My partner was much better than me and took the reigns on pretty much the whole project. I didn’t want to hold her back because their was a time restraint and not passing sales engine meant we could potentially work on extensions(you really don’t want to know) over our break or just not advance to module 2.

The last week of the module I took my first final assessment. I failed, pretty epically in fact! The challenge was to implement an extension to a fairly simple Scrabble program. My accessor wasn’t really giving me too many clues and by the time I got comfortable with where I was heading we ran out of time. Can’t hate, I knew I had the skill to solve the problem I just approached it wrong. Turing gives you another opportunity to take the final assessment and if you don’t pass the second time you have an option to re-take the whole module.

After the first assessment I got to thinking. Am I ready to move on to module 2? Do I feel comfortable with my Ruby skills? What is the minimum? If I pass the assessment the second time do I deserve to move on to Module 2 when I can’t even complete half of Sales Engine by myself? Did I come here to just barely squeeze through the cracks and graduate as an average bottom of my class programmer? I thought about all this for the next few days leading up to my second assessment and decided regardless what happens I’m going to retake module 1. I felt very confident that if I retake the module I would improve tremendously and struggle less throughout the rest of the program. Interestingly I wasn’t the only one in my cohort who felt this way, 5 classmates chose to retake the module. That’s 25% of the class!

I told Jeff I’m contemplating re-taking the module and he asked me wether I even wanted to take the assessment again. I said Yes. I somehow had an A-Ha moment that last week and started to better grasp Enumerables, and I felt like if I’m going to re-take the whole module I prefer it to be by choice. I ended up passing with flying colors the second time around and felt good about myself. I knew I wasn’t completely hopeless. With a clear head I packed my bags that weekend for a week long surf trip to Nicaragua.

Hit The Ground Crawling

My first 6-week module at Turing began on February 9th. The week began all innocent as all first days of anything are. Team building, student introductions, and general discussion on how to learn at Turing and not burn yourself out, although that last one should have been emphasized a bit more. Everyone seemed exited and eager to learn. During the rest of the week we were slapped with small challenges like Fibber and gently patted with fundamental Ruby concepts. We learned about strings, integers, algorithms, arrays, hashes, and most importantly Testing. Can’t over emphasize the importance of Testing. We also learned the theory behind object orientated programming as opposed to functional programming. I wasn’t quiet overwhelmed at that point but I kinda got a glance of where things were headed.

I didn’t complete one challenge that week without someones help, super frustrating! Every Friday is kinda chill. We have guest speakers from all sorts of technology companies who come from small app-development consultancies like QuickLeft to bigger tech biz like Thoughtbot. There’s also ‘Lightning Talks!’ 5-min solo presentations usually reserved for module-2 and up peeps. Any topic of interest is fair-play. Some love em, some dread em, and some seem impartial. I personally think they’re a great idea. Becoming comfortable speaking in public kinda leads to a person becoming more comfortable with themselves. Speaking in front of your fellow students who you know and spend so many hours with is like speaking to your friends, so what better place to practice. Turing isn’t only a place to learn how to program, it’s a place to improve you’re communication skills. Plus one 15-min presentation heard by the right ears can land you the job of your dreams or open up many doors, nohf said.

Week-2 we were slapped with more challenging challenges, like Cryptographer. We also got to learn about the crown jewel of Ruby, Enumerables! By the time we got to building a Link-List the sides of my head, mainly the spots above the ears, began to gently pulsate in an achy kinda way. I was fairly overwhelmed. I understood all the tools but I didn’t understand how/when to use them. I was trying to use a wrench to drive a nail, tweezers to unscrew a bolt, and a screwdriver to paint a wall. Only when I started to really break problems down into tiny components did I start seeing glimpses of success.

Week-3 was the kick-off to our first serious project called Mastermind. If you’ve never played the game here’s the wiki. We had to create a REPL so a user could play from the command line. I used to really like the game until I was asked to write a program for it. With a whole 3-weeks of programming experience under my belt I got to work. After some time and some bit of swearing I quickly realized I had next to no chance of completing the project on time so I sought out help from classmates, mentors, and instructors. I barely completed the project.I had a fully working Mastermind app that I was super proud of. Did it have massive methods with paternalistic code? Maybe. Was some Classes taking on too much responsibility? Possibly.

All major projects are evaluated and scored. Scoring is based on an evaluation rubric. Below is an example of a Fundamental Ruby & Style section of the rubric, there’s usually 4+ sections like this.

  • 4: Application demonstrates excellent knowledge of Ruby syntax, style, and refactoring
  • 3: Application shows some effort toward organization but still has 6 or fewer long methods (> 8 lines) and needs some refactoring.
  • 2: Application runs but the code has many long methods (>8 lines) and needs significant refactoring
  • 1: Application generates syntax error or crashes during execution

Another very important section is Test Driven Development. If you get below a 3 in any one of these sections you basically failed the project and will probably have to complete another intermediate project before moving on to something more challenging…. Makes sense.

My project evaluator was big daddy Jeff and big daddy Jeff don’t play no games when evaluating projects. His intentions are very amicable but if you’re not handing in something that explicitly falls into 3+ parameters you’re going to fail! My Mastermind worked and was decently tested for. I thought I would pass but Jeff quickly shut that notion down. I was pretty upset after because I worked so hard building something I thought I wasn’t capable of building in 8-days.

All I remember about week-4 was the first backhand slap I received at Turing, Enigma.

Road To Turing

I first stumbled upon the Turing School during my first semester pursuing a degree in engineering. It was August 2014. I had moved to Denver not too long ago and was really looking for a career with problem solving at it’s core. I already had a degree and some experience in Finance but I felt like Engineering would stimulate me much more. A few weeks into the semester I started to recollect everything that was horrendously wrong with the formal education system! The list is obvious, long, and I’ll set it aside for another post. I will say this, you want to become a professional in any field? 95% of institutions will not fulfill you’re expectations, they will only set you back financially and intellectually.

Sitting in class being bombarded with theory based bull shit, I started surfing the web looking for some glitter of hope that would get me out of my potential 3+ year commitment to an uncertain future. I’ll never forget my first search query: ‘why college is bull shit?’ A few articles later I stumbled upon gSchool. 6-months of training to become a programmer and a guaranteed job making over $65K or your money back. The cost is roughly $19k. Excuse me? An absurdly high percentage of 4-year college graduates can’t even get hired for $40k! They graduate with a mortgage(college loan) on their heads. Thankfully my first degree in Finance was from a City College and cost me nearly nothing because I was a resident. I was stunned and didn’t really believe programs like this exist.

After diligent investigation I found another school called Turing. The founder of Turing was a guy named Jeff Casimir. Jeff is basically one of the godfathers of what today is deemed ‘code bootcamps.’ He worked for Teach For America, founded Hunger Academy and Jumpstart Labs, and organized the first gSchool program. He’s well respected not only as a great educator but a very good programmer.

So these were the two top schools in Denver that develop programmers. I continued my due diligence. Both programs had similar curriculums. gSchool: 6-months non-stop intensive program for ~$20k with job guarantee or money back. Turing: 7-months broken down into four 6-week modules with one week break in between modules for ~17k with job guarantee or money back. Both programs had reputable instructors and positive reviews. The difference is Turing is a non-profit organization and doesn’t have investors to answer to. But more importantly Turing has Jeff Casimir anyone interested should due some due diligence on this charismatic code buddha. The culture he’s created at Turing is wonderful, and the staff he’s assembled reflect Jeff’s lifetime of teaching experience.

The application process for both schools is fairly rigorous. I didn’t bother applying to gSchool because I set my sights on Turing and focused all my energy. Turing requires a 5-min video submission along with a technical writing sample and an online logic quiz. If they like what you’ve submitted you receive an invite to interview. At the interview they’ll ask some basic culture fit questions to gauge wether you’re going to play nice in groups, programming is super collaborative and these days you’re rarely going to be working solo on a project. After 15-min of chit-chat you’ll be asked to complete a logic game and encouraged to think out loud, they want to hear how you think and communicate your thoughts.

I can’t stress how important it is to be well prepared for the logic side of things. If there’s one metric that can potentially gauge wether someone can become a decent programmer it is logic puzzles. Turing uses LSAT logic games to determine eligibility. Before applying I spent roughly 2-3 hours a day practicing timed problems on Varsity Tutors. Don’t be discouraged if you suck in the beginning. I sucked royally! Initially I was struggling to correctly solve 50% of the yellow(easiest) sample tests within an hour!! The average person supposedly solved more right in 30-min…. I thought I was might potentially be brain dead. but It wasn’t because I was dumb, I just never had to think that way. I never encountered such brain sorcery! Initially I felt like maybe I wasn’t cut out to program, maybe my brain wasn’t wired that way, maybe my innate skill sets are more artsy. But something kept pulling me in that direction and I improved my scores dramatically every few days until the point I felt like I was ready to submit the online application. Thankfully Turing looks at aptitude and the ability the learn, not wether you have any programming experience. My going from barely solving half of the easiest 2-sets of 5-problem logic games tests in an hour to correctly solving 100% of the intermediate-advanced in 35-min was enough proof that I could be taught to program.

I submitted my application on Sunday, heard back the following day, and was asked to come in for the face to face. Of course  I was nervous but I felt like my preparation was adequate and my intention was genuine. I spent the last 7-weeks practicing logic games on a daily basis and learning HTML and CSS. I even built a static web-site while still attending engineering classes and taking exams. I knew that I belonged at Turing and every week leading up to applying my conviction became more solid. I even had a back-up plan if not accepted. I would show up every-day and try to persuade the staff in any way I could, even if my persistence became annoying. My attitude was that I belonged at Turing they just didn’t know it yet. Thankfully I didn’t have to stalk anyone. I aced the logic game at the interview and was accepted on the spot. If i could only convey in words what I felt for the rest of that day! And what I still feel 4-months since :~)