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.
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:
- Started a new rails app via terminal
- Added ActiveRecord Ruby Models
- Associate these models via ActiveRecord Associations ‘has_many’, ‘belongs_to’ … etc.
- Started a Sqlite3 database using migrations
- Created Join tables to associate models
- Included Validations for model objects
- Included class level ActiveRecord scope methods
- Added Nested Forms
- Included nested attributes
- User Authentication
- User authorization
- Third party signup/login via facebook
- Nested resources
- Form display validation errors
- Limited Logic in controllers
- Helper methods for views
- Used partials for my views when appropriate
- Used Jquery
- Included an index page rendered using jQuery and an Active Model Serialization JSON backend
- Translated JSON responses into js model objects
- Had a large number of small Git commits
- My commit messages were meaningful
- Didn’t include changes in my commits that weren’t related to the commit message
- 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.
- Installing phpcs on a Mac ft. VSCode & WordPress, The Really Simple Guide - May 8, 2021
- How To Set Up Your WordPress Development Environment with a Large Database ft. MAMP & Mac, The Really Simple Guide - April 24, 2020
- Next.js ▲ + Typescript + Storybook The Really Simple Guide 2019 - November 25, 2019