I am a freelance web developer and I am pretty serious on being one of the best in what I do. I would never say I am one of the best, but I try and think I am getting quite good.
In the past I have worked with different technologies, even with Wordpress. I am sure you have heard about developers that are “language agnostics”. That means you do not specialize on only one language or technology but you would choose “the best tool for the job”. I think it is great to be “language agnostic” and familiar with a lot of different languages, but since I am working so much with Meteor I believe there is so much more than just the programming language or the knowledge of the technology. That it is why it is so hard for me to believe it is even possible to be language agnostic AND to be really good. Why? Let’s have a look what it means to be good in a web development technology (at least in my opinion).
At first you have to know a lot about the language of your choice. Everyone knows what it means to learn a foreign language and to speak it fluently. With programming languages it is not much else than with spoken languages because you have a vocabulary and of course grammar (syntax). But knowing a language is not enough if you want to do web development because there are a lot of problems that you will face. Luckily most of the problems are already solved. Only with a language you would need to solve each problem again and again. This is where frameworks help you and they solve common problems for you, so that you can focus on the individual logic/problems of your current project. The framework itself adds up more stuff you have to know and how you have to use the framework. All of this is pretty obvious and natural, but knowing about the technology is just the tip of the iceberg.
Knowing your language of choice is the most basic thing of web development. If you know the framework of your choice you will be even faster. In my opinion a good framework tries to do basic things and those really good (That’s what e.g. node.js and Meteor are doing). If a framework would solve a lot of problems it could not be flexible and since web development is a really complicated and spacious thing to do with an incredible amount of possibilities, flexibility is key. Also it is not that easy to even solve the most basic things really good. Now if a framework does basic stuff, it also does not solve every problem and this is where packages/modules/libraries are coming into play. Packages normally solve one very special and small problem. This enables you to pick from a variety of packages to combine them in order to solve a much bigger problem. This way you extend your framework of choice even more and you become even more productive.
This is one of the most important parts why in my opinion it is a very good thing to specialize. If you pick a package and you want to use it, you have to know a few things. Some are obvious, like how the code is structured and do you understand it in order to improve it if necessary or fix bugs yourself. But choosing a package means more than that. You want to use packages that are well maintained and that not only today, but also in the future, because your framework evolves and the packages you use have to keep up to date, too.
For example, one of the most important packages for Meteor is the Iron-Router and every Meteor developer knows and uses this package. Now Meteor updated to version 0.8.0 and there are some changes that affects the Iron-Router, too. It is really important to know in advance that the maintainers are reliable and update their packages fast. Because you can only update to new versions of meteor as fast as the slowest, updated package you are using in your projects.
How do you know which package maintainers are reliable and fast? You have to know them. You have to know every person that maintains a package you use. You have to know what they are doing for a living. Are they just testing your framework and release a package that happens to be really useful? Maybe they got a well paid job and are doing PHP again. So people that are really into the technology and also financially dependent of it should be quite reliable. But you need to know that.
Especially if you are working with a new framework or technology you should know the roadmap really well. This way you can foresee what changes are coming and where you will most likely have to fix your code, which means expenditure for you as a freelancer. But more importantly you will get a feeling when you can expect that there will not be that much code changes be necessary anymore. Since Meteor version 0.8.0 you can be pretty sure now, that there will not be major code changes necessary anymore since the blaze engine was the last big change that affects your codebase (and the packages you use).
Imagine what you would have to know technically, how much people of the community you have to know and the goings on of the most current developments of your framework if you choose to be good at two, three or even more frameworks in order to create as much value for your clients as possible. As a freelancer it is really much more fun if you can connect to the community, too. If there are problems you can solve them easily because you really know what you are doing or where to go in order to solve them.
Last but not least, for me as a freelance web developer it is way easier to market what I do. I now have a really clear message: “I do web development with Meteor.js!”
Du willst wissen wenn es etwas Neues gibt?
Dann melde dich kurz bei meinem Newsletter an!