bloc referral

If you are interested in learning to code with a mentor, try bloc and get $100 off.

Monday, August 25, 2014

How I defeat Impostor Syndrome

What do I do to defeat Impostor Syndrome?

I realized I could of title this blog post differently, 10 ways to defeat Impostor Syndrome, but I feel there are only 2 things I did to defeat Impostor Syndrome.

When I started attending Ruby Meetups last fall I heard of the term Impostor Syndrome briefly but never really took the time to look into it. I quite honestly never heard of the term prior to my journey into web  development but it seems to be an issue that actually all types of people and fields.

I listened to the a recent podcast unrelated to programming where the host explained his suffer through impostor syndrome while attending his first classes in med school.

"Impostor Syndrome, is a psychological phenomenon in which people are unable to internalize their accomplishments."

In my previous career I made a huge effort to obtain a job in sales without any prior sales experience. I spent a good amount of time researching interview and sales techniques to only be turned down for multiple positions because of my lack of experience. I was even turned down for my first sales position, but due to to the first candidate failing their drug test (which I found out later from a co-worker); I was called back a week later and offered the position. I of course accepted the position but couldn't help but spend the next two years thinking that I did not belong there.

The thought that I was never good enough and that I would eventually be figured out as a fraud (hypothetical)  crossed my mind multiple times during my time in sales. Within my first 2 weeks I closed a significantly large deal and didn't make a big deal about because I thought it was not good enough.  My drive became not settling for skating by and doing just enough. This unintentionally caused me to become promoted twice within 4 months.

Accept It

In my own words, Impostor Syndrome is not something that ever goes away, I realized this buries the lead, but if you understand this concept it can be a great way to defeat it daily. Similar to fear, it will never leave you 100% in life and even the fear of failure will always come up in your career. I know I am not the best at software engineering but strive to be a decent great engineer.

It's possible in sales to become insincere due to their lack of confidence and end up presenting a false image of confidence. It is highly possible you have to fake it to make in a career, but it only alienates you from others putting you on a shaky pedestal. By accepting your faults it makes it easier to understand what areas you might need help in and helps you challenge Impostor Syndrome head on.

My suggestion is not elevate yourself into something you are not, but rather learn from your peers and and openly admit that you do not know. Within my first week in sales I was told to never tell a customer that you do not know, but rather tell them you will find out. I sit here writing this post today with problems I have yet to figure out in Ruby and no plan to solve them. I do plan to research my answers, but I also plan to reach out for help and assistance when stuck.

There is no doubt the company I work for today took a chance on me, as an aspiring engineer with no experience, and I feel everyday that I must prove that their decision was worth it. I swallow my pride knowing I made a leap so many strive for and keep my eyes on the next goals of the day. My hard work does not stop because I have gain employment, it only just began.

I am a bit of a listener and love learning from others, not only in programming, but in life generally. I have learned that even the most decorated and influential people in my life deal with Impostor Syndrome. I have also the realized the individuals who have no need to worry about Impostor Syndrome are the individuals who are stagnant in their careers and abilities. Most can grow content in a position where they have expert knowledge in, never challenge or pushed to try something new or hard.

Impostor Syndrome is great way to encourage yourself to strive harder and admit your weakness to eventually strengthen them. Use the fear of not being good enough to work on areas you can improve in.

Do Something(Step outside you comfort zone)

I heard of how a study was conducted on monkeys where they placed 5 monkeys in a room where bananas were placed in the center room, only reached by access of a rope. When a monkey could make it half way up the rope a man in the same room used a firehose to spray the monkey off the rope, cruel but stay tuned for the meaning. Eventually each monkey tried until they realized the futility of trying for the banana.

The second stage of the study involved each monkey being replaced by a new monkey, which was quickly discouraged by the others not to attempt for the bananas without the aide of the water hose. It got the point where monkeys in the room were replaced by individuals that had not experienced the fire hose but knew to discourage any new monkey.

When I started into web development with everyone telling me how hard it was, I even avoided the Hartl tutorial because everyone told me it was very difficult. I smile when I think about that because the tutorial itself it not as difficult as perceived, seeing how all the code is handed to you to type into your IDE, the only impediment is starting.

I started an online study group on the internet because I knew I needed help from others and sought out to associate my self like-minded individuals. I had a local meetup available to me to meet and chat with other local Rubyist but it only occurred once a month. The group I started was RubyNewbies and it propelled my learning immensely. Prior to RubyNewbies I had the fear that I couldn't complete the most basic of applications in Ruby, but once I realized the best way to beat that was to do something about it.

I pushed my self into a role of sharing my knowledge of what I learned literally a week prior in order to identify areas for improvement in myself, if I could explain it to other Newbies, I did not know it well enough. When I first heard of the Odin Project I jumped into the Rails Study group to capture missing knowledge needed to eventually get a programming job. I chose to lead a separate study group in order to propel my weaknesses into strengths.

