I was born in India. Although I studied in English throughout I always feel my spoken and written english skils are not good. I work for a tech company and get along with my coworkers easily. There is no problem for me understanding or talking in general.
What I want to improve is -
1. My accent. I don't like Indian accent. Indian English is influenced by British English. But, I like American accent.
2. I have problems speaking continuously. I often miss spontaneity. I can't speak flawlessly without struggling to come up with correct and smart word. I prefer brevity but I often fail to express myself in similar way.
3. My written English are okay but I often miss articles ( you might have noticed from my writing ).
Are there any free courses? I am 29 so it's kind of awkward to take classes but I am ready to work on myself if anything available online.
What are your suggestions?
Back in my days as a professional translator, one of the basic drills for any sort of production problem was shadowing. The basic idea is to get a sample, play it once, then play it while repeating it word-for-word and working on nothing but producing it exactly, and then drill that to death. You might find it useful to pick an American with similar age/gender/education level/etc to yourself or to the target accent you want learn to emulate.
This practice is murderously difficult when you start. Pick samples which are interesting to you, which you can listen to first, and which are linguistically unchallenging (i.e. not the nightly news on a novel topic). Spoken dialogue from movies with broad appeal tends to work well for this purpose.
It is possible to code-switch on accents, and as you get better you'll tend to do it automatically. Don't worry about it potentially threatening your retention of your Indian accent and/or identity.
Production problems: (Your #2) Aside from continuing work on improving your vocabulary, which largely comes from reading and speaking (practice, practice, practice), you can work on circumlocution strategies. They're a bit outside of the scope of a comment -- you can rephrase, work around the lack of a word, use an analogy, even explicitly say "I'm blanking on a word" (practice any line you use to death so that producing that line doesn't stress you), whatever works for you. The important thing to remember is that your target interlocutors don't evaluate day-to-day language for flawless word choice but they do notice hesitation noises.
Speak short sentences with simple words. You will sound smart. If you uhh endeavor to what's it recollect the exactly aptimal no appropriate word for a given situation, people will (often subconsciously) downgrade your fluency and, regrettably, your intelligence.
Achieving drop-dead-cold mastery of short sentences with simple words allows you to build from there, including with pre-canned sentence fragments which are high-frequency in more sophisticated discourse and which you can throw out fully-formed, having practiced them to death. This is both a cheat code for passing any sort of oral examination and also a cheat code for life itself: having a stock of a few dozen widely applicable things at your fingertips makes it appear to the casual interlocutor that you have mastery of the entire vast field they represent.
3. My written English are okay but I often miss articles ( you might have noticed from my writing ).
Don't be self conscious about this -- I frequently do it, too. The only cure for this sort of thing is shipping more written words, then either editing them yourself (if you can recognize the mistakes) or getting someone to assist you (until you can recognize your own mistakes).