How to become an expert in Python, PHP and Javascript?
-
So I've been programming for about 9ish months now, and I've taught myself some Python, some PHP and some Javascript. I want to become better at these languages - I can hack something out, but a lot of things like OOP, using lists in the most effective ways, etc, is lost on me. What are the best ways to become an "expert" programmer? Does it depend on the nuances of the language, or is it more general? Is there any math I should be studying alongside it? Obviously a lot depends on what you want to do with it - so far I've mostly done small scale internal applications as well as web programming. How do I find out about good program design?
-
Answer:
The only solution is Experience. You'll become an expert when you will have coded a lot (like really a lot) in these languages. Developing projects will make you face problems, so you gonna have to find the solutions, and one day you'll have seen enough solutions to problems that you will call yourself an expert. Coding, reading code, reviewing code, all of these will help you know how to code with a good design. You can't just rely on one snippet of code you see on the Internet to say that you know what is the good design for what you're trying to achieve. You need to look at a lot of them to know what would be the best solution to your problem.
Andrew Alexander at Programmers Visit the source
Other answers
Expertise, like friendship, is a product of time. My favourite quote on the subject (I forget the source): "Good judgment is the result of experience. Experience is the result of bad judgment." Put the hours in, study your craft. Strive not only for immediate solutions, but for beauty and efficiency.
sunwukung
First of all it's important to understand programming at an agnostic level. Knowing the principles, concepts, methodologies and such will help you in the long term. Here are some links to some good books to help you: Books: http://rads.stackoverflow.com/amzn/click/0132350882 http://cc2e.com/ http://rads.stackoverflow.com/amzn/click/0201835959 http://rads.stackoverflow.com/amzn/click/0201835959 Just remember when you http://en.wikipedia.org/wiki/KISS_principle it's also better http://en.wikipedia.org/wiki/Don%27t_repeat_yourself if you want a more http://en.wikipedia.org/wiki/SOLID_%28object-oriented_design%29 relationship with programming. :)
Daveo
1) You're in the right place. Community forums like stack exchange are an excellent way to find information. 2) Figure out OOP before moving on. It's a necessity before moving on from scripting to more advanced development. net.tutsplus.com is a good site for reference and I found this guide here: http://net.tutsplus.com/tutorials/php/object-oriented-php-for-beginners/ 3) Once you've learned OOP and practiced using it, download a framework with good documentation and follow a "Getting Started" guide (a framework is a collection of tools that help you develop faster in a language). Symfony is a good one for PHP and you can follow the guide here: http://www.symfony-project.org/getting-started/1_4/en/. They also have a "Jobeet" tutorial for you to follow along with 4) Along with #3, learn the MVC (Model View Controller) pattern. This is a popular programming pattern that is used in a variety of frameworks. It is a must if you want to move from beginner to intermediate. Good luck!
Greg H
Work on a code project with programmers who are better than you Protip: this seems to work for anything you want to get better at, not just code! But seriously, if you can find talented people who are willing to tell you when you're doing it wrong, try to work on a project with them. Read things written by programmers who are better than you Daveo linked to some good books. You can also find many blogs written by people who care about becoming better programmers (and are usually pretty awesome programmers themselves).
TehShrike
Being an expert programmer is probably a general ability to reason and solve programming problems, both common and uncommon tasks. This is probably language independent, but I'd say you should also be very fluent with at least a couple of programming languages and their tools. There is no magical recipe to become an expert, except with hard work: read tutorials, google a lot, listen to experts, work on problems, code a lot, work in existing projects with other people, and generally acquire lots of real world experience. All this is language independent advice.
Andres F.
There are of course several approaches that will lead to success. As already said Experience is the most important one, but it depends on you how much time you need to call yourself an expert. However the timespan will be measured in years or even decades. I began learning programming 15 years ago, and I think the best improvements in my skills were due to the following reasons: Pressure is bad. Keep a good mood and forget unsolvable problems today just to return to them tomorrow (and wondering why it seemed so complicated the day before). I began programming when I was a kid and no one forced me to learn anything. Do not get me wrong: You do not need to start as a kid to master a programming language. Your very own motivation - without forcing yourself to achieve an unrealistic goal in a too short amount of time - will be the key to success. You also will not have to write your own operating system like Linus did. Neither does anyone expect you to have a successful website visited by hundreds of users a day. Simple excerpts of your projects will show (your boss, your customer, your colleagues ... ) that you know what you do. Stick to a topic until you (almost) mastered it. Learn the basics. Mastery is something which is not achievable. It is unlikely to know everything. But be sure to learn the basics, and do not underestimate the concepts of programming languages, paradigms or certain syntactic rules or best practices. But please: do not just accept it if you hear or read NEVER or ALWAYS. Whenever someone talks about never doing something, do not hesitate to ask why. There is a reason why there are rules. But only the reason will tell you if it is a good thing for your situation or not. What is good in one language can be problematic in another. Keep moving forward. Do not stay at the same topic for decades. After 10 years of Javascript, there will be very few people who can teach you something new. But in 10 years no one will be talking about Javascript ... why? ah now you got me. Predictions concerning the future are always prone to errors ;) However after some months or years of collecting experience in one field you will see that the stuff you learn will not be as much as at the beginning of your "mission". There will be a time when people start to ask you for help when they have problems (real problems, not the please do my homework stuff). This is a good indicator that you have become some sort of an expert. At this point ask yourself if there is still the potential to develop yourself. Or maybe there is something new you want to lay your hands on, but no one lets you because you are just the perfect chicken for this cage. Go out with your friends, wife, dog ... It will give your mind a rest. Problems like Android vs. Iphone, Flash vs. Silverlight, App vs Program ... will become a matter of what is best for your needs and not the center of your existence. Having a social life (do not confound with Facebook though) will also help keeping or even improving your soft skills. If you know how to get your colleagues to agree to the best (not necessarily your) solution can be worth more than knowing hundreds of programming languages. Use your brain Do not write me a letter in 10 years telling me that I messed up your life. If you are happy with a totally different strategy or find out becoming a farmer or president of the USA is worth it spending the rest of your time: do it.
Vash
I suggest becoming a member of sites like http://www.topcoder.com/ or http://train.usaco.org/usacogate, where you can step by step learn and solve algorithmic problems. For example, completing Usacogate training won't make you a computer science professional, but it gives you tons of skill for tackling many real-life problems. It teaches you testing and requires you to provide efficient solutions. Yet another option to gain more experience is to learn a language of a different paradigm. For example, Haskell is a functional programming language. Learning it can help you approach problems from a different point of view even in other languages. For example, Python can be programmed in a very functional style.
Timo
Contrary to some of the answers, experience is not the only requirement to becoming an "expert". I think most people in every industry (not just programming) do not become expert in their field. They become competent and efficient, but they do not become anywhere near as good as they could be. The reason is that experience is not enough. You need expert advice. You need to learn how to do things from someone who is an expert. Fortunately for us, there are many resources for programmers to become expert. Probably the best one is books. Another outstanding resource is programmers.StackExchange. Spend most of your time writing code, but also spend some of it reading and integrating the knowledge from books like Clean Code http://rads.stackoverflow.com/amzn/click/0132350882. You can find the best books by analyzing the reviews on Amazon, checking this site, and Stack Overflow. If you invest enough time to learn and use the information in 2 or 3 books per year, it will greatly increase your skill. Also, figure out a way to record and remind yourself of everything that you learn. Otherwise it will be difficult to really know and use the information. Pay attention to the topics that expert programmers are interested in: design patterns, unit testing, career choice, etc. Look at the world (or at least your job) from the perspective of an expert programmer. When you are given a task to code, stop and think about it for a little while. Ask yourself some questions. What have I learned that can help me? What are the risks? What is the best approach? What are some different algorithms I can use? How much time will it take for the program to execute? What is likely to be the CPU bottleneck? What functionality could change or be added? Hope this helps.
B Seven
Related Q & A:
- How to return a value from .ashx file to javascript in a variable?Best solution by forums.asp.net
- How do I remove a site from IIS7 using JavaScript?Best solution by Server Fault
- How to create deep object with dynamic name in Javascript?Best solution by Stack Overflow
- How to become an expert orator?Best solution by artofmanliness.com
- Is Through The Fire And The Flames it possible to become an expert on Guitar hero 3?Best solution by Yahoo! Answers
Just Added Q & A:
- How many active mobile subscribers are there in China?Best solution by Quora
- How to find the right vacation?Best solution by bookit.com
- How To Make Your Own Primer?Best solution by thekrazycouponlady.com
- How do you get the domain & range?Best solution by ChaCha
- How do you open pop up blockers?Best solution by Yahoo! Answers
For every problem there is a solution! Proved by Solucija.
-
Got an issue and looking for advice?
-
Ask Solucija to search every corner of the Web for help.
-
Get workable solutions and helpful tips in a moment.
Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.