
Ask HN: Self-doubt, inferiority complex is killing me. How do I fix that? - throwawaycs
I&#x27;m a CS student. Recently I have been battling with self-doubt a lot. I&#x27;m super self-conscious when I&#x27;m coding as well as when I&#x27;m speaking English--my 3rd language. 
As a result, I avoid trying to solve hard coding problems. I freak out when I have to pair program with someone or when someone else is reviewing my code. And I tend to make a lot of syntax errors. I also tend to rely on documentation a lot.
Furthermore, I tend to make a lot of stupid mistakes when I&#x27;m speaking English even though I have been living and attending college in an English-speaking country for the past three years.<p>Could you guys please give me some advices on how to deal with that issue? Thanks  lot!
======
sgt101
\- It's amazing that you speak three languages, most English speakers will be
in awe of you for that alone. Bear that in mind when you make an error! \- Who
cares about syntax errors in code? This is why we build in-line checkers in
IDE's. Also syntax errors are easy to find and fix, semantic errors are the
killers -> the bloody thing works and then blows up... arrgggh!

Big mantra : don't beat your self up. The rest of the world will do just fine
at that job without your help. Also, mostly other people simply are not
watching and critiquing you, people who are are either 1. mad, 2. in love with
you. Both 1 & 2 mean that this is not an issue.

~~~
venantius
I think this is a wonderful worldview to have :)

------
Nortey
Relying on documentation a lot is NOT a bad thing. Your problem solving
abilities are important but one could make the argument that your ability to
look up how to solve a problem is just as important. I can't count the number
of times I've heard developers (including myself) say "Most of my job is just
Googling how to solve something...".

When I was in college, once of my classmates only used documentation as an
absolute last resort claiming that he didn't want to rely on it in college
since he wouldn't be able to rely on it in the 'real world'. Not only was he
slow and a pain to work with, but he couldn't have been farther from the
truth. Google isn't going anywhere, and if anything its more accessible in the
workplace than in a college setting where at times you're forced to write
syntax correct code on paper in some unrealistic testing environment.

In short, embrace the documentation :)

------
weddpros
TL;DR; Fake it till you make it

You're probably a perfectionist. Bad news: in a few years, you might still
think you're not good enough, when in fact you'll good enough. Good news:
perfectionism will push you forward.

So you can adopt the "fake it till you make it" attitude: stop worrying, go
ahead and try to convince others you're good enough. It should be easy enough,
because others are much less demanding than you might think... Then you'll see
others judge you positively. That's when you'll start to make it.

In other words: I'm a very experienced (42 yo) developer, highly regarded, yet
I can't write code without running it, I make typos every few lines, I rely
heavily on the huge amounts of documentation found on the web...

And I know my english is not perfect, but sometimes, a native speaker tells me
my english is fine... So I continue to fake it, till I'll make it.

------
myth_buster
I've been in a similar situation as you. I come from a third world country and
didn't have access to computers until my late teens and started learning CS
fundamentals only after my undergraduate studies. Given this, the US tech
scene has been quite competitive and intimidating since there are highly
talented people who started coding when they were very young. Initially I was
battling with self-doubt but once I understood above points, I've been trying
to bridge the experience gap. And it's quite easy to chug along if you love
what you are doing.

So I would say that it's unfair to compare yourself with others as the
circumstances for everyone is different. Just use yourself as reference and
see whether you are better off than you were in the past. One tell-tale sign
of progress is that when you look at your code/work from recent past, you will
think of a lot of things you would do differently and sometimes you would
think "what the hell you were thinking then" which is a great thing. :)

One of my mantras (which I may have picked from somewhere subconsciously) is:

    
    
      Life is not a sprint, it's a marathon. 
    

So slow and steady may indeed win the race.

~~~
johnloeber
You're right that life is not a sprint, but I'd like to go one step further:

Life is not a race. :-)

------
shawnps
My advice is to code more. You will get more accustomed to the thought process
that goes into writing code, more accustomed to your editor, and more
comfortable with coding overall.

