From a personal perspective the first thing I'd fix is replacing XP
with Ubuntu -- the lack of responsiveness and decent CLI tools tends to
drive me crazy (no, Cygwin is not a proper UNIX environment).
But let's think more practical. Number one I would sell is the move from
CVS to SVN. CVS is just too scary due to it's lack of atomic commits.
The consistent revision number across the repository is another nice
feature in SVN. While I agree with other posters that there are
technically superior options, I wouldn't even propose them based on the
description of the organizational culture. SVN makes me swear sometimes,
but it is leagues better than CVS. Setting up an SVN/trac combo is
pretty straightforward, although it of course means someone has to deal
with security patches and backups.
Talking about trac: I really miss an issue tracker in your list. JIRA is
one option, I personally find trac sufficient for most projects. From
what I read it might not be for your project, but it would certainly be
a step forward. And it kind of integrates with Eclipse if you use Mylyn
(half the time it just opens the web browser inside Eclipse, but that's
not too bad). Another nice thing about trac is that it adds value by
just being there. Even if you don't use the tickets or the wiki, it
already allows browsing the code, following the commit messages and even
full-text search on them (that of course assumes sensible commit
messages are there to begin with).
If you can convince people to use SVN instead of CVS I'd set up an
SVN/trac box and then quietly start using that myself. I would not
directly introduce all of trac's features since that might well be too
much change at once. Sell SVN to the business by making a case how
expensive a broken commit in CVS can be. Even assuming daily backups on
the CVS server it can easily stop development for 2 days (restore old
state, try to figure out what had been done since then, repeat those
things).
The other thing you can do is to introduce a continuous integration
server (I strongly recommend Hudson). That reinforces the unit testing
since they will run regularly. It is also something people can ignore as
long as you don't force them, which means you can convert some less
conservative colleagues first, and then try to change policy once there
is enough momentum. There is also value to be added if you can automate
deployment (at least to the test environments). All this doesn't require
attention by anyone else, which means it is a good submarine project.
Another thing I would personally really like to change is replacing Ant
with Maven. But that is non-trivial, I'd certainly tackle the VCS and CI
parts first.
A potentially easy, but not all that important change: replace FileZilla
with WinSCP (and thus FTP with SCP/SFTP). One less server component,
potentially better ease of use on the client (assuming keys are used).
In general: I try to tackle the things that I can change for myself
without affecting others first (the CVS->SVN change being the exception
here). Afterwards I try to lead by example, not pushing anyone much.
At my workplace I have set up Hudson very early on, I started new
projects on Maven (we have enough freedom for that), later added
Artifactory. All that means I wear the sysadmin hat quite often (despite
this not being part of my job description), but it pays off in the
longer term. About a year later most of the teams are using that
infrastructure now. Of course my environment is much less conservative:
we are developing products for scientist at a university, some
colleagues are pretty conservative, but since we have lots of
independent small projects things can move at varying speeds.
Peter
On 23/04/10 22:43, Vince O'Sullivan wrote:
My current and ongoing role involves developing web based application
for internal corporate use. The majority of applications are one-man
end-to-end developments though some may have two or (for the really
big stuff) three people involved. The people that I work with are
good developers but have hideously outdated working practices (I still
get handed Java classes with 300+ line methods, for instance). I want
to clean the place up, starting with the development tools. Listed
below are some of the tools that we currently use for software
development:
Operating System:
Developing on Windows XP on Dell hardware (laptops and desktops).
Deploying to Web app servers on Unix boxes.
No option to change this and anyway, it's the least of my problems.
Archiving and Version Control:
CVS - Getting everyone to use it was a key achievement for me in
2008.
I think I'd be lynched if I now said "Actually, I think we should
be using git/Mercurial/Subversion/etc.".
CVS has the advantage of being centrally hosted by the company.
I'm not sure I want the extra
overhead of running my own alternative but maybe.
Build Tool:
Ant - Occasionally hand built but usually Eclipse generated.
Automated End-to-End Builds:
I can do them (in a couple of stages), others just export a war
file from eclipse and load it onto the server and...
IDE:
Eclipse - I use the latest development build but most here use
whatever the latest company approved standard release was when they
received their current machine.
Language:
Java: I've dabbled in Scala and Groovy. Several other people here
are aware non-Java languages (other than basic) exist.
Currently version 1.5. I got 1.6 loaded onto the server box
last year but we haven't developed to it yet.
I cannot hand off projects in other languages to the
maintenance groups.
Testing:
JUnit: I use it. The others are suitably impressed but not
convinced it's worth "coding everything twice".
JMock: I use and love it but until the others even start using
JUnit, there's no sense in pushing it.
Web Stuff:
HTML and CSS: Hand made (by software developers like me) with many
bastardised cut and paste inclusions.
Followed with long sessions of UA where they kick back all the
stuff that looks like it was designed by
a five-year-old in the 1990s.
Web Hosting:
Internally on a corporately maintained and backed up Unix box
running Tomcat 6.
More Web Stuff:
An unholy mixture of JSP and JSF, bulked out with Primefaces for
some extra glitzy bling.
Database:
Oracle: Yay, we finally got the last developer to stop using MS
Access last year (by banning it)!
(That guy only writes Excel VBA so he's out of the loop anyway.)
It's a corporate database and very well maintained though I haven't
figured out what planet the DBAs are from.
Other stuff:
FileZilla, PuTTY, Beyond Compare, SQL Developer, TortoiseCVS....
the list goes on.
So. This lots does work (more or less) and (I don't think) that it's
as bad as it sounds, but it really isn't a good situation. What I'm
looking for is ideas on how to clean all this development environment
up. It's a mess of good ideas that are currently badly integrated.
There are just too many different and independent components to this
environment to persuade people that adopting it is progress, and the
learning curve is endless.
I'm looking for -sensible - ideas on how to clean all this up. What
technologies to drop or swap and how best to create a complete
integrated development environment (in the non-eclipse/NetBeans
sense).
Any suggestions welcome.
--
You received this message because you are subscribed to the Google Groups "The Java
Posse" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/javaposse?hl=en.