Tuesday, July 24, 2018

Expiry date on a developer

Expiry date on a developer



Im thinking a lot about what should I learn next. Its never easy. There are so many in technology and you have to know which one is gonna be popular and useful. It also raise the question - the language or the framework youre working with at the moment it whether or not useful.

I was learning Flex and Air couple of years ago. I really loved it. ActionScript version 3 is a great language, having many cool properties. The Flex library is very wel build up and its just fun to create a quick application and see your result almost immediately. However my licence was expired (that Ive got on a conference for free) and from then I couldnt really use it. There is the SDK itself which is a full fledged compiler that can do the magic - however having no IDE its not that easy. So I just gave up and never used again. At the same time I kinda had to stop supporting my apps that was using Flex or AS3. Thats just weird, like the hip girlfriend who left you.

And with Flex I had luck. I dont have that much luck with Microsoft development tools, for example with Visual Studio, or MSSQL. Or I could mention other Adobe products, such as Fireworks or Illustrator or the Flash Professional IDE. Im sure there are hundreds of other proprietary editors or tools I wont ever try. Only because its just too expensive and smells like a forbidden cult.

I dont like it at all. Its a limitation for me - and maybe for the particular technology as well. I know enterprise software ofter have their enterprise customer. So they also can pay the bills and support further development. But it wont go viral. Millions of people will miss trying it out and playing with it, evaluating it in professional environments. And thats only the level of individuals. There are the ecosystem level. A technology needs players who experiment on the tool. They break the ice and shows possible ways of evolution. A project needs documenters - like bloggers, knowledge management systems, cookbooks and such. They need plugin and extension developer communities to enrich their system.

There are technologies that are optional. For example PHPStorm is a proprietary and not too cheap code editor. In my humble opinion that its the single best existing PHP/JavaScript/HML/CSS editor around nowadays. But not the only code editor. There is Netbeans, Sublime, VIM or Eclipse. Which means you can use them, you already got used to to the basic experience and methodology. You dont have to evaluate it - editor is a must have tool. But seeing PHPStorm in trial period you can decide if it provides you the better experience and professional application for your projects.
But for many other technologies there are simply no evaluation. You either already know you need it or you leave it.

And that lead to the question of developer expiration. Its a well known (or should be) fact that software developer companies shouldnt hire developers who know one language very only. Thats the most dangerous knowledge ever. Great developers know development. And when you know development you will use languages and frameworks as tool.

Im working with Drupal in the last 4 years and now I almost only can see arrays. Array of forms, menu items, entities and rules and service resources. Its like vomiting into a huge warm bathroom. It fits well but doesnt feel ok. But seriously, what happens when Drupal goes to holiday? You stand there, missing tons of hooks and arrays and then you feel expired. (Unless youre one of those lucky ones who can edit core during work time.)

Dont get me wrong, Im sure thats more or less the case with other technologies. Like JSP, Spring and ASP and RoR. To be honest Im hailing the proliferation of libraries but fearing them the same time. A library means you have to learn the library and its special structure. Ive never met a library that was able to teach you programming. They mostly enforce you to use their system, their API and their methodology. It doesnt matter how good it is. You learn the library, again.

So my theoretical question is - if libraries are useless to tech you programming - how good programming languages and simple pure coding challenges are to make you work effectively on a project? Because like it or not most cases you use a library. Let it be a web framework, a cms library, a ui library, a service library or an authentication library. You really dont want to reinvent the wheel all the time.

I tell you a pretty typical edge case. You may remember I was playing with CoffeeScript this week. Its a great tool and I like what its doing with JS. Its pretty, effective and a sustainable technology (seems still). But then if we use it on a project all other devs has to learn it as well (imho thats a big plus all the time as a dev - for a manager thats a disaster). And then what happens when there is a better one? Or a limitation will be discovered? Abstraction layers are just abstraction layers - they wont be ever as flexible as native languages.

If you think rationally you already know the solution to extend your expiry date. Libraries are gonna be for us. And they will be different each time. However one thing is redundant. And that is patterns. Models, events, views, services, components, extensions, loaders, apis and such. Its just a dressed up variation of some patterns all the time. If you see the right amount of libraries you will adopt to the next one pretty soon. So as a general lesson - learn the methodology, rather than the interfaces.

---

Peter

go to link download