|
TL;DR: 1) Write down everything you've learned in the last 7 years regarding your chosen career. It'll show you how much you've grown as a CS student and programmer. Gives you perspective. You 5yrs ago probably couldn't be doing what you are today. 2) Get off the computer and do some activities that force you to learn and the emphasis is on personal improvement. I would recommend something that's not competitive but allows you to see continual improvement through practice and effort, like weightlifting. Stick with it. 3) You are't your work. your self worth as a human and a person isn't contingent on the level of awesomeness of your work. Some projects will be awesome, most will be average/ok, and some will be terrible. It's OK! 4) Rebuilding your self-esteem and changing your mind set will take time and focused work, but it's worth it. I was in the same boat as you when I was doing my CS degree in undergrad. I was fortunate to be surrounded by a group of peers who were quite gifted at coding and made complex projects look incredibly easy and were quite humble about it. Conversely, I always felt like I was struggling compared to them because I ended up having to work harder at the same projects and usually didn't do as well. It was a self-esteem blow because I was measuring my self-worth as a CS student based on how well I compared to my classmates and the level of effort I put in (the more effort I put in, the less smart I had to be, or so the train of thought went). Before you do anything else, stop, sit down, and write out everything you've learned in the past 10 years regarding web development. Seriously. What was the first web programming language you learned? First website you built? Second web programming language, second website etc. Did you get better each time? Was the next one better than the first either in terms of refined skills from previous experience or because you tried something new? I'll bet you it did. Also classes. Did you start with CS101 or thereabouts? Junior year you should be kicking around with algorithms 'n such depending on the school. That's a huge step forward in knowledge. Look at all you've learned and how you've grown over the years. You've progressed and gotten better with each website, language learned, and class completed. You are getting better. Focus on continuing to get better and learn rather than being judged solely by your product. This might be a poor analogy, but think of artists. An artist pours his soul into expression and sticks the pictures in a gallery for every passerby to come by and gander at. Some people think it's amazing and the artist captures part of the human experience. Other people think a cow could draw better with their tail while chewing cud. If the artist always listens to the people and bases their identity as an artist based on what people say or how they compare to other artists they will never push forward in their medium and seek to please others rather than grow. Focus on growth. Rather than looking at yourself as projects, look at yourself as a lifelong learner beginning a grand adventure. When you have conversations with people, ask them what they're learning and what about that interests them rather than judging their projects--you'll pick up some cool stuff this way. Ask them how they're incorporating what they're learning into their projects. The second thing I will tell you to do is get away from the computer for a period of time. Don't stop working on projects, but set limits and go do something else. I highly recommend picking up an activity you know little to anything about and will require you to learn something new to get better. Doing this will give you some perspective that it's not about where you are now, it's about what you're learning as you grow. For me, it was weightlifting. You start out weak and with terrible form. Over time, you start seeing improvements as you get better bit by bit and your watch your lifts go from brand new rookie (45lb bar) to heavy (>200lbs) with sustained practice. Focus on the learning part of the process and iteratively getting better. The goal here is to build your self-efficacy in your ability to keep learning and growing and that your identity isn't tied up in being "wow". Pursuit of a learning activity outside your normal venues will give you something to draw on when you're down in other areas "this kinda sucks right now, but it's like <X>. I'm getting better even when it's meh." Go find something you can get iteratively better at (other than programming) and don't give up. Third, to reiterate what a lot of other people have said, you aren't your work. Straight up. To paraphrase some of the best advice I've ever heard: A small percentage of projects/things/days will be amazing, you'll be at the top of the world and feel fantastic. Some percentage of projects/things/days will be terrible and you'll feel it. Something will feel off and you'll know it, and that's ok. Identify what's off and see if you can go about fixing it next time. It's OK, they happen. Finally, the majority of projects/things/days will be Ok. Not fantastic, not terrible and that's just fine too. Don't flog yourself if your projects don't turn out amazing. Not every project will be the bomb diggity now, or later on professionally and that's ok. Some websites will be amazing, some websites will be ok, and that's just fine. You're going to learn things by doing each one and we tend to learn a lot more from our failures than our successes. I will say this, it's not easy to change your mind set. You can't snap your fingers and voila new mindset. It doesn't work that way, never has, never will. Rather, you need to be deliberate about it. The best way to go about doing this is to set short term goals that are specific, measurable, and attainable focused on learning. I.E. This week I will read 10 pages about <X> technology and implement a mini-test program for it. Keep doing this over and over. The emphasis here is on the process of learning rather than the outcome. The mini-test program could crap out, but you'll learn more by fixing it rather than getting it right the first time. Pursuing this will also expose you to the idea of building mastery through continual learning rather than building projects other people find awesome. Also keep a learning journal--it can be as easy as a text file with dates and record what you did, what worked, what didn't work, and what you learned going forward. Over time, this process will help reorient your way of thinking towards one of continual learning and building mastery rather than trying to always build an awesome project everyone praises. People are fickle, you can please some of the people some of the time, but you can't please all the people all the time. However, you have the power to make yourself better. Focus on that. If you want more scientific information, go read up on implicit theories of intelligence and ability and goal orientation (https://scholar.google.com/scholar?hl=en&q=implicit+theories...) and pay attention to a lot of the work by Caroline Dweck. She's the mother of implicit theory research. In psychology terms, so you know what you're looking at, you are expressing a performance goal orientation (measuring self compared to others, feel down when you don't think you add up). What you want to pay attention to is the discussion of a malleable or incremental theory of intelligence/ability. |