I have been programming since 3 years back. I know all the basics stuff as well as advanced stuff like OOP and data structures too. and now I am confused what should I do next?
I'm thinking about to make projects. What project should I choose first to learn many new things. I love programming and love to improve myself day by day.
I've coded in C++ for over 10+. Before I switched to web development, I was working on Wall street and I simply got sick of the domain and the culture.
If you enjoy working at the low level, reinventing the wheel, long compile time, boring menial work and working on legacy code base. If you love coding with handcuffs in a corporate world and can't pick solution off the open source shelf then stick will C++.
With respect to C++, there are other areas like network programming, GUI development, message queues, and database to name a few other ares. Always make sure you're learning cross development best practices. Make sure you're coding on Linux, you will grow tons just from this alone.
You will also be a part of a bigger community, you will have more opportunities to do consulting and charge the big bucks. Be able to go to conferences and meet cool people and heck even do speaking in these conference (it's easier than you think!).
Go look at the open source code base for Chrome v8 or Firefox spider-monkey for what legacy cross-platform C++ code you will suffer doing in your long unhappy C++ career.
There are many ways you can do this. One way is to find an Open Source C++ application/library that means something to you (https://github.com/trending/c++?since=monthly) and contribute.
I work with starup companies for the most of my time and there are few technologies that are more relevant then others. Main differentiator is speed of development and healthy ecosystem. From that point of view you may want to pick whatever is appealing to you more from the following list:
- (arguable) ruby
- (somewhat outdated but still relevant) java and .net
Given your C++ background the most logical choice would be go. However, if your aim at well paid (but boring) jobs with large corporations then java would be a good choice also.
I would also recommend diversifying your skills. From that stand point you may find node.js "refreshing" - it will turn everything you know about C++ upside down :-). Python is just awesome but in the job market it is considered a nice to have skill and almost never a primary requirement. Maybe because it is so easy to learn that anyone can do it. I find Ruby to be controversial, it has thriving ecosystem and a lot of followers but I would never choose it for any of my projects for business reasons. At the same time, ruby developers (as well as .net) probably the best paid developers at the moment.
There are other very good languages out there of course, so please do not take my advice literaly - pick what ever you like the best and keep advancing your skills.