Every video I recorded I had the fear that I would be asked a questions I could not ask or be given a problem I could not solve, but instead of quitting I accepted the challenge. I chose to record the videos to not only keep myself consistent but also make it available for others. There were multiple times where I stumbled over my own slides and even said I don't know but I chose to continue my journey towards learning Ruby.

I eventually completed the Odin Ruby curriculum, even while accepting a job as a Software engineer and moving 100 miles across the state of Florida. My determination to prove to others that I could make was really a way of proving to myself that Impostor Syndrome could be defeated. When interviewing I flat out said I did not know, but I could find the answer in a Google search. I even said stated that I was barely a decent programmer, but I had a strong desire to learn. Selling my faults with my strengths was something I would never of done in a sales interview. In sales I avoided sharing my weakness in order to sell myself as the Impostor. This is not a practice of all sales professionals, but it's what I thought I needed to do to get by.

Accepting that Impostor Syndrome is real is the first step but actually doing something to challenge it head on is the second step. I am glad I had the opportunity to make this career change and come to realization of how to accept and change my outlook towards Impostor Syndrome.

Summing it up

There are intentionally only two steps to defeat impostor Syndrome to avoid getting lost in a perpetual planning cycle. My goal is to encourage others with a story and 2 step process to create more encouragers.

Impostor Syndrome is unfortunately not something you can defeat once with no need to worry about in the future. If you are like myself with goals, dreams, and aspirations you will deal with this regularly. The key is accepting it and deciding what you are going to do about it and if you feel you are in a position where Impostor Syndrome is not a problem, I have to asked: Are you stagnant in your personal development? Are you helping to grow others by creating an encouraging environment?

I am not an expert in Psychology, I have some life experiences and hope that this post can encourage those that read it. This is a post I have wanted to write for awhile but coincidentally did not feel I could for reasons implied in the above paragraphs. Writing is just one way I defeated Impostor Syndrome today.

Best of luck with your journey and thanks for reading.

Wednesday, August 20, 2014

{}.tap have you seen or used it?

I have never heard of the tap method but am glad I have made the discovery. I planned to use it in my code at work, but have not had the opportunity yet. I find lately I have tried to force many new concepts in my code, but have yet been able to.

Its probably better not to force them. I love the idea of the <=> operator but have not used it once in a real life experience, even in code quizzes. I will probably used the {}.tap method sooner and actually tried it out for the first time yesterday, but ended up taking it out in a refactor.

Check out this blog on the tap.{} method.

I am finding out that there is a right way to Ruby and wish I read Eloquent Ruby a lot earlier. I spent too much time not reading books and going through basics of Ruby. I highly recommend every new Rubyist to read Eloquent Ruby. It is a great guide into Ruby and explains a lot of questions about when to how to write Ruby with best practices.


Tuesday, August 19, 2014

Reading Rails Group

My originally idea for the next Ruby Newbie activity was to read different Ruby libraries, but I found it hard to find new and interesting libraries to check out. I chose the Inflector Library because it was a library I started looking into at work but as I read through it I found out it was a Rails library.

I have avoided Rails and it components when doing new things for Ruby Newbies and trying to stay focused on learning the concepts of Ruby, but at the end of the day Rails is Ruby and thats why I plan to hold a new event on the off weeks of the book club, called Reading Rails.

Rails is made up of 7 main components and the first component we will be reading through will be the Active Model. I am excited to finally jump into reading Rails core libraries and hopefully demystifying it. If you are available please join the discussion this Sunday.

There will not be a requirement for joining, just a basic understanding of Ruby.

My Javascript book next read list

I spent some time reading Eloquent Javascript and it has been a tremendous help in better understanding Javascript. The book itself was listed as a beginner book on the free book list and has been an easy read with already having Javascript experience.

I spent a lot of time avoiding books due to the fear of not understanding, but I have found that book have been the greatest help in understanding towards the next level. I have already completed the second part of the Well Grounded Rubyist. My goal with recording these book reviews will be to force myself to read and understand them by presenting its contents. If I had more time I would start a similar Ruby Newbies Group for Javascript.

For the time being I will be focusing on finishing Eloquent Ruby and Eloquent Javascript and then proceed to the books below.

Eloquent Javascript - Beginner
Speaking Javascript - Beginner
Javascript Applications - Intermediate
JS the Right Way  - Intermediate
You Don't Javascript - Advanced

Friday, August 15, 2014

My tour through more Javascript components

I have spent a lot of focus on Ruby during my journey, but as of late I have been bootstrapping my learning with Javascript. The following is not pure Javascript but some of the components associated with it.

