0

I work in deep learning and image processing, but I have skills in software development, information security and IT. My company seems hell-bent on doing everything wrong in these three domains, and it impacts my work.

On the development side, all production code is hacked together in the quickest and dirtiest way possible, with zero comments and uninformative names, and sometimes not even checked into a central repository. I have a hard time understanding what happens in it, and even with the code's author's help (most of it is from a senior researcher), changing anything requires hours and hours of debugging and retries.

Security is non-existent. All machines are required to not have strong authentication (same username and password everywhere), and changing the username would break some of the internal tools that everyone uses. Nobody updates anything by fear of breaking something; as a result, most computers still run Windows 7 or out-of-date Linux systems. This is more of a problem for the company long-term than for me.

IT isn't managed by anyone, except an employee who explicitly doesn't want this responsibility and doesn't have enough time for it. They have been asking the CEO to hire someone for this task for a long time, in vain. Since I'm somewhat competent in this, I accepted to occasionally help with it, as long as it doesn't impact my job.

The more senior engineers are aware of all that, but since the CEO refuses to hire someone to manage IT or improve the code full-time, we developers and researchers have to struggle by ourselves when something breaks. The CEO doesn't understand or care about development and IT, and only rewards new developments.

I like what I do here, and I get good experience in deep learning despite the lack of organization. The company is reasonably successful (in a niche market). But I spend more time struggling with unmaintainable code than actually doing my research-and-development job. I would ideally like to re-write the software I depend on to be more robust, but I don't want to spend all my time doing someone else's job.

Is there anything I should do, apart from looking for other positions and internally advocating for change?

9
  • 2
    How does it impact your work?
    – Helena
    Oct 4, 2020 at 11:55
  • Change one interface at a time and only in things you do, so you make your "work bubble" have the features you need. As for system-wide requirements, well, there's nothing you can do about that, but you can change your own immediate surroundings. Oct 4, 2020 at 12:31
  • Two words code reviews. Oct 4, 2020 at 13:02
  • @Helena I spend more time working around broken, undocumented tools and unreadable code than doing my research and development job.
    – MKyu
    Oct 4, 2020 at 13:34
  • @CaptainEmacs That has been my plan, but it's getting very frustrating. I don't remember the last time my projects haven't been blocked by broken code from someone else.
    – MKyu
    Oct 4, 2020 at 13:35

4 Answers 4

7

Welcome to life as a developer. You will encounter these situations somewhat often.

The best thing to do is keep campaigning for changes in practices (probably starting with security) and make sure that you leave the place better than when you arrived.

As for leaving the place, give it a bit of time, maybe things will clear up?

But I would be brushing off my CV if I wasn't able to make any headway.

1
  • There is so much to add to this answer as well though. I mean, OP's attitude reminds me of devs just out of school or places with a really strong engineer culture. The post makes it seem like this person is accepting responsibilities that "aren't their job" which means it's 100% their job now. They're also talking about these things as if everyone knows what maintainable, scalable, production worth code looks like. From the sounds of it, they're working with researchers. Putting together things that work is generally their business, not what the OP thinks it is.
    – Malisbad
    Oct 5, 2020 at 3:52
6

Make a business case for it.

The CEO might not understand IT, but he probably understands money. If dealing with broken code costs you half your time, then that means it’s costing the company half your salary in dollars, plus similar proportions for each additional employee affected. Take those numbers, do the multiplication, and arrive at a dollar value- that’s how much this is costing the company. Hiring IT professionals to handle this is actually a cost-saving measure, since it will reduce the time the other employees spend on tasks outside of their roles.

Similarly, if there’s a giant security hole, calculate how much money the company stands to lose if it’s exploited, then multiply that by the risk of that occurring. Even if it might not hurt your company directly (e.g. customer data breach), you could still model this by reducing relevant revenue streams by a certain percentage.

2

Look for a better job and hope you find one as long as you are getting paid. Since your company has no security, it’s only a matter of time until your company gets hacked and possibly wiped out in the process. I wouldn’t even bother to try and change anything. That has to come from the CEO.

1

The CEO doesn't understand or care about development and IT, and only rewards new developments.

And

I would ideally like to re-write the software I depend on to be more robust, but I don't want to spend all my time doing someone else's job.

Seem to be the root cause. If no one is responsible, then everyone is responsible. You could start refactoring issues as you encounter them.

I assume that you aren't the one having those issues, another step would be to have meetings, not to blame anyone but to see how much it impact everyone. Once everyone is aware this could be a good first step.

Another good solution is code reviews, that way it will force people to write readable code or risk having their work blocked or lose too much time answering questions about 'basic' things.

You could also document a real case or even do a live demonstration to the CEO. In order to highlight that bad coding practive are actually stifling innovation. And to make him understand that this will keep impeding things more and more in the long run.

I feel like I am providing generic answers that were already provided thousands of time on this site...

4
  • 1
    These generic answers seem hard to apply in my case, since no one else seems equipped to code correctly. There is one overbooked professional developer, all the others are researchers with no software development background, and they don't even seem to know what maintainable code looks like. I'm way too junior to start reviewing and rejecting senior engineers' commits. They all have these issues, but seem to take them as a fact of life because they don't know a better way... As for the CEO, they are not exactly known for changing their mind easily.
    – MKyu
    Oct 4, 2020 at 13:30
  • @MKyu Can you do demonstration to a subset or most other people how things can be better? If they don't have the time to see how to improve you may have to be the one to show them how to be better. For code you can either improve something and show before and after or take code from the libraries that you use and show them how their ways are better (assuming you are using open source libs such as TF or pytorch). If no on knows a way forward, no one will progress.
    – Al rl
    Oct 4, 2020 at 13:49
  • 1
    When everybody is responsible nobody is responsible, but it doesn’t work the other way round.
    – gnasher729
    Oct 4, 2020 at 16:19
  • @gnasher729 absolutely it does.People must put in the works because no one else will solve this problem. It's not an official resposibility, if this is what you want to argue about.
    – Al rl
    Oct 4, 2020 at 16:38

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .