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!

Did you find this post useful? Show some love!

I worked as a contractor for a small communications company. Started out as part of a team, and quickly, I was the only one, with the others either leaving or being sacked. Then as I got to have more direct contact with the owner, who was also in charge of general product design, I realized that said owner had no interest in clean or robust code, and was all about quick fixes.

I needed the money, so I wrote shameful, shameful code before ending up being solicited at all hours of the night because the guy had poor time and project management skills and often made technical promises that were incompatible and/or inappropriate for the context.

I eventually fled and that was the happiest day of the past couple of years.

Exactly my thought. It was definitely a learning experience and I learned to have a firm line in front of random demands people make, so it wasn't all bad. Almost six months later, I'm still running after my last check though.

Any idea how the company is doing now?

They got sued because after I left, they failed to find another reliable and competent software developer and fell behind on a project.

Karmic justice, I guess.

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.

Worked in a similar environment. Mine seems worse though, worked as a UI designer and Front-end developer. Was expected to make UI as I code, or at most design 5 pages in a day and come up with style guides on the fly. Coding up an entire app dashboard was expected to take a day. It was hell, worked late nights and weekends. There was nothing like project strategy, project brief, detailed product features, code review...

It was my first job as a Frontend developer. I rushed into it, and I regret it. I joined in April, and quit in December. Took a one month break, and got somewhere way better.

Did I mention I got owed months of pay? Yeah

Dang. Yeah, I stayed for about a year at mine, and until last November, the owner was still calling me every now and then to rant about the overseas subcontractors he'd try to rope into coding for him. Ugh.

Lol. Overseas subcontractors cannot quite work for him like you and others did.

Well, that and apparently they just ghosted when they got enough of him.

Riddle me this though: he hired iOS/Android app developers for PHP work.

I had a similar experience. When I was in high school I was working as a part time wordpress support programmer for a tiny web dev firm in my town. I was able to install wordpress stuff, fix databases, and write some specialized JS and CSS here and there. Nothing too complicated just what about I could learn teaching myself HTML, CSS, and JS in about a year.

Anyways. . . my boss had no idea how to code or any sort of technical limitations so he would often make customers promises about certain features and such think he could just find some WP Plugin to suite his needs. When he couldn't find a plugin he would then ask me to do it but would always be super disappointed when I had to tell them what he wanted wasn't possible (or was at least far out of my developer skill set).

He still reaches out to me today (2 years later) occasionally asking if I can implement a feature he has promised a client; most of the time the answer is no.

I felt so related to that. And my boss even asked me to spy on client's dbs so he knew if they were earning more money to increase the monthly maintenance we did.

The job I was writing about earlier had some Wordpress components to it. The owner insisted that we use Visual Composer. ;__; Adding custom code around Visual Composer made me cry tears of blood, truly.

Absolutely relatable, from my own experiences. Shame that many companies do like this

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...

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.

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

This made me literally laugh out loud. :)

(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"

We were not allowed to eat lunch at the workplace, not in the kitchen, not anywhere else.

That's awful. I've never heard of a place that could legally forbid you from eating during the day..

Not legally, just a "strong cultural aversion"

Ben Halpern DEV.TO FOUNDER

Hey there, we see you aren't signed in. (Yes you, the reader. This is a fake comment.)

Please consider creating an account on dev.to. It literally takes a few seconds and we'd appreciate the support so much. ❤️

Plus, no fake comments when you're signed in. 🙃

When you have a million lines of python entangled with a forked version of Django and other magical python libraries in one monolithic codebase it is basically impossible to write good code.

The only way to fix a situation like that is basically to just build on top of it and slowly replace each part. The trick is of course figuring out what the parts even are. That was when I understood the dangers of dynamically typed code.

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.

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 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.

🙃

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).

talking was banned

Did they at least let you pick out the color of the shackle they used to secure your ankle to the desk? That sounds horrendous!

Headphones were our shackle.

When I left and went to a company with an open plan office, for the entire company, with no office screens it was a shock to the system! So noisey, vibrant and there was collaboration -between teams, with the client, and even user testing. Writing software that people will use and is tested and designed by users (not just qas) must be part of everyone's coding culture)

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.

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

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.

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

