I was recently asked:
Man… I truly hope I can just know what to do at some point without having to ask. You think PHP is an easy language to learn though?
When I read that, it reminds of the frustration I felt when I first started learning how to code. It can be very frustrating and make you feel like you want to give up. Should you? Here’s why I think you shouldn’t:
- It will get easier. The first few months are the most difficult. It truly is like learning a new language… not just a new way of speaking but a new way of thinking. But, once you’ve immersed yourself in it for awhile you do start to think differently… and each new piece you learn gets little bit easier. Eventually, learning new skills is pretty simple and happens very quickly.
- It’s worth it. Learning how to code may not be easy, but it’s definitely worth it. From a career perspective, you will eventually reach a point where you control your own destiny. You make what you want to make, you work with only the people you want to, and only on the projects you want to. And, you eventually can set your own hours, take off when you want… and you get to build cool new things as your “job”. All in all, it’s a pretty badass lifestyle.
- It’s your passion. If you’ve made it this far, my guess is that building things in code is something you’re passionate about. If not, you would have already given up. That being the case you probably couldn’t walk away even if you wanted to. Your mind would continually bring you back to it and you’d find yourself once again tinkering with code. So, you might as well embrace it. In fact, I believe that no matter how frustrating it may be at any given moment… if you follow your passion it will always work out better for you in the long-run.
Of course, learning how to code doesn’t have to be as hard as most of us make it. I learned this the hard when with PHP. I made several mistakes that prolonged my learning curve and set me back a few years. Fortunately, you don’t have to make these mistakes because I’m going to share with you what they are and how to avoid them:
- Don’t try to do it all on your own. This is easily the biggest mistakes new coders make. It has to do a little bit with ego and a little bit with this false belief that if you let somebody teach then you’re not “smart enough” to be a good coder. It’s absolutely false. I know some really great coders and what makes them great is that they’ll take instruction from anyone. If it can help them master something they need to know faster, they’ll do it. So, don’t be afraid to let others help you (in fact, I am offering to do just that for you when it comes to both PHP & MySQL and responsive web design).
- Don’t learn without a purpose. The next big mistake I made was to code just to code. I was too afraid to take on clients or put out an open-source project, so I would just code things I thought I was “supposed to” know. The problem is that, as a beginner, you have no idea what you’re “supposed to” know. So you end up wasting your time on a lot of things that just aren’t very fruitful. Also, without any kind of deadline from a client, you can prolong and put off your coding… which really slows you down. As scary as it might seem, I recommend you take on clients or start an open source project. You’ll speed up your learning curve dramatically by doing so.
- Don’t give up. Sounds bit circular but I made this mistake several times. I would get frustrated and quit for a few weeks or months. But, I also ended up coming back to wanting to learn more. And, the time I took off really set me back. Not only did I miss that time, but I usually had to re-teach myself things I had already learned. Coupled with the things above, it extended my learning curve from a year or so to almost 4 years before I really felt comfortable as a coder. That doesn’t mean you shouldn’t take breaks… just keep them short.
At the end of they day, I know learning how to code isn’t necessarily easy… but I believe it’s worth it. And, if you follow the advice above you can boost your progress and slash the amount of time it takes you to finally get over the hump and feel comfortable as a coder.
QUESTION: Have you ever considered giving up coding? How did you deal with it?
This Post Has 11 Comments
I’m learning php for a while, but I also mix it with wordpress. I have moments when it seems to me a little bit difficult to learn, I think about giving up, but then I come back listening tutorials and practicing code pieces. Therefore, for me, short brakes are good, they help me to clear up my mind and carry on.
P.S. Greetings from Romania, you do a good job trying to help beginners like me.
I think mixing it with WordPress is a good way to go. That’s what I did, too. It gives you a bit of a “shelter” in that not knowing a ton you can still actually build stuff… so it’s not AS discouraging. Glad to hear you’re sticking with it. And, yeah… short breaks help. I still do that even now.
P.S. Thanks! Still amazing to me that I can connect with somehow half-way around the world like this. Pretty cool! Glad this stuff is helpful.
“All in all, it’s a pretty badass lifestyle”
I agree! I love it and love the fact that it’s so easy and organic to learn code these days. The web is full of people like John who make it easy to do as long as one has a slight amount of determination. I remember way back in 2002 when I bought “HTML for dummies” and first started learning about all this… Little did I know what it would lead to later on down the road!
Thanks Zach… for me it was the first time I hit the “source” tab in FrontPage.
Hey John, this was the motivation I needed to put off sleep for another hour and get to coding. I’m a natural designer, now working with video production (which I love) and to be able to kick ass in coding would be grand. Your post will be the reason why I’m tired in the morning. Thanks.
Haha! I’m okay with that. I’ve had a lot of those mornings myself! 🙂
Glad it was inspirational. And yes having a command of coding feels pretty kick-ass… even if some of the mornings are rough! Lol!
Hi John,
Thanks for your opinion that I’m not wasting my time.
It’s taken me literally months to get a stable environment setup, come to terms with git, coda2, mysql, read books and posts on procedural and object oriented php, tried out frameworks, etc and although I’ve been doing this for months, every day, without being paid, it is ‘kick-ass’ and i love it.
I am pleased that you recommend taking on clients before feeling ‘I’ve got this conquered now’. I’ve recently come to realise that I’ll probably never feel this way because the industry is always moving forward and that’s what’s great about it.
Today i spoke to a potential customer and started to feel uneasy about committing to a project. I suggested a possible bespoke solution when he asked if i had any experience with an ‘off the shelf’ solution to tie up his accounts, stock control, website etc (quickbooks). After this conversation, i was left pondering whether we will reach a point in the future where our hard work will become wasted by a growth in ‘non and semi hard coded’ solutions, ‘Drupal’,’infusionsoft’ etc or even maybe systems whereby the customer asks for functionality and the code is written automatically. This is what lead me to your site today.
Do you think we may all become php dinosaurs one day?
Until that day, if it arrives, I’m going to ‘Carry on Coding’ 🙂
I can’t stop.
What an encouraging article. Thank you for posting it.
I’m forever fighting what seems like a losing when it comes to learning how to handle programming languages. Over the years I’ve come across almost the lot.
I’ve tried MS Visual Basic. I’ve tried PHP. I’m tried PERL. I’ve tried SQL-server. I’ve tried C. I’ve tried C++, I’ve tried Action Script 3,0, I’ve tried Javascript. By now I’ve learned the nuts bolts of programming concepts but haven’t quite managed to be abled to “speak these fluently” in the way you might do a spoken language. There’s always been some sort of barrier whether it be my own brain or somehow feeling intimidated by how much there is to learn, or even pressures of time constraints.
I also suffer from from “I’m not smart enough”itus sometimes when I feel like I have to ask for help, that others are somehow pointing the fingers at me that I’m asking a question, how can I think I will ever make it in the programming world? So this will be something to bear in mind the next time I think in this way.
John –
I appreciate the short, but encouraging, sentiment here. I am really passionate about development and am ready to step up my game, though was feeling discouraged at the moment. You brought up some points that got me steered back in the right direction and am gonna keep on keeping on. My biggest issue has been being passionate about it, but only going in bursts, with breaks in between in addition to language-hopping that has not helped one bit. I am a perfectionist by nature which can be good sometimes, but most of the time is bad, leading to me being way too hard on myself for the troubles i sometimes have. I think this perfectionistic attitude is my biggest hangup and I just need to roll with it. Personally, I am really good at reading, understanding, and debugging code that already exists, but my walls usually come and new creation – blank canvas coding. I need to a.) force myself to go in bits at a time and b.) do something every day, even if it is just simple kata exercises.
Thanks again!
Oh, one more question…regarding taking on clients. I agree and understand what you are saying here and have several clients I have done work for. However, I am currently unemployed and need some sort of contract work at least to support my family (old job was gone after company closed suddenly). I have an opportunity at a fairly large telecom company in php work doing legacy re-factoring of all of their systems and they seem to really like me and have done well on most of the tests they have thrown at me. However, the last one (which I believe is the last) is a somewhat simple application build that I can do, but not in the short amount of time they want it to be done in. Is taking the plunge with a client similar to taking the plunge in a new job…I just dont want to get in there and make an absolute fool of myself. Thoughts?
Hey Mike,
Very thoughtful comment and the kind of thinking I was hoping to inspire with this episode… so let me try and give you a good response.
1. Regarding working in burst. I’m the same way actually. It’s not something to look down on or get discouraged about. It took me a long time to realize that… but some people are sprinters and some people are marathoners. You’re a sprinter. So, just learn how to use that to get stuff done how you need. The big key for me was learning how to take the breaks without guilt. As a sprinter, the breaks are what give you the energy to sprint again. So, instead of working a little bit each day for two weeks to get a project done… you’re more likely to work like a mad-man for 2-3 days then take 2-3 days off. And repeat that. You can still get the project done it two weeks, but HOW is just different. That’s been the biggest help for me regarding that… learning how to use my natural way of being instead of always fighting against it.
2. Regarding perfectionism. I think this is the conflict of every artist. I go back and look at code from even 2 months ago… and want to puke. That’s the nature of always learning and growing…. you move beyond where you were and your creations from before disturb you. Again, you just have to let it go. It will ALWAYS be like that. Just keep going forward and try to enjoy what you make in the moment you make them… because it won’t be long before you hate it! 🙂
3. I think you should take the job if it’s to grow as a coder… but not JUST for the money. I know that’s easy for me to say but you have to really try not to let money trap you in something you hate. Of course, you have to do what you have to do… but if there’s nothing you can learn there… it’s better to go work at McDonald’s to make ends meet than give your art to something you can’t stand. It will rip the soul out of you. I speak from experience here. It’s not worth it. That said, if you think you can learn something from the company and/or you like the people there and genuinely want to be apart of it… you should go for it regardless of any fears or doubts you might have. And, stay until you outgrow it… which you’ll know when you do.
4. As for making a fool of yourself. You will. You should. Move on. I’ve done some really stupid things… some very publicly… in my coding career. It happens and you can’t let that stop you because there’s always a ghost to be scared of… no matter how good you get.
Hope that helps.
John
Thanks for this article. I was looking for some advice just like this. I’m pursuing a career shift/change and SQL went down like a breeze. Then, I got to Python and it’s frustrating me. I have all the building blocks, and can’t make them come together like I did in SQL. I’m determined not to give up as “just not smart enough” because I am smart enough. I’m also not confident that my struggles will land me paid work here soon. But, I’m going to keep going because 1, and 2 and 2 and 3 above.