A couple of my friends think programming is easy. Some said it’s hard. But most of them don’t know the whole story of what it’s like to be a programmer.
Programming is hard really…only if you don’t have the persistence to learn..and what makes it harder is that you’re on your own usually with no one to guide you. That’s one reason why there’s a huge amount of shortage in talent pools. The learning curve for each technology is quite intimidating and exhausting to boot. You can’t expect to master each of them in just one month or so. There’s a lot of things you need to pay attention before you can actually publish your app to the production server or in play store.
Now why is this the case? Is programming really that hard? Let’s try to examine what makes programming so hard than any other carer right now.
You have no reference point to start your learning
You have no reference point where to start..
You thought you’re well-equipped once you graduated from with bachelors degree as IT or CS.
You barely touched the subject matter if your aim is to be a programmer or develop apps. If you think programming is easy, then you’re actually clueless at all.
Sure there are bazillions of tutorials hanging around on the internet to guide you….but, which one is legit and high quality? That’s another issue. What tutorials are reliable and not delivering garbage contents. It’s hard to determine where you should start your journey with lots of technologies to learn alone. And lots of tutorials you have to select.
Traditional courses such as Accounting, Lawyer, Doctor have well-organized structure that determines your path and determines your job description when you join the workforce. Courses like CS or IT do not have it as there’s no “standards” so to speak unlike its traditional counterparts due to the changing pace of technology alone.
You could think of IT career as messy and unpredictable. For each technology you master, there’s an associated job description for you to take over. That is one big advantage though. You could almost become an IT manager effortlessly provided that you know around your stuff in the messy world of IT/CS. The big wall that’s preventing you to get to that path is the learning curve and the reference points you need to get there.
What’s worse, you have no single idea whether the technologies you’re currently learning could land you a job or whether you are on the right path towards mastery as web developer or slowly straying away.
With no reference point, it’s like walking the street with blindfolds attached around your eyes, or chasing something that’s about to get away. You might not even see the light of day or see yourself learning forever!
And your learnings will get obsolete
One of the most frustrating and outrageous things you’ll encounter as programmer is, your studies and learnings of the past will get obsolete easily. This is one of the professions where you need to “re-skill” in order to get stable in the workforce.
So this challenge alone is enough to confuse you and will make you question whether what you’ve learned in the past was really worth it.
You know FoxPro? Cool! But it’s already obsolete. Don’t get me wrong though, there are still companies that uses FoxPro. And that will never change.
You need deep concentration to make progress
And this is the reason why I don’t require workplaces where your office phone rings every..errr..5 minutes?!
Programming requires intense concentration in order for you to make huge progress in something that you’re making.
Or if you’re learning, you still need to concentrate…..a lot.
Lots of technology stacks to learn
Sure, you can write basic console programs. Anyone can write a simple, say for instance, “hello world!” application. Sounds familiar?
But how about, uhmm configuring cloud servers? Wait, TCP/IP? Handling SSL certificates for websites. SEO optimizations? Serverless architectures? And what’s AWS lambda for publishing your functions?
You know C#? NodeJS? Cool! You can communicate with the database now.
Wait what about SQL? Or should you go with ORM? You need to define your tables first. Or should you go for NoSQL???
What database shall we go for? MySQL? SQL Server? Oracle?!
Wait we’re not done yet. Are your tables normalized? What form is that? 1st normal form, 2nd form? Are your codes well constructed with optimized algorithms?
Wait there’s more. You need to design the layout of your web app. How much time do you need to code HTML/CSS? Do we use css preprocessors here? What front-end CSS framework shall we use to ease the pain of designing? Do we need to use wordpress for this? Or bootstrap will do the trick?
Lastly, where should you publish your app? Shall we use cloud technologies? Or good ol’ FTP? Wait there’s already this shiny thing called serverless. Let’s publish it in that platform.