Where to begin:

  • We had to have meetings for absolutely everything. Trust was not given by any stretch of the imagination. It was micro-management hell. The "lead" had to have things done his way or it wasn't right and he would lambaste you loudly and in public.

  • At the time, we were a team of about 6 developers and our "lead" had us do code reviews by raising our hands like children in class. I suggested to incorporate pull requests as part of the code review process but was told "That's a fucking stupid idea. We are too small of a team to do that. It would slow us down." in front of the other developers.

  • All the developers wanted to get their hands dirty with React, Angular and/or Vue, but we were forced to use Sencha EXTJS because that was the only framework the "lead" knew. Forget about the fact that it cost the company about $7K in licensing fees, support was nonexistant and my fellow devs had and are probably still having a hard time trying to overcome all the short-comings of said framework.

  • We had a very intensive and complicated aggregation query to build in Mongo. I recommended that we break up the query into smaller ones and do a union on the result set. Again, I was told that Mongo is the greatest and that he would solve it. Lo and behold, he finally relented but never admitted that my approach was indeed the correct way to go.

  • As the team lead, I decided to create a sample hello world Ionic app and clear out all the fluff so that I can present to the team the default structure that was provided by the CLI and then have a discussion on approaches and semantics we would move forward with on our mobile app. (i.e. observables or promises, etc.). The development "lead" thought this was a waste of time but the rest of the team thought it was helpful and appreciated the fact that they were involved in the decision making.

  • Any suggestion to improve code quality, workflow or solutions to problems was usually dismissed, sometimes with prejudice.

  • None of the developers were allowed to deploy to any environment and none knew the actual procedures.

  • These are just the tip of the iceberg....

I had the similar issue with EXTJS. There was a big, old project with the admin panel written on extjs. So I had to go deep inside it to do some changes and updates and it took so much time and energy that it would be enough to learn Angular or React... or both of them. I didn't like it's syntax either.. But still it was an experience and I have no complaints.

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.

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

@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.

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.

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.

My first job was for a small software company.
They hired three junior developers, all with extremely low pay (which I was fine with!)
The problem was, they expected senior level work, senior level speed, and senior level quality.
We could normally get the quality right, but out speed was lacking. Which is reminiscient of the old triangle saying, you can have two of the three: right, under budget, quickly. We were getting paid crumbs, and we could produce, but it normally took us a bit longer..

The other two devs were recent CS grads-- whereas I was a self-taught, bootcamp grad.
The other two devs were extremely hostile towards me, quick to criticize, nor did they approve of quality work I may have produced.
When you asked a question in regards to programming, they begrudgingly helped-- normally with a lot of sarcasm and looks of disapproval.

Now all this being said, I never let the hostile co-workers get to me, and could care less what they thought of me. It was a fantastic opportunity to learn from and it had made me realize what to avoid in a company.
🙂

I know the feeling!

I hope you've found a place that can help you build your knowledge and help you find your feet in this industry. 😊

I'd say worse for developers is when project is sold to a client and scope agreed without any tech oversight.

Something like, we've sold the project for X, and your daily internal cost is Y, so you get X/Y days to deliver Z.

Or even worse, we've spent Q days already on changing design with client, which wasn't really measured or limited in any way, so now you have Q less days to actually develop it.

True story.

Been there, done that.

Years back I worked for a "dotcom" company who insisted on using fixed price contracts. After all the so-called management consultants had done their work on a project (although no one could really tell what they were doing), all the budgeted money had been spent and the actual development had to be done for zero money.

Then everybody would yell at the developers for going over budget.

I used to call it RBD (Residual Budget Development).

One night our director of development sent an email complaining that we were not billing enough to the clients. At that time I was billing 100 % and we were working until 3am each day (with no compensation).

I quit a month later (I actually left pure coding jobs forever and went back to the actuarial stuff).

It was for my first Job, got a job as an intern for a small Advertising company, the front-end leader made himselft the inverview and I got contracted, I was pretty honest by the time I only knew HTML/CSS and the adobe suit, he said it was okay that I was going to learn more in the go.

One week in, everything okay, the front-end leader's wife gave birth and my boss went to paid vacations and would work from home afterwards.

I ended up having to do all of his work, which was way above my understanding at the momment, I had to take one current site and made it look as another (despite they were pretty similar) many dynamic stuff I was unable to comprehend and replicate, I struggled one weekend by myself trying to complete the website since it was supposed to go live on friday.

On monday one nice back-end guy helped me to finish the site, after I got my first payment I also got my dismiss since I was not technical proficient as they would have need.

So they needed an intern to replace a Sr that would go to have time off

