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 ...
For further actions, you may consider blocking this person and/or reporting abuse
(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.
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.
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.
Any idea how the company is doing now?
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.
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
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...
timesofmalta.com/articles/view/201...
OMG! This looks like a film plot
if you want to buy it, you need to make me an offer I can't refuse
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
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.
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 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.
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
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).
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
Did you look into Laravel Spark? It provides SaaS billing out of the box and seems pretty good from my initial tests.
github.com/ladybirdweb/agorainvoicing Use open source Agora Invoicing software. It has all the tools you need to start software selling business. It is build on Laravel framework and is very similar to Laravel Spark
I tried advocating for it, unfortunately the client's payment gateway wouldn't be something that would be accommodating towards integrating it with Spark.
Yeah Spark is even more opinionated than Laravel. To get their automatic billing etc out of the box they provide a set of database migrations and I haven't found if you can alter the table and column names, let alone structure.
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.
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.)
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 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
This reply made my night
so you owe me, please join my project of making open source games! :D
What's the repo if I maybe of help
all of them lol
joking is a small project I tried to kickstart in here, and no one cared
dev.to/vikkio88/opensource-games-c...
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:
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.
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)
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 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
orphnompenh
. Last one is cool if you like Cambodia but the whole codebase was a mess. 🙈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.
Lol. Overseas subcontractors cannot quite work for him like you and others did.
Old post, but wanted to comment.
I worked for an all distributed agency, sounds great right? WRONG. While the team was full of wildly talented people, the owners of the company had no clear purpose which manifested itself into severe micro-management.
There was basically no on-boarding period at all, except I was expected to read their docs which were scattered all over the place, and some random help from a PM when he had a moment to spare.
By the end of the first week I was solely in charge of 11 different sites. I barely had any idea who the client contacts were and often had to have video chats with them talking about legacy issues. One of the clients was even mad that I suddenly appeared out of nowhere with no warning.
To my surprise too, the clients were involved in every step of the workflow process from the point my code was pushed up to my remote branch. I remember thinking, "Why in the Sam hell is the client making comments on my Pull Request?" I had never seen that before... EVER.
There was not one inch to budge as a Developer. It was their way or the highway! Despite the clients not really having a technical background, and since I was new, seeing all this back and forth made them pretty nervous.
So basically I would get maybe 1 hour to Develop a feature, and if I went over that time, by god you had to drop everything and ask the client for permission to work another hour. That could take anywhere from 1-2 hours to respond which were non-billable. Repeat, repeat, repeat.
It was probably the most counterproductive business model I had ever seen. Needless to say I didnt' last there too long, and I seriously wonder if they will last either!
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:
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.
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
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. 🤮
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
Absolutely relatable, from my own experiences. Shame that many companies do like this
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
orphnompenh
. 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.
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.
No code deployments outside of the two week cycle, no matter how trivial.
All code deployments to be actioned by a support centre in Bangalore, 9 hours ahead of local time for the development team.
They needed accounts set up for all of them with exactly the correct privileges and no more.
None of them had any knowledge of or training in the technology being used – they were literally typing from a script.
If the response to what they typed didn't exactly match what the deployment script said, best case was you got a phone call at 2am to debug. Worst case was you'd have to debug it on the daily 9am-10am mandatory morning phone call chaired by the data center VP, with an audience to 20-30.
Dev-ops it was not.
I'm currently working at a place with 1 tech lead and a recently hired intern/jr dev.
We manage multiple company systems and handle all new projects thrown at us. We all are "full stack" developers, meaning we take on multiple jobs to save the company money from hiring other devs.
I'm tasked with creating an application in a new environment, language, framework and data model, all the while learning more about our company systems and preparing for new projects coming our way.
Creating the new application was fine. It's pretty much done, but I've been holding off completing it and turning it in because I'm worried that might make them split their attention and think we can multi task and throw us across these projects...
It's already happened to me before. It was extremely stressful. By itself, it's fine, but it's the future maintenance and inevitable continual addtions and working in my off time to keep up with multiple projects and learning them both since there's basically only two developers managing everything in this company.
I had to call off sick the past couple days because I'm burnt out, exhausted from all the stress and lack of sleep. But man this break and made me realize how stressed and exhausted I was, and I don't like it one bit. It's making me rethink my future with this company.
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 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.
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.
My previous job was a very toxic environment. Everyone was so scared to screw up that there was never any innovation - be a cog, you cog! If something would go wrong, the leaders immediately flocked to "WHO HAS DONE THIS", rather than "ok, something's happened, let's figure out how to fix it, and how to help prevent it from happening again."
Very frustrating - I stayed there about two years, and was able to help bring a few concepts in like automatic builds, and unit testing. In the end though, it was not worth the stress, so I found something better!
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
orphnompenh
. 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.
Same lol
Mine might not be the worst compared to what you guys have here, but I have worked at the agency where they never hired a full time developer before me.
It was super cool in the start where I could be part of all the process from prototyping till website launch. But it got crazy when I used to work 6-7 different projects in a day and always with As soon as you can deadline. I never had extra time to experiment something new in the project. I felt that this could not take me anywhere in my career and switched the company.
My first real software developer job. I was assigned as the only front end developer to a project with 2 backends.
It was a remote job but it paid more than i had ever earned at that point (1 year experience) and i had worked with the owners in my first job. But thats is another story.
I thought it was a smart idea to accept another remote position plus keep my current full time job. I had never worked from sun down to sun rise until them.
Compounded was the fact that i have never . used angular js in a production environment so it was tough ramping up to new things as well as work remotely and with git.
Long story shorty i quit my easiest job and got laid off from both remote positions as i couldnt meet deadlines.
The experience taught me what burn out is and what good and bad code was.
My other remote job was hell as well cause the senior developer thought he knew best and wanted to over engineer everything. 90% of the time he berated my code and decided to do it himself.
We didnt even bother working on CRUD till it was a couple days to show investors :) all because we wanted to get the code to a perfect place. We all got fired and it was a relief to me honestly.
I learnt alot of things from my former senior dev, like what not to do as well was where to draw the line with engineering as well as how to mentor junior devs.
I have a much better job now and i chuckle when people say they are stressed
Not legally, just a "strong cultural aversion"
“If you don’t know x, GTFO” - from the time I was learning ASM.
my previous company
git? nope.
framework? nope.
send an employee for training? nope.
code review? nope.
code testing?
a little bitnope.anything client ask to do? yes
lol
This is quite possibly the best advice I've seen with pseudo compilers, also written in pseudo code.