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.