One thing that I did that helped me code more was challenge myself to code
every day. Using GitHub helps because you can check your streak. My friend and
I did this for about 2 months and we felt very productive. This is his blog
post about halfway through: [http://www.ironzebra.com/post/105/abc-always-be-
coding](http://www.ironzebra.com/post/105/abc-always-be-coding)

Your English is fine. I live abroad and meet people all the time who use
English as a second language. Yours is by far some of the best English I've
seen from a non-native speaker.

~~~
nene7
This is the best advice given based on my experience.

I am also suffering from low confidence and inferiority complex. What actually
helps is coding more and pushing to github as much as I can. Especially if I
think it is still not good enough. This makes you inclined to work more at it.
So gradually you get better with time.

Another thing which I could associate with is pair programming which just
juggles my process. There are at least 6 things that I am thinking then the
guy next to me says that is should be done this or that way, and I already
lost what I thought. And you need to rebuild your entire modeling over and
over and over again. Its demoralizing and energy consuming way overboard. So
long story short people are different and the entire point of pair programming
is talking about the problem and getting better with problem-solving by
communicating.

I quote one of my latest interview where the guy said "just don't sweat over
it there is no best answer". Which he was trying to say that the only thing
they were interested in that I could use "lego" to build and reason about my
building or not.

And I could give more and more advice. But it's okay if you feel that way,
Proves that you care . And there are some quotes about being human and all.

------
thinkingkong
Hey,

Its a tricky time of day to be asking. Fortunately at least one person is up.
;)

First off there are considerable reasons why this might be happening, and a
few ways to deal with it. But its going to be a lot of hard work. Rather than
speculating, what Im going to suggest is that you take advantage of any
programs at school and talk to a therapist or counsellor that is familiar with
these types of issues.

Outside of that, prepare to roll up your sleeves. The mind and body are like
an elastic and youre going to have to stretch it a little. You may have been
protecting yourself from criticism for a little too long. Avoiding anything
too difficult; too easy to fail at. Unfortunately this isnt the best way to
grow. Try and be open to criticism, by understanding that its an opinion. Its
feedback. Sometimes it helps you get better, and does not rob you of any
accomplishment or success, no matter how sleight.

Try things that are difficult and fail. This is sometimes the best way to
learn.

Find a mentor or someone you look up to and ask for guidance. You might feel
awkward at first, but most people will be flattered. This is a more "safe" way
to learn from experience.

Please remember to be kind to yourself during this process. Its easy to have
negative self-talk. Be aware when this happens and try and steer your
narrative to something that acknowledges your progress; do not rely on
comparisons.

------
hliyan
Consider the following approach: start with simple problems you know you're
good enough to solve, and then _send them out of the ballpark_ \-- basically,
do such a complete, perfectionist job that you can't help but be impressed
with yourself. If a subject is baffling you, consider picking a small area
within it and then throwing all your energy at it and killing it dead.
Confidence comes with success. Small successes can build up to bigger ones.

Edit: But persevere. It's my experience that it takes at least a year of work
for any significant rewiring of personality and attitudes.

------
DanBC
> I'm super self-conscious when I'm coding as well as when I'm speaking
> English--my 3rd language.

Wow, most people only speak one language and they do that badly. You speak 3!
Your English is good in that post.

If this anxiety is affacting your day to day life you might want to consider a
short corse of therapy. You could probably use a book or website.

"Mind Over Mood" is a respected book. [http://www.amazon.com/Mind-Over-Mood-
Change-Changing/dp/0898...](http://www.amazon.com/Mind-Over-Mood-Change-
Changing/dp/0898621283)

