Are You a Software Developer or a Dabbler

Tools

Tools

When reading blogs you get the impression, that everybody works in high end environments, using the latest greatest distributed version control system. Writing tons of tests, before they even dream about writing actual code and of course the tests a executed by the continuous integration system after every commit, which happens about 30 times per day and developer. But when I look around in the real world, this is not what I see. Instead the way people work on their code like ancient ‘doctors’. Drilling holes in heads in the hope it will reduce the headache of the patient. It probably did. In many cases in a very final way. I urge you: Don’t let that happen to your code (or your career). Practice solid software development. And in order to help you with that I compiled a simple list of things you really really should do. Those are basic practices. If you don’t even adhere to those then I have only two possible explanations: You are not involved in software development at all. Go away, this blog isn’t for you. Or … you are a dabbler.

  • Use a Version Control System (VCS). I am not even going to comment on this one.
  • Commit your changes at least once a day. This does not mean you should commit what ever is on your filesystem at 5pm, but you should break your tasks in so small pieces, that you finish one or two of them on a normal day.
  • Tag or label everything in the VCS you hand out to somebody outside your team (testers, salespersons and of course customers)
  • Have a complete and working build script. This means you can build everything you hand of to the customer by getting the source code out of the VCS and start the script. Necessary adjustments are made in a tiny file which contains settings for the local machine. A well commented template for such a file is in the VCS. And NO, hitting the compile button in your IDE is not the same as a build script.
  • You must have the complete environment necessary to run your application under your control. That means if your application needs a database, you have a database available. One per developer that is, or at least one schema per developer. If you need a queue or ten queues, you have those, again once for every developer. If you have systems that you interface to, that can’t be installed once per developer, you have mocks, stubs or similar available. In the year 2009 a single developer database for 5 developers is no longer acceptable.
  • You have an extensive set of automatic Unit tests. These test should cover at the minimum the main execution paths.
  • Let a Continuous Integration system execute your build script, i.e it compiles your code, executes the automatic tests and builds a setup or jar, or what ever you are deploying.
  • Have a specification of what a piece of software is supposed to do, before you try to write the software. You don’t need a full specification of the complete application upfront. Maybe you have just the first user story for the first feature, or only a test. But you must have something that tells you where to go. And where not to go. Flying blindfolded is not the same as being agile.
  • Adhere to a style guide that describes your naming conventions, indenting and so on. Ideally this gets enforced by the IDE and automatic tests. Fighting about the content of such code conventions is useless. Not having one is dumb. Remember that your tests are code too, so the conventions apply to tests as well.
  • Document how your code is structured. It should at least describe the different layers, and the way two layers may depend on each other, and it should not allow for circular dependencies. These rules as well should be enforced by automatic tests. Even if the language you use doesn’t support packages you should use a similar concept, possibly through naming conventions.

These are my points. What did I miss?

This entry was written by Jens Schauder , posted on Sunday November 01 2009at 10:11 am , filed under Softwaredevelopment and tagged , , , , , , , . Bookmark the permalink . Post a comment below or leave a trackback: Trackback URL.

9 Responses to “Are You a Software Developer or a Dabbler”

  • [...] Dieser Eintrag wurde auf Twitter von Charlie Paule und vivek kushwaha, Gulab Chopra erwähnt. Gulab Chopra sagte: Schauderhaft » Are You a Software Developer or a Dabbler http://bit.ly/1kAT54 [...]

  • Social comments and analytics for this post…

    This post was mentioned on Twitter by jensschauder: New blog post: Are You a Software Developer or a Dabbler http://bit.ly/4FKQm0...

  • Excellent post. I am glad I have found another interesting blog like yours. You have a new reader :)

  • Wow, that is an extremely nice comment. Thank you very much.

  • Eivind Eklund says:

    In my opinion, you missed

    * Using a bug/issue tracking system.
    * Knowing and using a high power editor. If you need to use an IDE due to the language, use this in addition to your IDE.

    Also,I think a couple of your suggestions are very much environment dependent:
    * Tagging everything (depends on the kind of releases)
    * Using a style guide (really small environments – up to three people – can easily get by informally, and the overhead is probably not worth it).

    Committing several times a day is a nice rule of thumb, but it varies. I usually commit several changes per day; but I’ve had changes sit for many months and it has been reasonable.

  • @Elvind
    Thanks for the comment.

    I agree on the bug/issue tracking system. I missed that one.

    I do not agree on the editor thingy. I personally can’t breath without a decent IDE. There was a time when I did everything with emacs. But I really do not care to much what you use to create code. It shouldn’t become a speed limiting factor though.

    Tagging: The name might vary on the envrionment. Maybe you document a version, revision or something, In SVN it is called a tag. The important point is: If somebody comes up and reports a problem with a piece of code or documentation, you must be able to reproduce it.

    Style Guide: I insist. You must have one. On a small team (and often on a large one) it is sufficient to simply agree on ‘we use the sun coding guidelines for java’ or ‘Let’s set the autoformatter on these settings’ You don’t have to write it down, if you team is small.

    Rule of thumb: Probably to every rule, one can construct a situation, where it isn’t feasible. The point is: whenever you find yourself in such an exception it should give you an awkward feeling, because you know: you must move with extra care, and you have to get out of that situation as fast as possible.

  • Desperate Developer says:

    Jens Schauder,
    maybe you are not involved in software development at all.
    If you are involved in a software development you should know that if a project needs 5000 days of work your boss will give you at the most 500 days, so your point are just theory.

    Bye

  • I’m sorry that you are so desperate. But yes, I am involved in software development. And yes if what you write is correct, you or your boss are not behaving very professional.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>