DEV Community

Ben Halpern
Ben Halpern

Posted on

Describe the worst coding culture you've been a part of

There are a lot of ways to have bad culture, and coding is sometimes the least of your concerns here. But in this case I'm interested in the worst coding culture you've been a part of: Where it was really hard to build good software for reasons that were engrained in the company's culture (deadlines, testing practices, vision issues, etc.)

I'm very curious to hear some stories!

Top comments (106)

Collapse
 
ben profile image
Ben Halpern

Collapse
 
rhnonose profile image
Rodrigo Nonose

(Not all from the same company)

  • It was strictly FORBIDDEN to push a branch into the repo (we used git)
  • Every month, commits were "frozen" so the "release team" could make a stable release:
    • That meant up to two days of not being able to make a commit on the repo
    • It was a single code base for the entire company (+40 devs)
  • We had to deploy to production outside of business hours = mandatory weekly unpaid overtime
  • Company owner "didn't believe in automated testing"
  • Company owner took several vacations during the year. We summed up once and it was around 3+ months/year
  • We used raspberry-pi's like devices with a mouse/monitor/keyboard that connected to a remote shared machine to "save resources". Worse work setup ever
  • We were not allowed to eat lunch at the workplace, not in the kitchen, not anywhere else
  • Tasks/Issues were stored in four different places (google docs, jira, mantis and proprietary internal software)
  • Releases were stored in SVN, in a single repo. Cloning it took half a day
  • A "software architect" made reservations for a meeting room for the next 6 months, all day every day, because he was "going to need to have it always ready for him"
Collapse
 
rhymes profile image
rhymes

Wow it looks like hell.

Collapse
 
kellyjandrews profile image
Kelly Andrews

I once had a manager who would ask for your opinion and then tell you why it was wrong and his was correct.

Made for very unproductive discussion.

Collapse
 
whelan_t profile image
Travis Whelan

I had a colleague who would do that. “What do you think about X” as soon as you’d answer, “let me tell you why you’re wrong!” I soon learned to respond to his question with my own “well, I haven’t thought much about it, what is your idea?”

Collapse
 
imthedeveloper profile image
ImTheDeveloper

Hahaha.. I have this everyday. "What are your thoughts on X" followed by "And you don't believe that Y is correct?!! That's strange..."

Hardly strange when a quick Google search backs your opinion in owasp manual lol

Collapse
 
kellyjandrews profile image
Kelly Andrews • Edited

I also used that methodology. But the response was "I'm not the one who will build this, and you all are way smarter than I am"

🙄

Collapse
 
rickssss profile image
Rick

My second job was at Microsoft. Well, so I thought at first - it was actually contracted through an agency that changed names every two months to avoid the plague of 1-star glassdoor reviews that followed them around, and seemed to be more or less solely a Microsoft contractor pipeline funnel built to take advantage of naive developers. As you can imagine, this already shows how the coding culture would end up for me.