MoodGym is a respected Australian website.
[https://moodgym.anu.edu.au/welcome](https://moodgym.anu.edu.au/welcome)

If you decide to use a therapist make sure you find someone with a reputable
registration and that you are clear going in what you want to work on.
Cognitive Behaviour Therapy is probably useful. It should take 8 to 14 weeks
at an hour per week.

> And I tend to make a lot of syntax errors. I also tend to rely on
> documentation a lot. Furthermore, I tend to make a lot of stupid mistakes
> when I'm speaking English even though I have been living and attending
> college in an English-speaking country for the past three years.

You are not stupid, and the mistakes you make are not stupid. English is hard!
There are at least 7 different ways to pronounce "ough" (like in "rough" or
"through" etc). It's tough for people to learn. Stresses on syllables come in
different places. You might think that making mistakes is always bad and that
everyone will judge you. Some people will judge you, but many more won't
notice and even of the people who notice there'll be some people who don't
care.

------
zamalek
> tend to make a lot of syntax errors.

Rely on your compiler. I'm a senior dev and I _still_ so a build on my machine
before doing a code review. One less thing to worry about if you make it a
habit.

As for the poor English: I would think that any reasonable English person
would care about the quality of your English. I assume that most reasonable
people would realise that English is the "universal language" and would then
also realise that it isn't everyone's first language.

Professionally I have been working in almost the same situation as you: 7
years at an Afrikaans company and I started off not knowing a word of the
language. _Friendly_ jokes were made, but everyone always realised that it's
more important that we could communicate and not how well we could
communicate.

Basically what I'm saying is that the only person who actually cares about the
quality of your English is: _you._

------
dlss
You provided a lot of details about what's happening, but not a lot of details
about what's going wrong (the emotions)... so I'm not sure if this will apply
to you, but I'm going to say it in the hope it'll be useful to someone:

The goal of programming isn't that _you_ perform flawlessly, the goal of
programming is to have fun while building something that performs well.

To put that another way: It doesn't matter how many mistakes you make while
coding, what matters is that you eventually build something that works. Lean
on test cases, write drafts that don't work, say dumb things. It's great. It's
learning. Find the flaws, and then fix them -- mistakes don't matter as long
as you remove them before shipping the code... and spotting errors seems to be
something you're good at :p

------
gorbachev
Lots of great advice already.

There will always be people smarter and better than you. All you can do is do
your best.

It's hard to be a programmer in a world where 99% of every article about
programming is some sort of epic tale of mindblowing success. What those
stories don't tell you is the road it took to get there. Most success stories
are results of the team banging their heads against the wall for months or
years until they found what works.

The life of a programmer is a neverending series of fixing your own, or if
you're unlucky other people's, mistakes. There is no such thing as a perfect
computer program. Occasionally you get to see the results of your work have
positive impact on something or someone. Savor those moments, they don't come
often for most of us.

------
pyre
> I also tend to rely on documentation a lot.

I rely heavily on resources like StackOverflow, Google, official docs and
Dash.app is a godsend for offline-coding. There are many functions (python)
standard library functions that I know by name, but I never remember the call-
signatures for. I am _always_ looking things up in documentation.

Things that I use all of the time are ingrained into memory through rote
repetition.

That said, the most important thing is knowing what exists. If you don't know
that a function or method exists, then you don't know to use it. As long as
you know that it exists, you can (usually) easily lookup the documentation for
how to use it.

> I freak out when I have to pair program with someone or when someone else is
> reviewing my code.

I've always hated being in the driver's seat for pair programming. I always
feel like I make stupid mistakes and my fingers stumbled over the keys
whenever someone is looking over my shoulder (this doesn't just apply to pair
programming). I much prefer to just put in my headphones, get into the zone
and let the rest of the world melt away as I dive into the problem at hand.

My suggestion here? Let someone else into the driver's seat for pair
programming and don't be afraid to ask questions, especially if you consider
the other person more skilled than yourself. If the person gets annoyed at
your asking questions, then they aren't a very good mentor.

------
aki-xiii
As someone with a similar background as yours (I was an international CS
student who first learned programming in the freshman year at a English-
speaking college), I can only say that you are not alone in this struggle. If
I can give an advice to my younger self, I would ask myself not to beat myself
too much for not being able to be as smart as the people around me. In short,
don't compare yourself to others, because it gives more harm than good.
Instead, appreciate the good thing you have done and keep doing your best at
whatever things in front of you.

> I tend to make a lot of syntax errors. I also tend to rely on documentation
> a lot.

Believe it or not, many of us who work in the software industry rely heavily
on IDE to fix syntax errors. My suggestion here is try to pick your favorite
language and keep practicing (and make mistakes) until you're comfortable
using it. I hate to say that there is no shortcut in getting better. Small
mistakes are tolerable, even when you're doing whiteboard interview later on.
More importantly, I would say that understanding concepts in programming
languages is a LOT more important than remembering syntax (i.e. memory
management in C, heavy emphasis of OO in java, functional programming in
scheme, and so on).

As for relying on the documentation, it does not come across as a bad thing to
me. For example, before I call a function from a 3rd party library, every so
often I check the documentation for it. From there I can learn the contract of
the code or some gotchas that I need to be aware of.

------
mellavora
You are battling. Good! You are alive! Even better- you have and are conscious
of your strategy for the fight. You are already 90% of the way to superhero.

As pointed out elsewhere, this is a long game. You may not be happy with your
current scoring capacity, but you have plenty of time to improve your
techniques, alter your strategies. Perhaps "avoid solving hard coding
problems" is not the best approach (though it may be, every one is different
and perhaps your confidence builds by successfully tackling a large number of
easier problems). Your self consciousness can morph into self awareness.