When I was a tester, I worked on a product that consisted of many sort-of "micro-commands."

To test a patch release, I was given only a bullet list of the commands that had been modified.

Not wanting to whine about the sparse info (no one loves a whiny tester!), I just went into the source code history myself to find out what changed.

While there, I saw a couple of changes that were not in the list. When I politely asked about that, a dev said there were no such changes.

When I cited the filenames and line numbers, the dev manager sent me a nastygram and cut off my access to source control.

This was the same guy whose first response to learning that there might be a problem usually was to say "Close the door."

Happily, he was eventually fired. (You can be nasty to the testers, but you can't lie to sales.)

I was a freelancer working for an advertising company in Spain. They wanted everything fast. Specs were unclear all time, they used to change their mind and make changes involving architecture and structure hardcore refactorings. I remember countless nights working so they could see progress at 9am in the next day.
Phone meetings were horrible. Like a group of predators yelling at me, complaining all the time. Some (like a lot) spanish companies have the concept that pushing you to the limits will make you work faster and better. Even more on the advertising world. Some really low skill junior devs in the company started to treat me like shit, trying to argue with every line of code I was delivering. Making my life hard was their mantra.

I was holing myself not to run because I needed the money for big plans!
I actually did a very good job after all, clean code and good architecture but I was late, like 15 days late. After 3 months of a nightmare, the project was released and their client was already using the app. It was done 100%. Then I asked them to pay me. PM told me they were not going to pay me at all because "I had caused them irreparable damage and a problem with their client".

So I called a friend who is a lawyer and started to discuss how could I fix this situation, but I had to travel (actually I had plans to move from Spain to Brasil) and needed the money urgently.

I went to the bank and guess what: they sent me the money by mistake!!! The administrative girl in the company had an schedule and she forgot about my particular case so she sent me the money. I got the money finally and I moved to Brasil where all my stress ended suddenly =)

So here´s the best part of the story. The PM called me when I was right at the beach having a coconut drink and told me to give the money back to them, and that it was a mistake. I don´t remember laughing so hard in my life. I just told her where I was and that if she wanted the money better come to get it. Long "bla bla (I´ll sue you) bla bla" and bye bye my dear.

ps: I actually learnt how not to do things, how to reject a project when specs are not clear enough and how to trust myself on avoiding conflicting people.

Probably the one that made it hardest to build good software was where the boss comes in every day with a new emergency. Suddenly whatever I was working on before (including the emergency from yesterday) was irrelevant and the only thing that matters is today's emergency.

At the time I wouldn't have known maintainable code if it smacked me in the face. But emergency code was the worst of the worst. And a lot of features got developed that way before young me realized: when everything is an emergency, then nothing is an emergency.

I started with a small (10-12 people) company whose main business was wage management. One day the boss said, "The web is the future!" and that's more or less how I was hired.

Main issues? They were all working with AS/400's (backing up their data for 8 hours every night, on tapes) with a terribly outdated development workflow:

  • no version control;
  • no automated tests;
  • no deployment pipeline or even scripts;
  • no trace of UI-, UX- or graphics designers (I was doing all the graphics).

As soon as I learnt how modern development was like, I introduced SVN to the company and I ended up being... its only user.
I was a junior and I grew in a culture with no automated tests, so I wasn't writing them either, although I loved the concept... but then again: "We don't have time for those, the client will tell us if there are any issues!"

And it didn't stop there. Even though I was the only front-end developer in a company of just 14 people, I wasn't allowed to talk with the clients. Everything went through a non-technical account that reported to me, from client requirements to answers to my questions.

Not to mention some requirements were just out of my reach. Example: "... and if you catch an error on the page, take a screenshot and send it to the server".
"Huh, I can't do that, boss. The browser doesn't allow me."
"I want solutions, not complaints, Max!"

Conference participations were a no-go. Surfing the web outside coffee breaks was frowned upon.

My observations like "We need an exit strategy from iSeries" or "We can't let the users wait 1.5 seconds to retrieve a list of items", were mostly ignored.

After 5 years, when I was finally considered "almost a senior" but still the low man on the totem pole, the company went into troubles. Commissions plummeted, the environment grew darker and darker. Boss said we needed to save every dime, but I understood lately that he actually wanted to lay off employees. And that included me, because I wasn't part of the company's core business (also because the boss changed his mind and believed mobile apps were the future).