I was given ownership (ha) of a project that was internal but publicly known, with plans to go OSS or at least publically available. It was the worst mess of code I have ever seen in my life... I would rather have refactored the source code to Dwarf Fortress. Outdated, overlapping tooling (lol bower), Angular1, no style guides or linting or Git guidelines (blame basically just told me "oh, here's where this person put in the part that fucked the code up, not actually give me any idea as to why they did it".

The codebase I inherited had contradictory documentation spread out confusingly in Microsoft Notebooks or whatever they call that nightmare, complete with tons of pages I had to wait days to get authorized for just to see something about PUBLIC API DETAILS, which would be a recurring theme. Repeatedly, I could not access the tools, resources, or info I needed to just code the fucking thing. Although I did my best and I think I did a damn good job before I was terminated after realizing what they were doing with me and half the other workers with the contractor label.

50% of the code was dead, like a personal project that you've just messed all up in order to refactor it. But without the refactoring. Simple client side booleans that the server sent back during API calls were removed randomly throughout the work of the FOUR previous designers on this small, <2 yr old, single full-stack app. Of course, you can imagine that there was absolutely no cohesion in the code anywhere, as if someone played the "three-headed monster/story" game except with a full stack web app.

As it was MS, Azure was hamfistedly forced into the app (and the reverse is true as well). I couldn't access any Azure learning resources because I wasn't an employee! Beautiful. (I worked 40 hr weeks in an office and reported to ms employees as team members and bosses, building an internal app using Microsoft tools and a mandated adherence to a loose 9-5 schedule. But I wasn't an employee, of course. I was a contractor). This led to so many issues, but I'm rambling so I'll get to the most infuriating part of the entire thing...

A previous disposable dev had set up a guide on how to run the stack locally - shouldn't be hard, it's just MH*N right? Hahahaahahh if only. All the secrets weren't uploaded on the GitHub or in the notes or ANYWHERE I could find. I spent literal days searching because I couldn't work at a clip without being able to RUN THINGS LOCALLY, and of course, it's not a great practice to deploy to the staging server every time I wanna test a small commit. But the secrets/secrets file(s) were absolutely necessary to do fast paced work. After talking to some of the few helpful people I encountered at the company, who were experts in navigating the Kafkaesque bureaucratic hell that spanned both the office and the code bases. I spent about 3 weeks trying to get this while having to make a PR, wait for it to get merged, and test it every time I wanted to make so much as a font change. I wasn't going to be able to keep up the exhausting process if I didnt get the secrets file soon, enabling me to run the stack locally.

One day 2ish months into the job, I finally found the secrets file, and many other, through some leads from the helpful outliers and my extreme investigations that made me feel like a computer forensics expert. One of the helpfuls told me I had also found a major company privacy/security vulnerability, as I found more than just MY small-beans file, I had uncovered a huge cache of secrets files that countless engineers had stored in the wrong place - probably "contractors" with as much guidance as me, not trained on Azure or allowed to access learning materials, which might've given them knowledge on where to put the key. It was a major success and I felt great.

I got a call from my "recruiter" at 7pm that night: I was My contract was terminated by a higher level employee (not on my team. they were VERY screwed losing me) because of "something I said on an internal forum". My Post? In the internal Azure help and support and training forum, I asked where I can get some training that isn't locked out to contractors, and I non-aggressively expressed frustration with not being able to access the Azure learning portal because of the "v-" before my email address.

🙃

Collapse
 
ben profile image
Ben Halpern

Collapse
 
mscccc profile image
Mike Coutermarsh

At $very_large_company. We were allowed to deploy once a week. For each deploy, I had to submit an excel spreadsheet to my manager with details about the change. Once approved, I then emailed the form to the IT department. They'd then do the deploy 2 days later.

If you shipped a bug and needed to fix quickly, good luck!

Collapse
 
ben profile image
Ben Halpern

Oh my goodness. That makes me so uncomfortable just reading. I recently heard about a company that has a code freeze about mid-month and has 2 weeks of all-hands Q/A before deploying once a month.

This was decades-old code, so there's only so much you can do.

Collapse
 
rachbreeze profile image
Rachel Breeze

Once worked in a company where the developers were kept in a developer room, talking was banned and any non developer entering the room was made to feel guilty. Making it hard to collaborate and ensure we delivered what client wanted.
Code reviews focused on order of methods in a class, whether classes and modules were stored in the right folder (classes/modules) and if there was an empty comment on blank lines (blank lines were a no no).

Collapse
 
rachbreeze profile image
Rachel Breeze

Forgot to mention attendance of meetups and formal training was discouraged.

Collapse
 
vpetar profile image
VPetar

Well that's just messed up 0,o

Collapse
 
ben profile image
Ben Halpern

Before I got into professional software development I worked for a consumer tech startup. There was one technical person who directly worked in the company, two non-technical cofounders who lived in different cities, about 8 overly-involved non-technical consultants, and a team of ten-or-so engineers in Pakistan. And me. My job was "growth". 🙂

There was clearly a few things wrong with this company but from a coding perspective alone it seemed almost impossible for anyone to make progress. There were these ridiculously unproductive conference calls like once a week and then folks would pray that they'd get the right thing back from their overseas engineers. The one engineer who worked in the company had little understanding of the work done by the Pakistan team. The engineering culture was one of hope and prayer.

Distributed development can work, but not like that. I liked the folks who ran the company, but had a hard time believing in the future. It was, in the end, not long for this world.

Collapse
 
wahibhaq profile image
Wahib-Ul-Haq

Interesting and obviously got my attention instantly :)

As a Pakistani, I have worked in a similar setup but interestingly on the Pakistani end working for a American based large corporation and we were their dedicated engineering powerhouse. Many times it didn't work smoothly with deadlines but overall there was some engineering culture and there was some growth. I didn't like the outsourcing model or lets say I realized that I am not made for this. I wanted to switch to product based companies and later moved to Germany for a more diverse experience.

How was your experience working with Pakistani engineers as a remote team? Was their a mismatch with expectations and delivery and were they delivering what they were supposed to deliver?

Collapse
 
sdhowell3 profile image
Scott Howell III

Arguing over if unit test should be written when there are no test from unit test to UI test on any of the 20 different code bases we have running in production

Collapse
 
dev_anna profile image
Anna

I worked for a local newspaper for a few months. My first hint should have been when they refused to negotiate about my salary, at all, and what they offered was about 20% lower than the average salary for a JS dev at the time.

When I actually started, I was unable to do any work. Literally, nothing. I came in, got some tasks assigned in the sprint, tried working on them, couldn't because nobody was able to tell me anything about the systems, their prerequisites, where the data was located,... so I put them on blocked and they were passed on to someone else the next sprint.

I repeatedly asked for any sort of on- boarding, for some one- on- one dev time or mentor-ship. Yes of course, they said, but we're super busy right now. I tried learning the stuff myself. Got told off because it taught me "the wrong way" of doing things.

Somewhere around 2.5 months in, I tried escalating it to the bosses. They pretended to listen but nothing changed. 2 months later I was fired for "not fitting in".

I learned afterwards from many different ex- employees that the company is notorious for throwing new hires in with a sort of "sink or swim" mentality. I think that is a horrible way to deal with new hires. It wastes countless hours, frustrates people to no end, and has this sort of "self starter" expectation that is, IMO, toxic.

Collapse
 
kayis profile image
K • Edited

Worked at a big corp.

20-25 years ago they started to create an IT department and said to every already existing department they should send their IT people to work there from now on.

But 1) the departments wanted to keep their good IT people and 2) they saw this as a possibility to get rid of people they didn't like.

