I’m a front-end dev!!
This post could also be entitled/summarised with “rant, rant, rant”, but for my own sake, I’ll make the effort of explaining what’s behind it.
My full time job title is “Front-end developer”. To anyone outside the web industry, it either means “err…. no idea”, or “a dude that makes websites”. To the initiated and (most) of my coworkers and industry pals, it means a whole lot more: I’m an expert in HTML, CSS, javascript (front-end technologies)…
<rant>
Now, this could well stop here if I were to be very stubborn (and being French, I know a thing or two about stubbornness, trust me!), but I fortunately have a few other skills in my toolbox that actually help me do a whole lot more than JUST front-end code. That’s why I’m not just “a dude that makes websites”, but I’m also someone who knows about technologies and procedures of how to host these websites, their architecture, the communication protocols involved and what’s doable and acceptable both in a production and a development environment. This later one is the source of my rant.
You see, our applications at work run on tomcat, because they are written in java. While I have some issues with accepting this in the first place, it’s not the point of this post, is totally subjective, and is being debated all over the web. The problem is that when you build a website that intends to be highly reactive, as we do, then you also need to cater for the needs of front-end developers a lot more than a website rendering server-side composed JSP pages. Why? Simply because a lot of development effort is also going into front-end code.
As many of you experienced developers know, when you make changes to your java classes, you need to recompile your application, and then deploy it again by dropping a built war file in your tomcat container, or have the build process explode that file directly in a folder that is the docBase of your context for this web application. Sadly, this means that what you actually see when you browse the pages of your website comes from that later location, and not from the source files you edit.
Now this is fine in production because you (hopefully) don’t deploy there a new application every minute bearing some minor changes. But if you do a lot of front-end code in development, you have to constantly rebuild and deploy your application which imposes a lot of overhead and is totally impractical when all you want is clear your browser cache and reload the page.
Ok, I see you coming: why don’t you use this or that IDE? It does *everything* for you! Right. Let me tell you why. I’ve been doing my work in an editor that I like, that I know, that I trust and that will not get in my way for most of the time. I simply can’t stand having to develop in a specific IDE *just* because everyone else is doing it, because the java dev is using this one for his own code, and because without it the application might not build properly. There are tools to build java applications like maven and ant, and they usually run fine. Just imposing an IDE on your developers for building an application is ridiculously stupid and short sighted. Don’t laugh, I’ve even seen so called “java devs” developing an application so it could *only* run in netbeans and the install guide started with “download netbeans”. No thanks! I am however aware that IDEs help a lot in compilation and takes care of the heavy lifting of linking packages and classes, which is fine, because it’s been created exactly for that! For front-end code? Not so much.
So after being told at work to “deal with it” by one of the java developers behind the new application we now all work on, I tried! I wasted (there’s no other word) 3 full days in trying to configure the application and all the build tools required to obtain a runnable artifact on my machine, and I managed to get it to run. (But remember: I’m still a front-end dev!) I’ve now done 3 days of java builds with maven and deployments in tomcat.
Then I wanted to work on my front-end code, only to discover (well, I knew that before, but I somewhat hoped this would have been taken care of in this application) that every time I wanted to see changes reflected in my browser, I had to rebuild the application and redeploy it. For some reason, this takes 2 full minutes… Can anyone justify 2 minutes for every front-end code edition and a page refresh? I don’t think so.
I’m fine with setting up an environment and following instructions for things I don’t know, and as a matter of fact I do it regularly as I have to know how to install simple web servers for my usual work, be it apache with php or ruby on rails with webrick and passenger. But just dumping front-end devs in a java dark hole with no more help than “deal with it” is incredibly unfair and unprofessional.
I’m a front-end developer.
So please please please, java developers working in collaboration with front-end developers building rich internet applications or any other site requiring a fair deal of front-end code: partner with them to find solutions to this development environment setup nightmare! It will make everyone happier!!
</rant>
comments
IvanDM Tue, 02 Aug 2011 - 00:55
How couldn't I just subscribe to what you just said? It's a massive, disgraceful pain in the ass.
Matt Sun, 16 Oct 2011 - 13:44
yepee!