Last week I was tasked with adding a modal to the display ruby functionality, something I do not have much experience with. I have previously worked with Ajax and jQuery by including snippets in my app, but never to the scale I had to this week. It took me half a day just to get the Ajax working, all of the resources on the web push you towards a simple implementation with Coffeescript examples, but that was unfortunately not helpful. I needed to learn how to implement a solution using javascript and without js.erb files.

The article that helps me most was this blogpost. It helped me understand that Ajax works very similar REST, which I got a lot of experience with while working with the Twitter API. The similarity is because the Ajax sends/receives request via JSON. Once I realized it was JSON, I knew I just needed to parse the JSON using jQuery. I spent a lot of time learning jQuery last week and how it handles events.

Think of REST and JSON as a hash or dictionary of information that can be parsed. They seem complicated but they are not.

My apologies for not giving much context but the message was sent using the this one line in my controller and received by the following jQuery function.


I highly recommend taking the time to learn Javascript, as it is intertwined a lot of the web. I sent out a tweet this week with a whole list of free Javascript books on the web. I am looking forward to learning more in the future and hopefully sharing in more detail about JSON, Ajax, and jQuery.

Wednesday, August 13, 2014

#CatchUpConf2014 - Nell Shamrell - Test Driven Development: A Love Story



I spend a lot of time in legacy code and this video has inspired me to write test. I watched this video months ago when I was determined to learn TDD and testing. I can't say I really understood it then but I can truly say this is very helpful for what  I do today.

I was encouraged to write more test and take more chances on harder parts of the codebase.

Some times things just can't be engineered: The email validation saga ends

I briefly wrote a blog post how I defeated the email validation on the server side and the possible idea on created my first Ruby gem to do so in the future. I also through in a quick picture of my success in creating client-side validation in JS, I felt pretty proud till I realized I was going to suffer the same emails string pains I did with Rails.

It is surprising that there are so few blog post/resources on working with validating emails, luckily I found a lot more examples in JS then I did in Ruby. It seems there are not many people creating modals using bootstrap to take multiple emails separated by commas.

I received the recommendation to use the jQuery Validator, which was easily implemented once I learned how to reference the proper id's. I had limited jQuery experience prior and most was copy and pasted, without much realization of what I was doing. I did a lot of catching up in learning jQuery thanks to treehouse and can now say I have  working knowledge of it. I was surprised to learn that jQuery is basically a powerful form of CSS for Javascript and not much more.

Even after learning what was needed to know I discovered, with the help of multiple coworkers, that the jQuery Validator does not work well with Twitter-Bootstrap. I was unaware, but not fit to explain, there are many limitations with bootstrap and many advanced features in front-end development are limited because of it.

Bootstrap is a great tool for individuals looking to get a decent front-end design quickly and focus more on the back-end program. I have quickly realized there will always be a point where tough decisions will be made. There is a Bootstrap Validator, but similar to many other tools, it does not handle multiple emails in a string.

Bootstrap prevents the validator to activate until a valid email is entered, which is the opposite functionality in this JSfiddle. This is absolutely mind-boggling, but forced me and the team to make decision to move on. There are just too many factors, the fact this is a modal, using bootstrap, and the need to validate a string of emails separated by commas.

It came to a point where no more time could be sunk into this feature and the executive decision was made to move-on without client-side validations. If this was a personal project, I would of walked away sooner, but the determination to implement all features a requested caused me to spend more than time than needed on this.

This was an experience I will not forget and for future failures I hope to find a solution, or realize a stopping point sooner. I stand here defeated but with the advice, you can't engineer everything.



Monday, August 11, 2014

sublime key binding path command

If you find yourself typing out the path of a file multiple times, I recommend using the below shortcut in you Key Bindings. Sublime is a powerful IDE and has many shortcuts and tools hidden in it.

I was unaware of Key Bindings but happy to have found this thanks to my coworker @robdel12.

{ "keys": ["super+ctrl+f"], "command": "copy_path" }

email validations for arrays in rails

Sometimes things just aren't that easy. Rails is definitely nice when you do everything out of the box and do not veer to far from the path; I am quickly finding that there are some things that are difficult figure out.

For example I had a task late afternoon to validate emails that are stored in an Array. I original stored all emails as strings but due to way the Rails Mailer works and the needs of the application, the emails are now being collected using CSV(separate by commas) in a string. I am easily able to split that string using split(",") and serializing that into an array. I am also handling single emails by converting them using the Rails method Array.wrap(). Those 2 methods could be blog post in their selves but I am opting to just explain my next issue.

The trouble with storing the emails in an Array is that it broke all my email validations, which does not check a string of emails,  I now am tasked with testing the validations by hand, after discovering that the Active Validator only validates strings.


Validate an array of emails.
emails: ["ilikerobot[at]gmail.com, hello[at]briandouglas.me"]

emails.split(",")

