Impostor Syndrome? How to Overcome It

A couple of weeks ago after finishing my jobs board app I started to feel that maybe I didn’t know as much as I thought I knew, started wondering how did I get here? Am I really a coder? I got all sort of questions and doubts in my mind.

It turns out I’m not alone, it happens more often than not, that people in the software or online industries start having these sort of feelings and doubts, It’s called “Impostor Syndrome”, and according to wikipedia:

Impostor syndrome is a psychological phenomenon in which people are unable to see their own accomplishments, dismissing them as luck, timing, or as a result of deceiving others into thinking they are more intelligent and competent than they believe themselves to be.

So I decided to relay these feelings to a fellow programmer, and he told me probably something I would never forget because of its meaning and simplicity:

Adrian, you know what you know…

That’s it, simple right? but what does that mean? Well, we tend to think because some things are easy for us, they aren’t meaningful or even worse, anybody could do it, and even though, there is some truth to that, anybody could program, getting to the level we are, takes time, effort, long nights, lots of coffee and will, and believe me, not everyone is cut out to be a programmer, it requires love and persistence.

coding

So I decided to make a list of the what I took for me to complete my latest project, and I came out with this list:

  1. Started a new rails app via terminal
  2. Added ActiveRecord Ruby Models
  3. Associate these models via ActiveRecord Associations ‘has_many’, ‘belongs_to’ … etc.
  4. Started a Sqlite3 database using migrations
  5. Created Join tables to associate models
  6. Included Validations for model objects
  7. Included class level ActiveRecord scope methods
  8. Added Nested Forms
  9. Included nested attributes
  10. User Authentication
  11. User authorization
  12. Third party signup/login via facebook
  13. Nested resources
  14. Form display validation errors
  15. Limited Logic in controllers
  16. Helper methods for views
  17. Used partials for my views when appropriate
  18. Used Jquery
  19. Included an index page rendered using jQuery and an Active Model Serialization JSON backend
  20. Translated JSON responses into js model objects
  21. Had a large number of small Git commits
  22. My commit messages were meaningful
  23. Didn’t include changes in my commits that weren’t related to the commit message
  24. Made my application pretty Dry

and the list goes on and on…

Then it hit me!

If I show this list to a regular Joe, let alone a piece of code like this:

function showPage() {
  // Get user Id
  var userId = $('.next').attr('data-userId')

  var jobs = []
  var idsArray = []
  // Get All User Job Applications (AJAX)
  $.get('/users/'+ userId +'/job_applications.json', function(data) {
    $.each(data, function(index, jobApp) {
      var newJob = new Job (jobApp.id, jobApp["job"]["title"], jobApp["job"]["description"],
      jobApp["job"]["company_name"], jobApp["job"]["url"], jobApp["job"]["location"],
      jobApp["job"]["created_at"], jobApp["job"]["category"]["name"])
      jobs.push(newJob);
      idsArray.push(newJob.id)
    })
  });

  $('.next').on('click', function(event) {
    var jobId = parseInt($('.next').attr('data-id'))
    var maxIndex = idsArray.length - 1
    var nextIdindex = idsArray.indexOf(jobId) + 1

    // Check if is the last job Application and start over
    if (nextIdindex > maxIndex) {
      nextIdindex = 0
    }

    //Job to show when click
    var nextJob = jobs[nextIdindex]
    // Add New HTML to the DOM
    $('h1#title').html(nextJob.title);
    $('small#posted').html('Posted: '+ nextJob.createdAt());
    $('span.category').html(nextJob.category)
    $('p#info').html('<i class="fa fa-industry"></i> ' + nextJob.companyName + ' | <i class="fa fa-map-marker"></i> ' + nextJob.location);
    $('p#description').html(nextJob.description)
    $('h5#url').html(nextJob.url)
    $('.skills').empty();

    // Update Job id
    $('.next').attr('data-id', nextJob.id)

    event.preventDefault();
  })
}

He probably wouldn’t understand anything.

Now, not only I understand it, I think it’s simple, fun and easy. That was a wake-up call for me, I realized that I know a lot, and while there is much more to learn, which really excites me, I’m on the right path to becoming a great programmer.

Conclusion

It’s important to accept our limitations but to acknowledge our accomplishments, be proud, remember that is ok to seek help, understand that a perfect performance doesn’t exist, and never attribute your success to luck.

You may also like