Long story short, they ended up with an IT department filled with incompetent sociopaths.

Now when you wanted to create software to automate your work, you had to talk to the IT department or use the software you already have.

I had to implement the strangest stuff in VBA on Excel/Access/Word...

Collapse
 
ben profile image
Ben Halpern

But 1) the departments wanted to keep their good IT people and 2) they saw this as a possibility to get rid of people they didn't like.

Damn I bet this sort of thing is pretty common at big corps.

Collapse
 
perttisoomann profile image
Pert Soomann

I'd say no-one, unless you work for someone with reasonable tech background and actual understanding of ins and outs, will actually ask, nay, demand clean code.

If you offer someone more features, but less clean code, of course they choose quick fixes - purely because managing code is not their pain point, it's yours. They don't understand the complexity, and they probably don't want to, they pay you for that (unless, of course you quit and they have no plan B).

And then it's down to you as dev, do you want to deliver a lot and make employer happy, but potentially paint yourself in the corner, or work with timeframes that allow you easier to manage code, but less features.

I'd say in general you have to make that decision and work your estimates accordingly, and not try to give someone option to choose - because you already know what they will choose.

I'm not advocating for bad code, but sometimes to stay within the budget/timeframe, as developer, everything can not be perfect and saying you aim for "clean" code just because you're a good developer is you just putting unnecessary stress on yourself.

Does that make sense?

Little tip, and I know it's not really proper way to use it, it seems giving someone story-point allowance for week/month/sprint and then having generous estimates is very easy pill to swallow compared to giving someone actual hours breakdown.

Collapse
 
omawhite profile image
Omar White