emails: ["ilikerobot[at]gmail.com", "hello[at]briandouglas.me"]

With this being my first major case where Rails couldn't do what, I am considering looking at the Active Validator to see if I can contribute to it and add this functionality, but it might be better as a gem. I am sure it would take longer than a night to implement but it could be a cool challenge to create my first gem and this idea seems simple enough.

My first implementation:








My final implementation *after peer review, it turned out I wrote too much code just to check for the validation of an email :)







I also did the same validation in Javascript, on the client-side.




Wednesday, August 6, 2014

Network tab in console

Nothing worse than silent errors on in your app. Javascript and the client-side portion has been notorious for silently failing errors. I was told about the network in the chrome console and it had been very helpful as of late.

I was recently tasked with feature of adding a modal to the site for extra functionality. I implemented the route, controller, and new template but found the submit button had not functionality. In order to see the error I was either calling the page directly or turning off the modal to render the new page in a new tab.

My colleague noticed my mistake while I was pairing and recommended that I use the "Network" tab in the console. I have never been comfortable with the chrome console and was unaware of it powerful glory.

The network gives you a lot of information on what page is talking to which. I was able to find the error and even view it in the tab. The error itself was a simple routing error, which I will hopefully fix this morning, but wanted to take the time and share for future reference.














Code School is currently offering a course preview for the Chrome Dev Tools. I have gone through some of it and it has been very helpful in my day to day at work.

scope searching methods

I have been just over 10 months in Rails and ActiveRecord, but I just learned a tool I wish I would of known months ago.

I have seen scoped used in projects and even used them unknowingly, but I can say I understand them thanks to an explanation from a treehouse video.

The most likely use for this searching the table with shortcuts. If you find yourself searching in the console multiple times for the same records, it might be useful to set a scope in the model.

scope :premier, -> { where{"employees > ? , 50" )}

This premier scope can now be used People.premier.all in order to filter the search to only employees over the number 50. If you know SQL based commands well, you can change it and make different focuses. This might not as apparently useful now, but my recommendation to keep this tip in the back of your mind next time you find yourself all up in the console.

I plan to complete the Treehouse DB section to become a little more familiar with the SQL commands. I have attempted to jump in DB's in the past but fell asleep, due to it being so boring. Hopefully treehouse will excite me....

Monday, August 4, 2014

Well Grounded Rubyist part 1

I had a lot of fun preparing some slide for the WGR book club I am hosting. It is definitely helping me understand the material by forcing my self to discuss via hangout.

For those insterested the slides and vide are below.




Next hangout is in 2 weeks.


Saturday, August 2, 2014

CatchUpConf2014

I have recently figured out that you can listen to Youtube videos at 2x without added extensions or downloading them locally. This is a great discovery for me since I have been collecting conference talks for a while but find I never finish them due to lack of time.

When I first starting learning Ruby, I watched youtube videos at 4am while holding my newborn son. We had a great system, but he has now sleeps in and I have gotten lazy too.

I am now collecting more conference videos to watch now at 2x and open for suggestions. I have created a public Youtube playlist called CatchUpConf of videos I have had on my list already, but also some I would like to rewatch and hopefully learn some new info on Ruby and other languages.

If you have not watched the Advi Grimm talk on Confident Code, I highly recommend it.


Friday, August 1, 2014

Going through the basics

I spent the majority of my time learning Ruby/Rails, I had the assumption I knew how to perform basic things in HTML/CSS and have always been able to Google enough to get by.

Recently I have begun a speed tour through also of the Treehouse Curriculum learning a lot of new things I thought I was an expert on. They recently announced a new Ruby basic section which I completed in its entirety in less than 2 hours. I found even though I already knew most of the content, it was a great review. I also enjoy the teaching style which aloud me to sharpen my skills in the post lecture challenges.

In addition to Ruby I have been working my way quickly through HTML/CSS. A lot of the HTML I didn't know how to do has since been deprecated, which they mentioned, but I never went through a formal course on CSS.

I understood the basic concepts of id's and classes, but not really. I have had a lot of aha moments and really appreciating this opportunity to go through this info. With only being 2 weeks into my free membership, I plan to complete all of the Javascript course and workshop, as well the Ruby, iOS, and HTML/CSS  sections.









What actually has been helping is going through all the courses at 2x speed during my lunch break which allows me to knock a section or more a day. If you have not tried treehouse, I believe there are free 7 day trials available if you google hard enough, but if not the below picture is a link to get 50% off.

In just one month I will probably have completed the majority of my desire learning through Treehouse. I plan to do something very similar with Code School. I have neglecting learning the basic fundamentals in web development and Treehouse has been a great fit, in addition to the books I have been reading on the side (WGR and Confident Ruby).

*If you live in Orlando or come other cities you can a free membership via your local library.