Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I am currently a Junior PHP developer and I really LOVE it, I love internet from

ID: 651404 • Letter: I

Question

I am currently a Junior PHP developer and I really LOVE it, I love internet from first time I got into it, I always loved smartly-created websites, always was wondering how it all works, always admired websites with good design and rich functionality, and finally I am creating web-sites on my own and it feels really great.
My goals are to become expert web-developer (aiming for creating websites for small and medium business, not enterprise-sized systems), to have a great full-time job, to do freelance and to create my own startup in future.

General question: What do I do to be an expert, professional and demanded web-programmer?

More concrete questions:
1). How do I choose languages and technologies needed? I know that every web-developer must know HTML+CSS+JS+AJAX+JQuery, I am doing some design aswell cause I like it and I need it for freelance also. But what about backend languages? Currently I picked PHP cause it's most demanded in my area and most of web uses it, but what would happen in future? Say, in 3 years, I am good at PHP and PHP frameworks by than, but what if some other languages get most popular? Do I switch to them? I know that good programmer is not about languages and frameworks but about ability to learn and to aim the goals, but still I think that learning frameworks for some language can take quite some time. Am I wrong?

2). In general, what are basic guidelines to be expert web-developer? What are most important things I should focus on?

Thank you!

Explanation / Answer

There is no substitute for experience

The only way to become great at something is to practice it. Not just do it, but consciously try to get better each and every day. One rule of thumb is that it takes 10,000 hours of practice to master anything. Be aware that there is a huge difference between doing 10,000 hours of something, and doing one hour of something 10,000 times.

So, start creating websites. They don't have to be public -- create them for your own use, and simply for the experience of creating them. If you are able to get a job where you create web sites, even if it's an entry level job, you'll learn a lot.

Surround yourself with those who are smarter than you.

Constantly strive to find people who are smarter than you, and learn from this. Perhaps this means to take a job rather than do freelance. You can also join local user groups related to technologies.

Read and Practice

Find some magazines and blogs and read them regularly. From that you will learn what technologies are hot, and which technologies are used to solve which problems. If you are reading a book, work through all of the examples. Don't just read them and think "yeah, that makes sense". Work through every single exercise in the book.

The best education I ever had was to implement every single algorithm in Software Tools by Kernighan and Plauger. While not web related (even in the slightest), that book is well worth reading.

Teach

For me, the best way to learn is to teach something to somebody else. In order to teach it will require you to deeply understand what it is you are teaching. So, set out to create a tutorial about a subject. It doesn't matter if anybody reads it, it is the act of creating it that is important (though you'll need validation that what you do is useful).

You can also teach simply by answering questions on the various stack exchange sites. Find questions that you understand, and try to write the very best answer possible. Research it, give example code, and explain your code. It doesn't have to just be a question without answers or questions that haven't been accepted. It can be any question that you think you can answer. Don't do it for the rep points, do it as an exercise.

Pick a technology that fascinates you

The best way to learn (and thus the best way to improve your skills) is to learn about something that fascinates you. Don't worry about picking the "right" technology right now. Instead, find something that fascinates you. Look at Dojo, or HTML5, or CSS, or the pieces that make up AJAX. Find the one that most fascinates you and dive deeply into understanding it.