As I have mentioned in the past, corporate developers frustrate me greatly. I have started to learn a bit about why we have to put up with their idiotic ways, so let me see if I can enlighten myself and possibly some others. My employer has a large set of Lotus Notes developers that are still actively developing new Notes applications. However, my employer is now seeing (corporately) that Notes is not very robust and begins to break down at X number of users. They have decided that it would be better for larger projects to use J2EE so some of those Notes developers are going to have to learn Java and how to apply Java in a web environment. So, I would like to answer the "why build tools that create pretty Struts pictures" question.
At my company there are a large number of developers who are not geeks. They don't go home at night and sit down at their computer and develop new tools or work on open source projects. I would be willing to be they don't even go home and sit down in front of a computer. Their job is left at work. Any learning they need to do will be done at work, on the employer's dime. This means that the company must act in some very "ungeeky" ways.
I hate JBuilder. I don't like to be forced to use a mouse to get to certain functionality. I don't like slow development environments. I REALLY don't like licenses. And to top it off, I don't like being forced to click check boxes to create getters and setters when ALT+INSERT, UP, UP, ENTER, SHIT+DOWN (for each property), ENTER will do. Hell, it took me longer to type out how to do it, than to actually do the action. *side note* Is it possible that JBuilder's gui was built to make it is easier to explain how to do things? */side note*
My employer must standardize their tools, and everyone must use them. That way, when you work on one team and then go to another, you will know which tool to use. There will not be any bickering on which tool is better, there will not be a learning curve to get to know the new team's pet tool. The company can order a single product in bulk, and possibly work a deal that will bring the price down substantially and every developer will use it. This saves money and eases transition in several ways.
But it also begs the question, what would happen if the company put the responsibilty on the developers to bring their own tools? Corporate provides hardware (but now the argument moves to Mac vs Linux vs Windows), network connectivity, telephone and a desk and it is up to the developer to know how to use the tool. By forcing the developers to bring their own tools, train on their own time, and be smart about writing code, the company will significatly reduce the workforce. Does this increase productivity? Would this force the company to look twice at a proposed new "application"?
I work for a company that doesn't care about ROI or the bottom line, so this is a "fantasy" arguement for me. There is no way my employer will ever force developers to actually be geeks. There is no way my employer will ever purchase IDEA for me or my team. I have made significant change by introducing CVS and some other Open Source tools. Struts was already starting to take hold, I just kicked it up a notch by singing its praises to anyone who would listen.
New technology in big companies requires baby steps. Big companies and small development houses are very different animals and will never execute change in the same way. Big companies avoid change at all costs where small companies embrace change if it will give them an edge. Humorously, if a small company stays good at what they are doing, at some point in time, they become a big company. When that happens, it becomes less important what technology they use and more important about how flexible their workforce becomes (Microsoft being the perfect example).
I try to treat my team as a small company inside this monster company so that we can stay flexible. But reality is, corporate will send more developers to me as my project becomes more important. And the more developers I have to deal with, the more important it will be to have a standard IDE and standard work environment. Which brings us back to my side note. Corporate must be able to easily train developers on new technologies. Which again points to standard tools, "pretty Struts pictures" and seldom changing ideologies.
Chaos doesn't scale to the enterprise level.
Comments