Hello all,

I am an apprentice, 19. I joined this software developer apprenticeship to leave college as it was not particularly great for my mental health, and programming is the only thing I can do reasonably well.

The company that I find myself in is a strange one. It has about twenty or so employees, but we all instructed to operate as if we are a giant company—our sales person, for example, will tell our clients that we have hundreds.

The development team is a collection of software developers. There is no database administrator, network administrator, software engineer (not in name only), test engineer, requirements engineer, etc. There are just several software developers. Of these developers, one has left by now. When he joined, he was promised to be working on a new system: he left after spending seven years on an old system. A new developer has just arrived to replace him: he was told he would be working with Raspberry Pis; it was interesting to see his face after we informed him that we do not use Raspberry Pis.

The codebase is fourty-years-old and written in Delphi, which is some kind of cousin of pascal, from what I understand. Code is not peer-reviewed. Instead, it is self-reviewed, and you just push whatever changes you make. The code is very much spaghetti, and there is a whole array of bugs that, at least to me, look impossible to track down and fix. I have a bug assigned to me at the moment were someone appears somewhere when they are not supposed to. After asking seniors about this, I learn of this huge checking mechanism and all of its flaws: a huge, flawed checking mechanism... for toggling a single boolean value. This isn't a complicated boolean value, by the way, this is just a value to say whether someone has clocked in or clocked out of a building, via a button.

In terms of versioning, we have several releases, and we often do development work in older releases (or new releases and then write them into older releases) because our clients are larger than us and often refuse to upgrade, and the boss does not want to lose any contracts. We also essentially have multiple master branches.

With the lack of testers, bizarre version control, what appears to be unfiffled promises to staff, etc. I must ask that, since this is my first gig as a software developer, is any of this normal?

  • 2
    Mostly normal. Not normal as in its everywhere like this but normal as in it is quite often. The o ly thing i never heard of is the advice to pretend there would be hundrets of emplyees xD
  • 2
    Multiple actively supported versions isn't normal for the common software company. Supporting an old version costs resources that can't be used towards advancing the current version.

    If customers really dislike changes, i would suggest not introducing unneccessary changes. Concentrate on maintenance and self-contained features that can be configured away if not wanted by some customer.

    Also not wanting updates often comes down to updates costing money. It sounds like there are support contracts - so make them include the updates. Even providing the updates for free to customers having a support contract can be cheaper than having to maintain multiple versions.

    The other main reason for refusing updates is backwards compatibility. If that is the case, go all-in Microsoft and focus on not breaking existing stuff interacting with your software.
  • 0
    Delphi language is only 28 years old, though? Since the first release of Borland Delphi.
Add Comment