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 (92)
(Not all from the same company)
Wow it looks like hell.
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.
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?”
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
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"
🙄
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 wasMy 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.🙃
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!
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.
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).
Forgot to mention attendance of meetups and formal training was discouraged.
Well that's just messed up 0,o
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.
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?
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
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.
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...
Damn I bet this sort of thing is pretty common at big corps.