I once had to work on a poorly constructed Django project. It never quite worked right no matter how hard I tried. It felt very much like how you described. Building on top of broken things you didn’t understand and slowly trying to replace parts to improve the overall code base.

 
ben profile image
Ben Halpern

Any idea how the company is doing now?

Collapse
 
kaydacode profile image
Kim Arnett 

When you ask to use the latest programming language written by Apple, and they ask you why you would do such a thing..

Developers were set in their ways and not interested in learning or keeping up with new technology.

Collapse
 
ashleyjsheridan profile image
Ashley Sheridan

Was your reason to use apple's latest programming language just that it was their latest? If so, I see their point.

Collapse
 
kaydacode profile image
Kim Arnett 

I could go on a 30 minute rant of why Swift is better then objective c. But ultimately it’s a cleaner solution that results in a better product and UX.
Mobile isn’t web, it moves way too fast to not be using the latest tools available.

Thread Thread
 
ashleyjsheridan profile image
Ashley Sheridan

As long as you used the reasons why Swift is better than Objective C as your argument, and didn't just use the whole "we need to use the latest because it's the latest".

Also, comparing mobile to web by saying mobile moves faster, really? How much has Swift been updated in the last couple of years? In that time, web tech has moved an incredible amount every week, far faster than any other platform I can think of.

Collapse
 
andy profile image
Andy Zhao (he/him)

@ashleyjsheridan I think it makes more sense to assume that she didn't just want to use the latest, hot new-fangled language.

Also, certainly not the most constructive way of making your point.

Collapse
 
vikkio88 profile image
Vincenzo • Edited

Oh well, at least you didnt work for the Mafia...
Be me, just out of University in Palermo, CS degree and I am off to Malta to get an IELTS.
Being there I start to send CVs around, I was working as a freelancer before, I never got hired officially, I was just doing a lot of small websites here and there.

Malta, being a fiscal heaven, and who says otherwise is a liar, is a giant hub for all the disgusting companies, like betting companies (even though they like to define themselves as "igaming companies") or fintech.

A lot of people were interested in a junior, and this company too... a betting company one.
I hate betting, I really do, never placed a bet or played poker online and crap like that, I always though it was a dirty environment and I never wanted to do anything with it.

But I was a junior, and the money were good, and I got said that everyone that works in betting should go through a deep history check, to make sure they have nothing to do with crime or anything.

In a month I moved and I worked there for 1 year and 6 month. Terrible environment.
"this is not a fucking software company, we dont care about quality, just fix things and delivery"
You could hear people screaming on meetings things like "I dont give a shit about it, if they win(the customers) we lose money."

The whole company ignored the IT department, we just got patted on the shoulder once in a while and forgotten for months.
I was going to change, going through interviews processes with a lot of companies, so I had decided to change.

Until one day... I go to work as usual, and there was no one... weird.
I sit and start to work on my task anyway... in one hour a guy comes along and start to take away all the laptops, and asks me "whatcha doing here?"
I am like "working..."
He is like "Did you see the news on tv yesterday?"
I "well no, I do not watch TV, especially italian tv since I am abroad"
"well they arrested everyone"

I search the name of the company... BOOM!
they arrested all the managers because they were doing money laundering for the Ndrangheta (Calabria Mafia).

So yeah, I quit the same day.
And since then things just got better. But was a terrible experience that made me feel like I should listen to my feelings a bit more when I choose a job, and avoid following just the money.

I think I might have won this thread :D

Collapse
 
changemyname profile image
Evgeny • Edited

Haha damn! I live in Malta, and I never knew about this. Like you, I don't watch TV or follow Maltese news. Just looked it up on google and damn, this is recent.

Collapse
 
vikkio88 profile image
Vincenzo

it is not really, it was 2015, it is almost 3 years ago

Thread Thread
 
changemyname profile image
Evgeny

yea I later found that out. The news post i looked at was 2017. But it was a different one.
timesofmalta.com/articles/view/201...

Thread Thread
 
vikkio88 profile image
Vincenzo
Collapse
 
levimoreira profile image
Levi Albuquerque

OMG! This looks like a film plot

Collapse
 
vikkio88 profile image
Vincenzo

if you want to buy it, you need to make me an offer I can't refuse