Relationships became harder for me. I was once reprimanded because I used to leave my PC on stand-by during the night, instead of turning it off (to save on electricity!). After I was accused of wasting time while developing an interface (I actually was working hard as always), and a newly hired junior colleague helped stabbing me in the back, I was fired.

That actually came for the better. I already decided to leave the company, but that saved me a couple of months and earned me an exit bonus. I started the first of my OS projects on GitHub that reached 100+ stars (it's currently at 331), then I landed on much greener pastures.

But thinking about back then, all of my insecurities, and being laid off, almost led me to depression. I knew I was capable, but maybe not a good employee. And I had to earn a salary, somehow.

After two more difficult years, my former company went bankrupt and was acquired. Half of the (already very small) workforce was laid off in the process.

I was working in a company developing business software and we had a legacy COBOL system. The system has grown for more than 20 years and this was how it looked like. To turn the codebase into a more adventurous place some coworkers decided ten years ago it would be nice to name classes like g10w or phnompenh. Last one is cool if you like Cambodia but the whole codebase was a mess. 🙈

I once worked for a company that required to write pseudo-code for every line of code. The team lead (web developer) justified it as "I want to read the pseudo code first before I will look at the code. Also if a project manager /director/ VP/ or CEO will want to look at the code, they can read the pseudo code and understand without knowing how to program. " We used ColdFusion at the time and were switching to ASP.NET. Some bugs that took 5 mins to fix would take 30-60 mins because I had to find the pseudo code file, read it, and document the bug fix. Of course, each developer had their own style of pseudo code. Imagine 100s of source files accompanied by 100s of text files of pseudo code. No code or peer review. What a waste of time... naturally, I didn't stay long there.

I'm currently in a place where I'm pressured to get as much work out as quick as I can with no real guide with regards to best practices and clean structures.

Last year, I had to build a 'web-app' in a month that needed to cater for:

  • A payment gateway using a local platform for online payments, this had to handle subscription/once-off scenarios (which I had never done before).

  • Use Vuex (also never used before) for state management with Vue.js

  • Use Laravel to do all the usual heavy back-end lifting including handling payments etc.

I was basically alone on the project and received very minimal help on the first day and had to find my way until I was done.

The project took a total 2 months to build, test and deploy, with no guidance, supervision or anything from my co-devs (we're an extremely tiny team of 4).

Needless to say, I'm extremely proud of the product I built, and thankfully the client is as well!

I've never slept so little in my life. Hahaha

I worked for a company that used and still uses a samba share for all developers to work on the same files all the time.

Of course there was no functioning version-control, no tests at all (but a lot of complains).

Developers have to awnser customer emails and phone calls.

„Scrum“ was cancelled by the CTO because the CEO never had read anything about it. He just had heard from his neighbor (!) that „agile“ development made projects „faster“ and thought that it is a tool to get programmer up to speed.

Every good student left the company after the Bachelor or Master degree, because they were offered no jobs. Developers should be cheap. Like the hardware we used. But when we moved to a new office the furniture had to be nice. Not functional.

Developers where sitting in an overcrowded room, where distraction was a permanent issue.

I started to get to the office before everyone else, and left late in the evening to compensate, that nothing was achieved from 9 to 5. I had a bonus contract and goals to reach.

After I‘ve read Peopleware Productive teams and projects and saw that every anti-pattern mentioned in the book was applied, I quit.

The day I left I cried, because I knew i would miss the co-workers. But at least I learned all the anti-patterns first hand and don‘t have to have them in my current job. Productivity, salary and happiness raised a lot from my last job.

I was working for a company in the financial sector. Their code was a mess, but that wouldn't make them the worst. This is just the background that highlights the cultural problems:

For security considerations, adding a new library to any project would take months. So people literally re-implemented half of the ecosystem. Re-implemented it the wrong way, of course, because we had to focus on the product, not the libraries.

When I arrived, there was already a class that wrote a Properties class into xml. In the java ecosystem we have the standard java.util.Properties.storeToXml() for that since java 1.5.

We had a special tool that serializes/deserializes objects - using special symbols as field separator, like @, ^ or #. It was a funny exercise to maintain it, because these objects refer to each other, so I had to use them in the right order so the different object serializers won't interfere with each other. In the java ecosystem we have json and xml marshallers for that, as well as some csv libraries.

Here comes the cultural part:

When I complained about the additional complexity, my boss told me that this is exactly why they hire smart people. He said, he hoped that I could deal with it.

Before committing code, there was a code review. That's all right, code reviews are useful if done right. Unfortunately, we had no code guidelines, so the code policies changed weekly. It was important to find some room for improvement for my code. It didn't matter if the code base was full of those kind of code. Nor did it matter if review comment suggested that kind of code two weeks before that - I had to rewrite my code according to the suggestions.

My boss had weekly phone meetings with his boss. There he explained what we did - everything that worked well. He also explained what stuff I was struggling with - even if my code was okay. Even if he touched my code and messed it up, he said to his boss that it was my fault.

Sometimes my boss was exceptionally unhappy with my performance. He said, that it was supposed to be a two-day task, and I've been working on that for two weeks. I was too slow, he concluded, and took over to get it done and do it right. Usually he'd spent months on those tasks, because they weren't trivial after all. Anyway, he took over, as he explained to his boss, so the task was in good hands after all.

I was labelled as slow worker, so I had to overwork, regularly. My first child was born during that period, so it was extra stressful for me.

The salary was exceptional. That job makes CVs look good. So I did my best, hoping that the treatment would change once I "made my bones". It didn't. I left after almost three years. It was a horrible experience and a great lesson.

I currently work for government.

Not sure I need to say much more...

Currently working on an application that has been severely “over-engineered” for 9+ years.
Ex-CTO/partner wrote software in such a complicated manner so that non-technical folks could create web pages and analytical metrics on the fly, code free. (Kind of like a CMS)
So now we tackle trying to tack on a new project after years of quick fixes and zero documentation. 🤮

I worked as a contractor in a bank for a big Belarusian consulting company in the US, most of the people are from eastern Europe and the come from a different way of work, they're so cold, rude (smile the customer, angry face coworkers) and don't trust in general.

Every pull request the leaders reject it for everybody because they want you to do it in the way it's the best for them, they think the best it's control everything like code an people (imagine small changes take a lot of time).

I got to see once a comrade was told "WT .... F" (I was: for real! ??) in his pull request, but there were no consequences because they cover between Russians.
Normally they spoke all the time in Russian and not English and if you say something about a better way to do it they often told you that what you proposing it's trash.
Once I had a conflict for functional programming and I was rejected by the PR because they did not understand the code.

Finally, I had to move a different project (I'd started to suffer depression) in the middle of this process I contact HR about this (but was the same kind of people) I was told that if I got a problem just call a help number and the psychologist is covered by the insurance.

In the end, I just moved forward from this and was the best decision ever!

We had a team of five plus me - all students. We were given a project to design and implement gamification for an interactive MOOC platform. While this project taught me a lot, it had many approaches and defects I've since sought not to follow:

  • Requirements and feedback from customer shifted many times during the sprints making it very hard to prioritize the current backlog items, thus we ended up selecting tasks we thought we manage to implement in time.
  • Project Lead had another project going on simultaneously which he invested more time into
  • Towards the end Product Owner moved to another city making it impossible for them to attend meetings and answer questions (all we had was a barrage of "Is it done yet?" styled emails)
  • We had established an agile workflow of reviewing and testing code but no one was actually reviewing and testing causing test builds to break continuously
  • All the three programmers had to learn a new framework (Flask) for a new language (Python) on a new tech stack (Docker) in relatively short time – luckily, we had two very good technical support persons who had worked with these before
  • Features had unbalanced implementation effort by design causing one programmer had to work about 50% more than others

All in all, it was not a deliberately bad culture as we were just lost in a sea of poor project management hacking the code until it got accepted. It could have went so much better, though.

On my previous job (2016), I was an intern software analyst working for a very big and important bank (as a contractor). Our team had to deliver software to process a big set of anarchic input data given in files and translate it to something that a risk calculator processor could understand.

Basically, there were two main parts: a Java 1.5 application that performed some mapping over files and a batch process that launched scripts in a certain order to make more changes to those files.

The version control system was ClearCase from IBM. But nobody really trusted it / knew how to use it. Instead, the best way to get the latest version, as suggested by the most expert dev there, was: connect to Production via SSH using (illegal) login details and (with the utmost carefulness) download the jar to your machine.

The production jar contained both the compiled code and a zip with the full source code. Once you decompress it the nightmare begins: a copy/paste, full of hard-coded values, encapsulation-free, with magic strings code. No less than 60 developers may have made changes to that code in the 10 years or so it was there.

It worked so well, that running it twice with the exact same input data resulted in different values at the decimal level (which was justified as concurrent issues to the client).

Now, for the script part, we had scripts dated on 2002, coded in KSH for an even older Solaris system (That is how I learned why learning UNIX is the best investment any dev can make. It will always be there!).

We had to translate those scripts to a much newer, faster and cutting-edge language: Perl. I felt like a cool techie when I learned it (ha-ha it was already old!).

And, on top of all that, my salary was barely higher than the suit I had to wear. While other contractors went there with t-shirts.

I was working at a very big financial public company, the previous CTO recruited about 20 junior engineers (including me) with no senior to mentor us (he was planning to recruit some later for large software dev projects), so the IT department was very productive with a lot of projects. I was a little bit happy at that time that I could see my work used by people, but I wasn't satisfied with the code quality and the absence of the software development culture, there was no such thing like GIT (yes no GIT!!!), clean code, code review or any other thing, they only cared about launching the product. After 9 months, the CTO was gone and replaced by another one, we asked him to bring seniors because without them we couldn't improve the productivity, the code quality and most importantly our careers, he kept saying yes so I decided to quit, they don't care for anything else if you can produce a new app that just works with no good coding practices. I just started a new job in a new startup and I hope to find what I'm looking for.
I just wrote a post here about this misadventure Career first experience and struggle as a software engineer

As you may have seen with php projects, I had to maintain an un designed phpjqueryhtml bunch of crap and I mean php code spitting dynamic js code which at the same time spit dynamic html code which of course was not "meant" to update/refactor because that worked and they were afraid of "breaking" it and of course you had to use similar code because the manager didn't understand code at all and inherently what he didn't write was wrong as well as unpaid overtime and such shit

I was working in a company developing business software and we had a legacy COBOL system. The system has grown for more than 20 years and this was how it looked like. To turn the codebase into a more adventorous place some cowerkes decided ten years ago it would be nice to name classes like g10w or phnompenh. Last one is cool if you like cambodia but the whole codebase was a mess. 🙈

Half a million lines of 68k assembler code running on bare metal. Yes, half a million. Nearly 1 yard thick when printed out 80 lines to a page.

Proprietary OS, kernel, filing system, SCSI on bare metal (NCR chips), ethernet drivers (anyone remember AMD LANCE?) and some custom hardware. Project lifetime 10yrs+ (1987 to ~2001). Originally written by two company founders, code by maturity had grown approx 10x and team of 5.

Hard real-time execution requirements with some parts timed using magical NOPs, supporting six generations of hardware (from 10MHz 68k up to 75MHz '060). Macros. Nested Macros. Lots of them.

Version control: Polytron PVCS. One. Person. At. A. Time. In. Each. File. Locked. At one point we had to make small changes to almost every source file (approx 250 of them). The only way to do it was for all five of us to eat pizza and stay there til 1am, so the project could continue the next day. One of the better engineers quit after that.

Development system: '386, later '486 and 1st gen Pentium PCs running DOS, Microtec command-line assembler / linker. EPROM programmer, so dev/test cycle was once per hour, tops. Screens were CRT, mostly 1024x768 resolution. At most 50 lines x 80 chars.

Requirement (which we met!) of 99.99% uptime in Production.

Code upgrades were delivered by flying someone out with a set of EPROMs. If there was a critical bug, that meant another flight.

Total earnings from that project would be in excess of $100M in today's money.

I was a new developer, seated next to an experienced senior developer. (We were both doing VBA. What does that tell you?)

I had been reading about how to handle errors in VBA (they don't even have the word "exception") and I had implemented some code to handle errors, log them, and give users better error messages. I asked him for his feedback. He turned his chair to face me, looked me in the eyes, and said, "Error handling is a bad idea." It wasn't a misunderstanding. He thought error handling meant that you eat the error and the code continues. He went on to explain how it's important for users to see the unhandled VBA error pop-up or else they won't know that something is wrong and call us.

A few years later I had moved to a supposedly more advanced team working with .NET 1.1. The senior dev tried to explain why every method should contain "try/catch ex/throw ex" which even a beginner knows does nothing but eliminate the stacktrace from the exception.

Occasionally we would hire developers who would talk about this thing called "unit testing" but no one listened (including me) and they would move on after a year or so.

I met with my manager and director and explained that I wanted to learn how to write better code. I didn't want to just write stuff that barely worked. I wanted to do it well. Where or how should I learn? My director assumed that I must be talking about speed and performance, even though I had mentioned neither. He said that it didn't matter because processor cycles were cheap. I should spend 10% of my time writing software and 90% of my time manually testing it. That was the answer.

There were little ups and downs, but it never changed. Once I understood the sort of developer I wanted to be I left.

BTW - someone mentioned incompetent sociopaths. We had those and even outright real-life psychopaths, and I don't use that word lightly. When no one knows what they're doing and everything is always breaking with every release, that's the perfect environment for an ignorant executive whose only talents are yelling, threatening, and shifting blame until he gets fired.

In the last (small) game development company where I worked, I was invited to a one-one meeting with my boss where I was pressured into not writing and publishing FOSS during my free time on weekends "because it is not helping the company to get an advantage over the other companies".

Note: The code I wrote had nothing to do with what the company does.

I was working at startup(!) web development company. They were developing a e-commerce product. I'm fullstack developer but they wanted me design a web site! Every task was urgent. Their request was uncertain and they were constantly changing their minds. Team was sending their updates via ftp, not git. I suggest to use git but they refused. The salary was low and right of the workers was not given. Nearly all of the company is same in Turkey. I found a good company and working there now. My goal is working as a freelancer (not with my country!!) or moving to Europe.

oh god, I know what you mean.
I worked in a startup too, the CTO was a 22 yo guy that was always changing his mind about things, just because Uber had used technology X or then AirB&b had done Y with tech Z.
I was doing TDD : trends driven development

I thought I had seen horrible stuff, but some of you folks.. wow.

I work in a research lab where we need sometimes to build small apps like a proof of concept. Well on any given day you may receive an email from the lab director for a meeting which during he tells you there is this project on XXXX do it using technology YYYY and it doesn't matter if you know that technology or you think it's not suitable for the project and it doesn't really matter if you think this project will work or not. I mean you are expected to just do it, shut up and keep your opinions to yourself.
I feel like this lab is based on dictatorship.

I was working in a company developing business software and we had a legacy COBOL system. The system has grown for more than 20 years and this was how it looked like. To turn the codebase into a more adventurous place some coworkers decided ten years ago it would be nice to name classes like g10w or phnompenh. Last one is cool if you like Cambodia but the whole codebase was a mess. 🙈

Ugh. Back in the 90's I was part of what can only be described as a sweatshop of programming. We did DOS programs in something called Clipper (dBase pseudo compiler). We wrote custom software for anyone who wanted and could pay for it from medical to interior decorating inventory. It was all billable hours and if there were not enough billable hours they would make up hours to charge their clients. The head framework guy the most intellectually dishonest person I hope to ever have to work with. If you found a bug in any of his applications, he would tell you that you must have a corrupt executable and then come back in a while with a new executable and the bug would be fixed. Obviously he was going and fixing the bug and then giving you the fixed version, never admitting there was a problem with his code. I've never raged quit a job before or since but when the client was dictating the layout of the backend of the application (putting each year of a GL system in a separate table), I just could not take it any more and ran back to be previous job, which I have held onto for dear life since then.

It wasn't a coding culture but nevertheless the code and architecture sucks so bad you want to start from scratch.

I once worked at a company that was acquired by a larger company. That larger company 'retools' those that are benched. It doesn't matter which degree you were from or what your role was before. Training was provided but still we're talking about zero coding background to suddenly being given a task to implement a web service for a large scale enterprise. We basically had to build a new instance from ground up. Phew.

“If you don’t know x, GTFO” - from the time I was learning ASM.

I've never worked at a company with a good coding culture :-(

Classic DEV Post from May 4

What I'd like to hear from an experienced developer when I was a beginner

We have to make a lot of personal and professional decisions during life. In this post, I will help students to make them.

READ POST
Follow @ivancrneto to see more of their posts in your feed.
Ben Halpern
A Canadian living in New York, having a lot of fun cultivating this community! Creator and webmaster of dev.to.
Trending on dev.to
What should I be asking for salary?
#discuss #career #programming
Go or Python and why?
#go #python #discuss
Developer Interview Bloopers
#career #development #interviews #php
How do you organize your knowledge?
#discuss #learning
Taking Notes
#productivity #management #discuss
Explain Higher Order Component(HOC) in React.js like I'm five
#explainlikeimfive #beginners
Explain Docker to Me and When Would I Use it?
#explainlikeimfive
What was your first computer?
#discuss