Does making syntax errors help you? If not, try a different approach. Look,
making errors MIGHT help you. You learn exactly where you need to sharpen and
improve your thinking. Valuable feedback.

One more thing: mind and body are one. Get to a gym 3x week, and do squats.
Two sets, 20 reps per set. First day do it with an empty bar. Each time you
are in the gym, up the weight by 4 lbs. Six months from now your mental
toughness will be through the roof. People _will_ look at you differently.

------
kazinator
> _I also tend to rely on documentation a lot._

I'm writing some code in a language that I made myself from scratch. I rely on
the reference manual quite a lot. Thank goodness I wrote one or else I'd have
to go into the source code.

I make syntax errors even though I designed the machine that is telling me
that I make syntax errors.

------
jestar_jokin
\- You're allowed to make mistakes, that's what being a student is all about.
If you knew it all already, you wouldn't need to study, right?

\- Practice makes perfect. You just gotta keep trying and failing; eventually
you'll find you fail less often than you try. Don't avoid trying out of a fear
of failing, or you'll end up doing nothing, which is worse than feeling
embarrassed.

\- Don't feel self-conscious about your English skills. Ultimately it doesn't
matter; I've worked with programmers from around the world, often with
"quirks" in their written/spoken English skills, and never has it been a
barrier to communication. A common understanding of the theoretical CS
concepts should help.

\- Try mindfulness meditation. Focusing on the present and awareness of the
world around you might help direct your focus outwards instead of inwards.

------
JakeAl
My two cents: Work hard at improving your knowledge and experience, find
yourself a tribe (it really helps in learning when you are not in it alone and
having someone to work with as time goes on becomes invaluable), and find
yourself a mentor. A mentor will help you learn by exposing you to things that
will not only keep you interested and engaged but also push you just beyond
your capabilities so you grow at a bearable/reasonable pace. That mentor may
be the leader of your tribe or just a more knowledgeable resource. A mentor
will be someone that believes in you, which is also invaluable. Fake nothing.
Ask questions, learn, and alway admit what you don't know. When you do
suddenly it becomes clear how to fill in the blanks. Don't be afraid to fail
or be wrong. That's just part of learning.

------
dschiptsov
Realize (accept, internalize) that we make mistakes no matter how hard we are
trying to avoid them, so being too anxious about making one is just a waste of
effort (oxigen, glucose) and self-impoverishment.

Grammar mistakes in third languages are OK, the meaning of what you are
intended to say is what is important. From could be imperfect if it makes
sense. Striving for a perfect order of long words is what killed lots of would
be writers.

