I have been learning programming properly for 2.5 years now (I had a few brief stints before that, separated by years, but 2.5 years ago is when i really started learning programming with the aim of making a living out of it). And I have been working as a web developer for a little more than 2 years. Over these two years, I have learnt a lot, I have grown a lot. And a lot of what I know and have learnt is because of the people I met in open source communities. There are so many of them, so, so many, some gave me some very important insights in the very brief encounter I had with them, others have guided me throughout these two years, very much like mentors (would specially like to mention Matthew Machuga(https://twitter.com/machuga) and ShawnMcCool(https://twitter.com/ShawnMcCool) over here). Then there have been people (most prominent: Taylor Otwell(https://twitter.com/taylorotwell)) whose works I consider a piece of art, and studying those works has given me a lot of ideas to improve myself as a developer. All of these people, and many more, who go unnamed deserve the credit for me being good enough to consider myself a “good” programmer.
I have developed mostly in PHP and JS till now. Over these two years, I have picked up several other languages(ruby, python, node, java, scala) , have explored their ecosystems, and made some learning toy projects and libraries with them. Exploring other languages and technologies has also made me realize what all php lacks. And well, there is a lot that it lacks. Those things have been pointed out a lot in several other blogs, so i am not going to go over them. But for me, its now time to explore, to become as good at several other techs as I am with PHP. And for this very purpose, I have decided to stop taking any more PHP projects professionally. I will continue to work on open source projects, mainly Laravel(http://laravel.com/) and several other things that I want to develop for PHP ecosystem. But I’d be saying no to any PHP work that comes my way for a decent amount of time. In other words, I am taking a break from php.
This is going to pose several problems for me, as PHP used to be, and is, my USP. Sure I can pull off JS with as much potency as I pull off PHP, but the circles I move in don’t know as much about it. And my contributions to JS open source are a fraction to what I have done in PHP. And well, my ruby, python, scala, java visibility is non existent. So how do I plan to switch from PHP ?
I currently have two PHP + JS projects that I am involved in. These pay well enough to let me lead a comfortable lifestyle. And both of these have several critical areas that I need to deal with before I can even think of moving on from them. So these would be paying my bills for several months to come. For the time being I am gonna network and promote myself as a JS(client side and node developer) , and get proficient in python and its tools in a month or so, so that I have a server-side language i can work in and which has a decent market. I am also planning to start contributing in JS and python open source projects in a few months. Along with this, I am learning scala and java side by side, and also looking into android development. The main reasons for these are given below:
Scala: Because I want to learn a language that does concurrency well, is compiled (several times the performance) and has a large ecosystem (scala can leverage all of java ecosystem). I plan to switch to scala as my primary server-side and systems programming language in time.
Java: Because of the ecosystem, getting familiar with which would pay off in my scala-foo. And because of android.
Android: This is where I am really interested. Computers, and how people interact with them is changing. And android is the open source solution that has the potential to be fucking everywhere. I have seen cash registers operating on android, hardware devices in factories and warehouses are using it, it can probably be used on so many personal household devices. In my opinion, the whole touch interface thingy is much more intuitive to your everyday users than the keyboard and mouse and whatever. This is something that I as a developer had forgotten, and have now been noticing and remembering again. I want to study linux driver development, learn how to make a piece of hardware interact with an operating system in a flawless manner, develop android drivers for different types of devices, and develop smooth, intuitive UIs for people to interact with those devices via their android phone or tablet.
On an ending note. I don’t have anything against PHP. It allowed me to learn the ropes of the industry and the business, and enabled me to earn enough to have a decent lifestyle. PHP to me was like that first girlfriend you have that teaches you everything you need to know about girls. But for me, its time to move on, and stay “friends” with PHP … heh. Probably when I am capable enough, I would start contributing to PHP itself, and help make it a better language, but right now, I need to “start seeing other languages” 🙂