Same concepts work for programming. As long as your data-structures are
repressing the problem domain adequately and choice of related algorithms is
reasonable, all the minor mistakes or errors doesn't matter.

BTW, there is no such thing as error in universe. It is mere a wrong path
(branch) taken (take a look at what is a heuristic-based depth-first limited
back-tracking search).

------
dpw
I agree with other posters who say that everyone makes syntax errors, and that
relying on documentation is fine (consulting documentation, and not just
banging out something that seems to work, is a mark of a good developer)

With that said:

Coding fluency is something that can be improved with practice. Google Code
Jam has all the previous rounds available, and there are other similar sites.
Do a round once a week, and hold yourself to the time limit. It will be
unpleasant, and you might not think you do well, but no one will be watching.
That context trains you to write correct code quickly, and you will improve
with practice. You'll find that the coding fluency you gain helps your
programming more generally.

------
andersthue
"The root of all our problems is our inability to let go", Leo Babauta in the
free "Letting go book" [http://zenhabits.net/lg/](http://zenhabits.net/lg/)

So if that holds true, you might be holding on to a statement like "my poor
english makes people think I am less of a person" \- but if you try to
investigate that statement you might discover that the world is full of people
speaking poorly english that is not a lessor person.

Try see what internal beliefs that your are holding on to, often these belief
is not true when examined, and if you let go of these beliefs you also let go
of your self doubt.

------
rifung
Someone else smarter than I am should tell you how to deal with this issue. I
just wanted to say that having been in a similar situation and then starting
work, I can tell you are going to be a great developer just because you care.

From all the people I've worked with, the ones who cared were always better
than the ones who didn't, and you'll be surprised at the number who don't. Of
course there are other things like experience and all that, but the fact that
you actually care about your ability and hopefully want to improve already
will take you very far. So have faith in yourself because I certainly have
faith in you random person on the internet =D

------
aaronbrethorst
Take a deep breath. Relax. Pick up a hobby that doesn't require you to sit in
front of a computer. Life's too short to be stressed, and no one is judging
you.

------
henryw
I think these issues are normal for most people starting out. Just accept that
there will be many challenges. With diligence and time, you will be able to
conquer them all. Keep pushing yourself and eventually the hard stuff won't be
hard anymore.

Accept that you will mistakes, and that it's okay to do so. Correct them and
learn from them. Keep working and keep getting better. Your biggest
competition is yourself in the past.

------
mindcrash
It's called Imposter Syndrome, and you are certainly not the only one.

My advice?

Read this:
[http://www.hanselman.com/blog/ImAPhonyAreYou.aspx](http://www.hanselman.com/blog/ImAPhonyAreYou.aspx)

Watch this:
[https://www.youtube.com/watch?v=hIJdFxYlEKE](https://www.youtube.com/watch?v=hIJdFxYlEKE)

------
nchelluri
Let me say right off the bat your written English is impeccable, IMO as a
native English speaker. I understand it's quite possible you spent a lot of
time reviewing and revising your post... I do that too, with all of the code I
feel most proud of :)

I used to be pretty bad at programming. I also used to be pretty bad at
walking; when I was born I couldn't even sit up straight or crawl, let alone
walk!

I have not always been a big fan of pair programming. In fact sometimes I feel
very introverted and just down-right don't want to sit down with a coworker
and go through something. But, some of my best memories from school are
sitting with my OS and later RTOS partner, who was from China and spoke pretty
poor English, and working through our issues into the middle of the night and
beyond. And these past few weeks, I've spent hours every day with a very
extroverted coworker getting our code just right (it's still not done). I
mentioned offhandedly how "dealing with people is a skill, one I'm still
working to develop" and he said that he thought I was good at doing it. I
asked, "Really?" and he said "yes", and I replied that I really appreciated
the comment and the thought.

I don't think I can allay your fears, and I can't say with certainty that they
are misplaced, but I believe to some (perhaps large) extent they are. But I
understand them, deal with similar issues of my own, and I have a pretty
successful career by my standards.

If I were in your shoes, I'd try to sit (alone) and work on some of those hard
coding problems. I've heard good things about the book "Cracking the Coding
Interview" and I have made a couple of half-assed attempts to go through it,
and lately I intend to go at it full force and see where it takes me. I'd also
try to list all of the things that I've learned and how far I came from when I
first started programming - I learned from the gentle introduction in C for
Dummies, quickly got in over my head, and had a friend help me with pointing
out all the off-by-one errors in my new fancy lightbar menu code bit that I
wrote for Borland C/DOS, and my fancy console input routines. I've looked back
on my journey, and taken large steps backwards due to personal issues. But
I've always moved forward in the end...

------
mandeepj
> I also tend to rely on documentation a lot.

This is the best way to work. I am speaking from my experience. It will keep
you on right track to get things done.

> I tend to make a lot of stupid mistakes when I'm speaking English

try to be friends with your class\batch mates. It is far easier than becoming
friends with outside people (strangers). Go out on lunch\drinks with them.
Slowly your circle with increase and eventually you will see improvement in
your communication and socializing skills.

------
derrida
Secular meditation.

The second half of this helped me with the effects of my doubt.
[https://www.youtube.com/watch?v=KmEG3zzCUQs](https://www.youtube.com/watch?v=KmEG3zzCUQs)

The thing I did was to hold my doubt like a mother cradles a baby, don't deny
it, acknowledging it. Until this is a joke and you're laughing at what the
hell you were so worried about :) "Love your thoughts to death"

------
dmourati
Your written english is outstanding. I wouldn't have guessed non-native. I
found two errors in the last sentence (advice instead of advices, a lot
instead of lot) but these are minor ones.

Set yourself up for success. If you do better when someone reviews your code
then spend your time on reading documentation and writing good code before
review. In pair programming, look for opportunities to shadow and review
rather than write.

------
ithron
When comparing yourself to the rest of the world, always remember that you
only know how "great" other people are because they told everyone that they
are. Then remember this:
[https://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect](https://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect)

------
andrew-lucker
Just stop it.

Seriously though, you learn a new human language and jump into one of the most
intense fields of study and start having an inferiority complex? With that
attitude you'll need to be world renowned before you have confidence to speak
in public.

If there is anything I can do to help, as a native English speaker with
programming/CS experience, my email is in my profile. Best of luck.

------
spotman
some great advice already posted.

try to not get to lost on where you are and how big of a delta to where you
envision it is that you want to be. slow down if needed.

Try to enjoy where you are and master it. give your self credit at the level
you are at. be proud of your code even if others are not kind. strive to make
it better. always be improving.

be pragmatic. don't get lost in the weeds of politics, status, or any specific
sort of rabbit hole that you won't learn from. if you aren't sure whether you
will learn from, you probably will.

someone posted recently. if it's not a hell yes, then it's a no. I really like
that. don't take on too much.

anxiety can suck. take it one day at a time, and learn to get the courage to
ask questions when needed and practice the art of asking questions. it will be
invaluable.

if you can find something passionate that excites you, remember this moment.
occasionally refer to what makes you passionate and recalibrate as needed. if
you find no passion, maybe take a break and revisit later.

good luck!

------
rokhayakebe
_Before you treat yourself for depression, make sure that you are not in fact
surrounded by A_ _holes_

\- William Gibson

------
bioaway
I know how you feel. Just finishing up my biosciences degree and the stress
has really screwed up my learning. Projects and coursework were fine but
examinations were awful. Never did figure out how to get over it and I regret
not seeing my doctor about my issues.

------
zeeshanm
Hey man - don't beat yourself up. I can barely code and still can amaze
myself. I would say just do things that you think you cannot do. And don'
think about the outcome. You would find just by taking the initiative you can
do anything.

------
DenisM
Clearly the anxiety is getting in the way of work and study, so it's time to
visit a specialist in psychotherapy. Your college advisors or your primary
physician should be able to suggest the right person in your location.

Your English is fine, by the way.

------
2chen
[https://en.wikipedia.org/wiki/Impostor_syndrome](https://en.wikipedia.org/wiki/Impostor_syndrome)
is extremely common in high achievers--you're not alone.

------
tallerholler
the key to success is being able to walk through fear and anxiety and learn
from it. it doesn't matter if you make plenty of syntax errors, it only
matters if you pay attention and learn why you made those errors. rome wasn't
built in a day. stop beating yourself up and cut yourself a break. most
programmers in the world are the same as you and many of them (including me)
have gone through periods of inferiority or self-doubt (or imposter syndrome).

just try to stay focused and dont spread yourself too thin when it comes to
learning. build a foundation one day at a time.

have fun, laugh a lot, live free follow your dreams.

------
doktrin
I don't have any actionable advice, but I do recommend you get it sorted out
if at all possible. I'm a former programmer who now works as a janitor, and I
have no plans on ever returning to tech.

------
88e282102ae2e5b
This is what it's like to learn something real. Also, every programmer makes
mistakes. That's never going to stop. Ever. A good IDE will help with syntax
errors.

It gets better.

------
Vendan
heh, relying on documentation means literally nothing for programming. I have
multiple tabs of documentation open and the IDE is the only thing that keeps
me from checking in broken code on a regular basis(still happens though).
But... to my manager and my co-workers, I'm a god of programming cause I do
shit that they didn't even think was possible.

~~~
philipov
There's a joke that the job of Dev Support is looking up documentation for
people too distracted, too stressed, or too stupid to look it up themselves.

~~~
Vendan
Man, I would love to just have someone with perfect recall sitting next to me
full time. "What's the arguments to this function?" "Where's the class that
handles blah?". Intellisense and go to definition and such only help so much,
and only in certain languages.

------
LeicaLatte
Work on things that no one else is doing. If there is no precedence, the
better.

------
e12e
Lots of good advice here already!

My suggestion is to tackle this from the language side first. It's really
frustrating to be "trapped" behind a foreign language, feeling that you can't
express yourself. It gets harder to learn languages as one gets older, and
learning a language is like climbing a staircase: you struggle for what seems
for ever with something, then you jump up a level, and everything seems a bit
easier. Until you realize you're on a plateau, and you don't seem to be
getting better. Again. And again. And again.

So that's one thing: even when you feel like you're standing still, as long as
you're immersed in a foreign language, you _are_ improving. Even if it doesn't
feel like it.

Best advice here is just to find low-stress arenas to practice. Join a sports
club, chess club, book club, film club, martial arts club... you get the idea
-- find some people that share your interest and hang out. Talk without having
to deal with a foreign and difficult subject at the same time.

That might help with the anxiety connected to English.

You mention English is your third language, are you using both the other two
actively? If you can, it is usually much easier to learn a language if you can
avoid switching back and forth -- and just stay in the new(est) one all the
time. Talk, think, do everything in English. Avoid phone/video calls in your
native tongue (within reason) -- try to stick to email/letters. If you think
it's hard, try to make a deal with anyone you call regularly, say you'll try
to give it three months. Let your brain work for you.

Don't worry about the syntax errors in code. Just code more, and you'll make
fewer mistakes. Try to code for fun, or at least outside of a class setting,
without any pressure. Maybe sign up at codeeval.com and try your hand at some
of the easy exercises first.

Many of the problems there are pretty much lifted from project euler -- and
that's a good resource too. But with codeeval everything is wrapped up nice,
very little setup needed, and you can just play around.

Last, but not least -- you mention you're attending college -- try and talk
with one of your TAs, professors or fellow students. See if someone might have
the time to pair program with you, on something not directly related to class
(again, try to avoid to stack different kinds of pressure anxiety). For
example, you could make a deal to try and solve some easy codeeval (no, I'm
not affiliated, it's just an easy source of a few exercises) challenges.

Finally: the best way to learn is to make mistakes. It's certainly _much_
better to make mistakes than do nothing. And if you make errors while pair
programming, not only do _you_ learn from your mistake, your partner does to!

------
g1236627
Don't

