Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple APILearn More
Search - "client is always right"
Who Is Who
➡ A Project Manager is the one who thinks 9 women🙍 can deliver a baby in 1 month.👶
➡ An Onsite Coordinator is the one who thinks 1 woman can deliver 9 babies in 1 month.👶
➡ A Developer is the one who thinks it will take 18 months to deliver 1 baby.🙇
➡ A Marketing Manager is the one who thinks he can deliver a baby even if no man and women are available.👷
➡ A Client is the one who doesn’t know why he wants a baby.👶
➡ A Tester is the one who always tells his wife that this is not the right baby. 🚶
Don't be shy.. Comment which 'who' are you..😂17
Things have been a little too quiet on my side here, so its time for an exciting new series:
practiseSafeHex's new life as a manager.
Episode 1: Dealing with the new backend team
It's great to be back folks. Since our last series where we delved into the mind numbing idiocy of former colleagues, a lot has changed. I've moved to a new company and taken a step up as a Dev manager / Tech lead. Now I know what you are all thinking, sounds more dull and boring right? Well it wouldn't be a practiseSafeHex series if we weren't ...
DEALING! ... WITH! ... IDIOTS!
Bingo! so lets jump right in and kick us off with a good one.
So for the past few months i've been on an on-boarding / fact finding / figuring out this shit-storm, mission to understand more about what it is i'm suppose to do and how to do it. Last week, as part of this, I had the esteemed pleasure of meeting face to face with the remote backend team i've been working with. Lets rattle off a few facts to catch us all up:
- 8 hour time difference to me
- No documentation other than a non-maintained swagger doc
- Swagger is reporting errors and several of the input models are just `Type: String`
- The one model that seems accurate, has every property listed as optional, including what must be the primary key
- Properties go missing and get removed at the drop of a hat and we are never told.
- First email I sent them took 27 days to reply, my response to that hasn't been answered so far 31 days later (new record! way to go team, I knew we could do it!!!)
- I deal directly with 2 of them, the manager and the tech lead. Based on how things have gone so far, i've nick named them:
So lets look at some example of their work:
- I was trying to test the new backend, I saw no data in QA. They said it wouldn't show up until mid day their time, which is middle of the night for us. I said we need data in our timezone and I was told: a) "You don't understand how big this system is" (which is their new catch phrase) b) "Your timezone is not my concern"
- The whole org started testing 2 days later. The next day a member from each team was on a call and I was asked to give an update of how the testing was going on the mobile side. I said I was completely blocked because I can't get test data. Backend were asked to respond. They acknowledged they were aware, but that mobile don't understand how big the system is, and that the mobile team need to come up with ideas for the backend team, as to how mobile can test it. I said we can't do anything without test data, they said ... can you guess what? ... correct "you don't understand how big the system is"
- We eventually got something going and I noticed that only 1 of the 5 API changes due on their side was done. Opened tickets. 2 days later asked them for progress and was told that "new findings" always go to the bottom of the backlog, and they are busy with other things. I said these were suppose to be done days ago. They said you can't give us 2 days notice and expect everything done. I said the original ticket was opened a month a go *sends link* ......... *long silence* ...... "ok, but you don't understand how big the system is, this is a lot of work"
- We were on a call. Product was asking the backend manager (aka "Ass") a question about a slight upgrade to the new feature. While trying to talk, the tech lead (aka "Hole") kept cutting everyone off by saying loudly "but thats not in scope". The question was "is this possible in the future" and "how long would it take", coming from management and product development. Hole just kept saying "its not in scope", until he was told to be quiet by several people.
- An API was sending down JSON with a string containing a message for the user with 2 bits of data inside it. We asked for one of those pieces to also come down as a property as the string can change and we needed it client side. We got that. A few days later we found an edge case and asked for the second piece of data to be a property too. Now keep in mind, they clearly already have access to them in order to make the string. We were told "If you keep requesting changes like this, you are going to delay the release of the backend by up to 2 weeks"
Yes folks, there you have it, the most minuscule JSON modifications, can delay your release by up to 2 weeks ........ maybe I should just tell product, that they don't understand how big the app is, and claim we can't build it on our side? Seems to work for them
Thats all the time we have for today,
Tune in for more, where we'll be looking into such topics as:
- If god himself was an iOS developer ... not
- Why automate when you can spend all day doing it by hand
- Its more time-efficient to just give everything a story point of 5
- Why waste time replying to emails ... when you can do nothing instead
See you all next week,
1. Do you know why my computer is so slow?
2. What cellphone do you recommend me to buy? (They always end up buying the cheapest)
3. What do you do at work? (Answer: "I create applications". Anything more complex than that is not going to be understood or they will loose interest)
4. Something is wrong with the: [TV, Cellphone, microwave, etc.]. Could you please take a look? (Believe or not, if something works with electricoty, my family thinks I can fix it).
5. Is it true that if I send this WhatsApp message to all my contacts I will have more options?
6. I need to build an application that (pretty much The Matrix), how much time do you need and how much would cost? Don't you dare to give me wrong numbers. (We have to see the future)
7. (Continuing the previous point, a non-technical client) I don't think that would take so much time/money. (Every time)
8. I want to use the latest Front-End frameworks. I want to see all those beautiful animations in my page and that it runs smoothly... I also need that it runs in IE 5.
9. So, you have been working in the back end? If you don't have a screen to show to the client is like you didn't do anything in this sprint.
10. Why haven't you built and million dollar application? Everybody is doing that right now....
Yep, those are only a few downsides of our profession if we count family, friends and even co-workers. But I can't imagine myself doing anything else.6
Following a conversation with a fellow devRanter this came to my mind ago, happened a year or two ago I think.
Was searching for an online note taking app which also provided open source end to end encryption.
After searching for a while I found something that looked alright (do not remember the URL/site too badly). They used pretty good open source JS crypto libraries so it seemed very good!
Then I noticed that the site itself did NOT ran SSL (putting the https:// in front of the site name resulted in site not found or something similar).
Went to the Q/A section because that's really weird.
Saw the answer to that question:
"Since the notes are end to end encrypted client side anyways, we don't see the point in adding SSL. It's secure enough this way".
I emailed them right away explaing that any party inbetween their server(s) and the browser could do anything with the request (includingt the cryptographic JS code) so they should start going onto SSL very very fast.
Too badly I never received a reply.
People, if you ever work with client side crypto, ALWAYS use SSL. Also with valid certs!
The NSA for example has this thing known as the 'Quantum Insert' attack which they can deploy worldwide which basically is an attack where they detect requests being made to servers and reply quickly with their own version of that code which is very probably backdoored.
This attack cannot be performed if you use SSL! (of course only if they don't have your private keys but lets assume that for now)
Luckily Fox-IT (formerly Dutch cyber security company) wrote a Snort (Intrustion Detection System) module for detecting this attack.
Anyways, Always use SSL if you do anything at all with crypto/sensitive data! Actually, always use it but at the very LEAST really do it when you process the mentioned above!31
// devRant unofficial UWP update (v1.5.6)
A new update for Windows 10 users is in certification right now (will be available in a few hours/days), with the new feature you could see a few days ago on the official client.
But the main reason of this post is that I've seen the success of the official Issue Tracker created in August by @dfox and @trogus on GitHub.
For this reason I decided to do the same for the unofficial client.
Feel free to post bugs reports (I prefer this method instead of emails) and requests of features (even if not available in the official client) you would like to see.
Complete changelog of v1.5.6:
- Added new 'post type' selector for easier classification of rant types in the future;
- Added Official devRant unofficial Issue Tracker on GitHub;
- Added Feedback page with link to GitHub Issue Tracker repo;
- Added black theme... no, wait... already there.
- Minor UI improvements;
- Minor back-end improvements;
I hope to see a lot of interesting feature requests I will enjoy to implement to make the UWP client always the best for you, Windows community. 😁18
Focus on algorithms first and syntax last. Solve problems, then code.
If it uses power, has an I/O interface, and stores code, you can do stuff.
Dont get caught up in the little shit like specific code formatting and who's right or wrong between tabs or spaces. (It should be TABS anyway.)
Don't take shit from anyone.
Be confident not cocky.
Learn GIT as much as you can.
Don't burn out.
Get up and stretch.
Don't argue with your Operating Systems professor about why you shouldn't have to learn Linux.
Don't fall into the "I want to be a game developer" trap. Make your own games on your own time. You won't learn shit at school about it.
9/10 of the real world workforce is who you know, so don't be a dick. Those people might be the difference between Ramen noodles and steak dinner for you.
Charge market competitive rates and set an hourly rate that defines the clientele you deal with.
Don't ever, EVER, do trade or spec work. Free work don't pay the bills. Always start the clock when you're not sleeping, eating, or shitting. If you're emailing, calling, texting, or otherwise interacting with or on behalf of a client, bill them. Don't be a bitch when they decide they don't want to pay you. Get yours. Watch "Fuck You. Pay Me." at least once a month on YouTube.10
It's enough. I have to quit my job.
December last year I've started working for a company doing finance. Since it was a serious-sounding field, I tought I'd be better off than with my previous employer. Which was kinda the family-agency where you can do pretty much anything you want without any real concequences, nor structures. I liked it, but the professionalism was missing.
Turns out, they do operate more professionally, but the intern mood and commitment is awful. They all pretty much bash on eachother. And the root cause of this and why it will stay like this is simply the Project Lead.
The plan was that I was positioned as glue between Design/UX and Backend to then make the best Frontend for the situation. Since that is somewhat new and has the most potential to get better. Beside, this is what the customer sees everyday.
After just two months, an retrospective and a hell lot of communication with co-workers, I've decided that there is no other way other than to leave.
I had a weekly productivity of 60h+ (work and private, sometimes up to 80h). I had no problems with that, I was happy to work, but since working in this company, my weekly productivity dropped to 25~30h. Not only can I not work for a whole proper work-week, this time still includes private projects. So in hindsight, I efficiently work less than 20h for my actual job.
The Product lead just wants feature on top of feature, our customers don't want to pay concepts, but also won't give us exact specifications on what they want.
Refactoring is forbidden since we get to many issues/bugs on a daily basis so we won't get time.
An re-design is forbidden because that would mean that all Screens have to be re-designed.
The product should be responsive, but none of the components feel finished on Desktop - don't talk about mobile, it doesn't exist.
The Designer next to me has to make 200+ Screens for Desktop and Mobile JUST so we can change the primary colors for an potential new customer, nothing more. Remember that we don't have responsiveness? Guess what, that should be purposely included on the Designs (and it looks awful).
I may hate PHP, but I can still work with it. But not here, this is worse then any ecommerce. I have to fix legacy backend code that has no test coverage. But I haven't touched php for 4 years, letalone wrote sql (I hate it). There should be no reason whatsoever to let me do this kind of work, as FRONTEND ARCHITECT.
After an (short) analysis of the Frontend, I conclude that it is required to be rewritten to 90%. There have been no performance checks for the Client/UI, therefor not only the components behave badly, but the whole system is slow as FUCK! Back in my days I wrote jQuery, but even that shit was faster than the architecuture of this React Multi-instance app. Nothing is shared, most of the AppState correlate to other instances.
The Backend. Oh boy. Not only do we use an shitty outated open-source project with tons of XSS possibillities as base, no we clone that shit and COPY OUR SOURCES ON TOP. But since these people also don't want to write SQL, they tought using Symfony as base on top of the base would be an good idea.
Generally speaking (and done right), this is true. but not then there will be no time and not properly checked. As I said I'm working on Legacy code. And the more I look into it, the more Bugs I find. Nothing too bad, but it's still a bad sign why the webservices are buggy in general. And therefor, the buggyness has to travel into the frontend.
And now the last goodies:
- Composer itself is commited to the repo (the fucking .phar!)
- Deployments never work and every release is done manually
- We commit an "_TRASH" folder
- There is an secret ongoing refactoring in the root of the Project called "_REFACTORING" (right, no branches)
- I cannot test locally, nor have just the Frontend locally connected to the Staging webservices
- I am required to upload my sources I write to an in-house server that get's shared with the other coworkers
- This is the only Linux server here and all of the permissions are fucked up
- We don't have versions, nor builds, we use the current Date as build number, but nothing simple to read, nonono. It's has to be an german Date, with only numbers and has always to end with "00"
- They take security "super serious" but disable the abillity to unlock your device with your fingerprint sensor ON PURPOSE
My brain hurts, maybe I'll post more on this shit fucking cuntfuck company. Sorry to be rude, but this triggers me sooo much!2
Just want to mention this mother fucker named Allen. Allen is a fuckin' badass. This guy fucks.
This bad mother fucker like single handedly wrote one of the best fuckin libraries for displaying tabular data, and threw in a shit ton of JSON capabilities just to make it that much fuckin' cooler.
And why? Because he fuckin fucks thats fucking why. I already told you.
And does this son of a fuck support his fucking product? You bet your sweet basement dwelling programming fucking ass that he does.
Dude works that support forum like he no doubt works that pussy. With full and complete knowledge and control, but with a gentle mature touch. Fuckin right.
Do you hate PHP? Well this fuck made a Node version? Do you hate Node? Use that shit with pure JS client side. This dude doesn't give a fuck. Don't have a table? Pass that shit JSON and GET A FUCKIN TABLE!!!
Some dipshit in your company needs to edit a database table but there's no way on sweet baby jesus's green earth you're giving that dumb fuck DB creds? Run that dumb fuck up a fully editable admin portal in like 5 fucking minutes because fuck him.
There are few things in my life I love. My corgi and my kids, and most days my wife.
But always fucking DATATABLES.
So, Allen Jardine... just wanted to give you and your product DataTables and Editor a fucking devRant shout out. It continues to be the one ray of light that works as expected and is extremely well supported when it doesn't and some days I just need that fucking consistency in my life man. So thanks.7
Dear client / customer
You have been misled. The customer is not always right. The sooner you realise this and start listening to us as the consultants you hired the better things are going to get. If you were experts in how to do this stuff you wouldn't need us. Please recognise the skills.
The design & development community3
“Don’t learn multiple languages at the same time”
Ignored that. Suddently I understood why he said that. Mixed both languages. In holiday rechecked it and it was ok.
Sometimes mistakes can lead to good things. After relearning I understood it much better.
“Don’t learn things by head” was another one. Because that’s useless. If you want to learn a language, try to understand it.
I fully agree with that. I started that way too learning what x did what y did, ... But after a few I found out this was inutile. Since then, I only have problems with Git
Another one. At release of Swift, my code was written in Obj-C. But I would like to adopt Swift. This was in my first year of iOS development, if I can even call it development. I used these things called “Converters”. But 3/4 was wrong and caused bugs. But the Issues in swift could handle that for me. After some time one told me “Stop doing that. Try to write it yourself.”
One of the last ones: “Try to contribute to open source software, instead of creating your own version of it. You won’t reinvent the wheel right? This could also be usefull for other users.”
Next: “If something doesn’t work the first time, don’t give up. Create Backups” As I did that multiple times and simply deleted the source files. By once I had a problem no iOS project worked. Didn’t found why. I was about to delete my Mac. Because of Apple’s WWDR certificate. Since then I started Git. Git is a new way of living.
Reaching the end: “We are developers. Not designers. We can’t do both. If a client asks for another design because they don’t like the current one tell them to hire one” - Remebers me one of my previous rants about the PDF “design”
Last one: “Clients suck. They will always complain. They need a new function. They don’t need that... And after that they wont bill ya for that. Because they think it’s no work.”
Sorry, forgot this one: “Always add backdoors. Many times clients wont pay and resell it or reuse it. With backdoors you can prohibit that.”
I think these are all things I loved they said to me. Probably forgot some.
The situation right now:
Our client: full of legacy desktop solutions that always ran inside a VPN, but wanting to modernize the system and migrate to be hosted in the cloud.
Our first project with them: Frontend built with Angular, backend in a serverless model, all with GraphQL and heavily tested to assure quality. The system is mostly an internal software for management, but the backed may receive data from an App.
The problem: all management users have weak passwords (like "12345", "password", or their first name).
The solution: restrict our system to be accessible only inside the VPN
The new problem: how the mobile app will send data to our backend?
The new solution: Let's duplicate the backend, one public and the other private. The public one will accept only a few GraphQL operations.
This could be avoided if the passwords weren't so easily deductible14
I work at a school and am involved in building the new website. Specifically as an ex Web developer myself I am acting as intermediary between the leadership team and the company we have hired to build the site. The company has a "the customer is always right" approach and will do what they are asked for so my main role is stopping the school from making stupid requests.
For example yesterday they complained that the site looked different on mobile compared to desktop. Then they complained that the (long paragraph) welcome message appeared below the menu and quick links on mobile instead of above them (forcing users to scroll down to get to navigation controls). After many more complaints and mind boggling suggestions, and my attempts to explain responsive design and reducing cognitive load, I left the meeting with a headache and an urge to spend the next three hours drowning Lara Croft.
The most difficult part of any developers role: not throwing the keyboard at the client every time they say something stupid.1
I'm building a complex software that computes stuff with advanced algorithms and linear programming. That kind of software that proved itself strong, but you know a bug discovery would be a disaster.
The client is a dick, always acting as a bully in every email.
Last email, writes me about a supposed error of the software, while of course complaining that the software is complete crap to ensure that I keep a positive attitude.
After some hours of trying to find the cause of the fucking problem, I realized that the software was actually right since the beginning.
I've replied explaining *why* the software says what it says (acting like it was the most obvious thing in the world). Waiting for a response.
I hope that moron will feel humiliated at least a little bit.2
Trust no one.
The internet is not your friend, until you find stackoverflow and you get down voted.
That rm -rf / won't make you server faster.
System32 is needed.
Yes, that is a package manager, you don't need to write more ccode
Do not write commets on languages that only you speak, the team does not speak in latin.
Paint is the best engineering tool.
Keep a stress ball nearby.
Your client is always right, unless they mess with your coding skills.
IT Definitions of Designations
Project Manager is a Person who thinks nine women can deliver a baby in One month.
Developer is a Person who thinks it will take 18 months to deliver a Baby.
Onsite Coordinator is one who thinks single woman can deliver nine babies in one month.
Client is the one who doesn't know why he wants a baby.
Marketing Manager is a person who thinks he can deliver a baby even if no man and woman are available.
Resource Optimization Team thinks they don't need a man or woman; they'll produce a child with zero resources.
Documentation Team thinks they don't care whether the child is delivered, they'll just document 9 months.
Quality Auditor is the person who is never happy with a delivered baby.
Tester is a person who always tells that this is not the Right baby.
HR Manager is a person who thinks that...a Donkey can deliver a Human Baby - if given 9 Months
Fuck that shit once again. Spent an entire day releasing micro-patches because nobody listened to me, because "I am a developer but I don't do that full time".
Because you might think that I didn't fuck my ass with a giant bottle-shaped dildo studying development to get this fucking place maybe?
And what, I was right, once again. Because maybe I know the fucking project I work in, linked to the fucking product I'm certified for, you dumb cumfilled assface.
For those that doesn't know it, i do manage, maintain, develop stuff on our ECM infrastructure for our clients. I do basically everything as we have few clients and are a small company we can do this that way.
Anyway, had to release "urgently" 3 fucking features to a custom module to export stuff from the ECM to a client's ERP system. Tests? No time for this, don't lose time on this. I smell the "why didn't you test?" in two days. I fucking smell it.
Plus, the client is a fucking retarded mess. The kind of guy that is unable to check his previous e-mails and asks again the same thing, four times. Should I do a fucking tutorial on how to fucking use a fucking search bar? And you want to be informed on the technical details about the features? Come on, I have to explain you how to do your fucking CFO job.
And if it wasn't enough, My boss replied to the client while I was on holiday to explicitely tell the client that I'm the only one that can take care of that. That gives us a very professional image, doesn't it? And when I asked to train someone to at least do the administration job when I'm away, it's always a "we'll check that, we need that" but then nothing.
Anyway fuck it. if I resign I will laugh. 2 months to train someone else and get them on the export modules (which are commented and documented) in a company where in the office I'm possibly the only developer (we have one in the second office but he's a web developer).
Hopefully I'm at a bar drinking a fucking beer while continuing my golang "getting started" project. That's the only thing that makes me happy of coming back from holiday
p.s.: I want the fucking raven, make me dream.7
A morbid realization (I am just wasting your time keep scrolling)
Unless someone takes a stand for the user, and their comfort and requirements, unless someone looks a client straight in the eye and says "no, I will not do that, and neither will my team" and denies them their request, nothing will change, good devs will keep losing their spark to save themselves frustration, good people will walk away and the tyranny that we face daily grows... unless someone stands up, someone who cannot be knocked down, or reprimanded and told they're wrong for fighting for what's right.. unless someone stands up for what is right and fair... nothing changes... and nothing ever will... poor programs, bad games and content, lower standards, frustrated users, annoyance that you don't matter as a user or a dev will never go away... unless someone says enough. But no one will, money is the boss, morality a liability, and people an abundant resource. This world is backwards, devs are carrying the blame and no one who is able, cares enough to say "that's enough!".13
ALWAYS read warnings guys.
Story time !
A client of ours has a synchronization app (we wrote it) between his inhouse DB and our app. (No, no APIs on their end. It’s a schelduled task).
Because we didn’t want to ask them for logs every single time, the app writes logs to disk (normal) and in Applications Insights in Azure.
When needed, I can go in portal, get all logs for last execution in a nice CSV file.
Well, recently we added more logs (Some problems were impossible to track).
So client calls us : “problem with XXX”
Me : Goes to Azure, does the same manipulation as always. Dismiss a smaaaaaalish warning without reading. Study logs. Conclusion: “The XXX is not even in the logs, check your DB”.
Little I knew, the warning was telling me “Results are truncated at 10.000 lines”.
So client was right, I was wrong and I needed to develop a small app to get logs with more than 10.000 lines. (It’s per execution. Every 3 hours)
So I decided to positively tackle the negative energy surrounding me these past few days. I tried to be productive. I went overboard, of course. Where is the fun in normal?
I wrote down all the urgent tasks I must die-die finish. Anyone closed with Asians will know the severity of the die-die and must combo. I started with tasks I have to finish in 3 days. Then in a week. Then in 2 weeks. I ended up creating more than 25 cards across my respective Trello boards.
The tasks that come to me always need minimum 3,4 working hours. Literally. The furthest deadline I see is Oct 15. The tasks I counted is more than 25. No appointments nor meetings were counted yet. It is not impossible. If I finish 2 tasks per day, 14 days is enough to complete all. I might have to continuously work 2 whole weeks of course. But it is still fine, right? Right, guys? Right? It's doable. Right?
I won't get any unskippable appointment within this 2 weeks. Right?
I won't get new tasks to finish within this 2 weeks. Right?
I won't have to guide other people how to do their tasks within this 2 weeks. Right?
I won't have to work other people's tasks when they absent within this 2 weeks. Right?
I won't have to entertain any annoying client because customer service team can't deal within this 2 weeks. Right?
I won't have to do other personal tasks within this 2 weeks. Right? (Like helping with creating a wedding slideshow for a friend marrying on Oct 28)
My life is totally fine. Right?3
This is a story about the shitty client who managed to ruin everyone's day, consistently....
So this client, its our biggest revenue source (about 33% of total) and our boss is total wuss when talking to them because of that... Each meeting he has with them he ends up bending over nd just takes it all...
So after each meeting with those shit heads, it's always the same...
It's our fault for going over budget (them changing their mind like 10 times during a project over key issues has of course nothing to do with it, because hey, we're a flexible company and all we do is modular and extendable right?)
Its our fault for not meeting the deadline, because of course our boss keeps accepting last minute projects like there we're otherwise sitting on our thumbs
And than their fucking contact person... Biggest ass ever, always involving us in his own office politics... I'd throw him through the window3
How to delete 16 days of commits 101 🤯:
First of all, me and my class (computer science in college) were working on a project for around 12 weeks, our “client” is one of our teacher and we literally just finished today to work on the project since our degree terminal projects are starting next week.
So now there's this guy in our class who kinda has the reputation to be stuborn and clumsy; he’s going to do his assigned task, commit, push it and put his task into QA (which is just peer evaluation and testing nothing really complex) and then when we try his functionality and finds out it isn’t working, we tell him and the only thing he always answers is : “but it works on my machine” and then we will need to explicitly ask him to be sure he has all the latest changes (database and codebase) and to see if it still works on his side since it doesn’t work for anyone else.
This actually happened quite a lot in these 12 weeks and you can definitely imagine that of course it would definitely not happen again today when we thought we were finally done with this project…
So another teacher gave us an assignment to create a development environment for our big project so we could try out Docker instead of virtual machines, he made GitHub Classroom repos with a minified version of our project and up to this point everything is fine and clear. That is until 3 hours ago, that our little clumsy friend somehow pushed his Docker related files on the main project, maybe he was trying his Docker setup on the real project no big deal you know EXCEPT IF HE HADN’T NOT PULLED SINCE 16 DAYS 😤.
He was doing maintenance on another project so I can maybe understand but gosh how did he not see the big warning of Git that he wasn’t up to date with master ? And yes we only have a master branch bear with us but hopefully we were able to create a new branch with the up to date project and then merge master.
A couple of us had a gut feeling that this guy would do something that would break the whole project right before we ended, turns out we were right 😅15
TL;DR Dear boss, firstly, you always get someone to review anything important done by a fucking intern.
Secondly, you do not give access to your fucking client's production server to an intern.
Thirdly, you don't ask your fucking intern to test the intern's work that has not been reviewed by anyone directly on your client's fucking production server.
Last week, the boss and one of the lead devs (the only guy with some serious knowledge about systems and networking) decided to give me (an intern who barely has any work experience) the task of fixing or finding an alternate solution to allowing their support team access to their client machines. Currently they used a reverse SSH tunnel and an intermediary VH but for some reason, that was very unreliable in terms of availability. I suggested using OpenVPN and explained how it would work. Seemed to be a far better idea and they accepted. After several days of working through documentations and guides and everything, I figured out how OpenVPN works and managed to deploy a TEST server and successfully test remote access using two VMs. On seeing my tests, the boss told me that he wanted to test it on the client network. I agreed. Today he comes to me and he tells me to prepare testing for tomorrow and that the client technician is going to give me access to one of their boxes. And then he adds, "It's a working prod server. We'll see if we can make it work on that" and left. I gaped at him for a while and asked another dev guy in the room if what I heard was right. He confirmed. Turns out, the lead dev and the boss's son (who also works here) had had a huge argument since morning on the same issue and finally the dev guy had washed it off his hands and declared that if anything goes wrong from testing it on production, it's entirely the boss's own fault. That's when the boss stepped in and approached me. I ran back to his office and began to explain why prod servers don't top the list of things you can fuck around with. But he simply silenced me saying, "What can go wrong?" and added, "You shouldn't stay still. You should keep moving". Okay, like firstly what the fuck and secondly, what the fuck?.
Even though OpenVPN client is not the scariest thing to install, tomorrow's going to be fun.4
The client doesn't want to give me her PIN code from GoDaddy but I need it to make changes for her.
She told me that GoDaddy's Customer Support told her she can't give her PIN to anyone. I understand that. I told her what to do but she still wants me to do it.
She came up with the idea of teleconference between me, her and GoDaddy (is that even possible?). We live in two different countries.
She could just do it by herself (as I told her what and how to do) or give me the PIN... Nope, she thinks that it's my business to make things up.
Boss wants me to carry on this because she's difficult and may make us bad PR even if she's not right. He doesn't want a shitstorm to handle.
We made few projects for her in the past, she gave us access to all her WordPresses, FTPs, backups, authinfo codes etc but still doesn't trust us. She always thinks dozen times before she gave us some data.
And she's not even a business client. She runs a few blogs about her hobbies. She doesn't make money from them. It's not a big deal but she treats it like a treasure.
It's not easy to be gentle and kind :)3
Now my client does not want to rely on Amazon S3 because of the One Outage that it ever had a couple what weeks ago I forgot already. So my dumbass blurts out well we could always just back up to some other image or file storing website. But now I'm expected to implement this right away when I really haven't thought about it at all I mean I would have to write some sort of failover and some sort of daily or syncing mechanism. I guess I should forget about any direct upload to S3 code that I have written. Really I guess I have to wrap all of the image and file handling stuff with my own solution. Which actually that will be very nice when it is done and I could use this on other projects but it's quite a lot of work for something that I don't feel we really need at this stage in development. Just because you're using stuff on production that has am enormous red TEST label in the way of the ui doesn't mean i can code bullet proof software any faster4
ZNC shenanigans yesterday...
So, yesterday in the midst a massive heat wave I went ahead, booze in hand, to install myself an IRC bouncer called ZNC. All goes well, it gets its own little container, VPN connection, own user, yada yada yada.. a nice configuration system-wise.
But then comes ZNC. Installed it a few times actually, and failed a fair few times too. Apparently Chrome and Firefox block port 6697 for ZNC's web interface outright. Firefox allows you to override it manually, Chrome flat out refuses to do anything with it. Thank you for this amazing level of protection Google. I didn't notice a thing. Thank you so much for treating me like a goddamn user. You know Google, it felt a lot like those plastic nightmares in electronics, ultrasonic welding, gluing shit in (oh that reminds me of the Nexus 6P, but let's not go there).. Google, you are amazing. Best billion dollar company I've ever seen. Anyway.
So I installed ZNC, moved the client to bouncer connection to port 8080 eventually, and it somewhat worked. Though apparently ZNC in its infinite wisdom does both web interface and IRC itself on the same port. How they do it, no idea. But somehow they do.
And now comes the good part.. configuration of this complete and utter piece of shit, ZNC. So I added my Freenode username, password, yada yada yada.. turns out that ZNC in its infinite wisdom puts the password on the stdout. Reminded me a lot about my ISP sending me my password via postal mail. You know, it's one thing that your application knows the plaintext password, but it's something else entirely to openly share that you do. If anything it tells them that something is seriously wrong but fuck! You don't put passwords on the goddamn stdout!
But it doesn't end there. The default configuration it did for Freenode was a server password. Now, you can usually use 3 ways to authenticate, each with their advantages and disadvantages. These are server password, SASL and NickServ. SASL is widely regarded to be the best option and if it's supported by the IRC server, that's what everyone should use. Server password and NickServ are pretty much fallback.
So, plaintext password, default server password instead of SASL, what else.. oh, yeah. ZNC would be a server, right. Something that runs pretty much forever, 24/7. So you'd probably expect there to be a systemd unit for it... Except, nope, there isn't. The ZNC project recommends that you launch it from the crontab. Let that sink in for a moment.. the fucking crontab. For initializing services. My whole life as a sysadmin was a lie. Cron is now an init system.
Fortunately that's about all I recall to be wrong with this thing. But there's a few things that I really want to tell any greenhorn developers out there... Always look at best practices. Never take shortcuts. The right way is going to be the best way 99% of the time. That way you don't have to go back and fix it. Do your app modularly so that a fix can be done quickly and easily. Store passwords securely and if you can't, let the user know and offer alternatives. Don't put it on the stdout. Always assume that your users will go with default options when in doubt. I love tweaking but defaults should always be sane ones.
One more thing that's mostly a jab. The ZNC software is hosted on a .in domain, which would.. quite honestly.. explain a lot. Is India becoming the next Chinese manufacturers for software? Except that in India the internet access is not restricted despite their civilization perhaps not being fully ready for it yet. India, develop and develop properly. It will take a while but you'll get there. But please don't put atrocities like this into the world. Lastly, I know it's hard and I've been there with my own distribution project too. Accept feedback. It's rough, but it is valuable. Listen to the people that criticize your project.9
I was Just college fresher who completed his Engineering. My first week in the office. And a system was provided to me, since it was support project so I was given direct access to production database.
Fresher + Production Database + Access of Admin credentials = Worst Possible Combination
So it was my night shift, I was told to update new tariff plan for our client (which was one of the largest telecom service in India) .
If someone recharges for more than 200 Rupee, that person will get 10% or 20% extra talk time. Which was only applicable for particular circle (Like Bihar and Rajasthan).
Since I was fresher, I was told to update given query from my senior employee which he shared on the shared folder. Production downtime was in the mid night, so at that time I updated that query on the production database.
Query successfully updated. I completed my night shift, went home and slept.
When I woke up, I saw my mobile it had 200+ missed calls from different locations of India. They were Circle heads of that telecom service provider who contacted me. I realized something unexpected is expecting me.
Then at that moment my team lead called me and he asked me to come office right away.
Reminding you I was a fresher, I was shivering. What have I done there?
When I reached office, I came to know that the query I updated on production bombarded.
Every person who recharged that day (duration from midnight to morning 10 AM) got 10 times or 20 times more talktime.
A part of Query was something like this where error was made:
TalkTime = RechargeAmount + RechargeAmount * 10/100; (Bihar)
TalkTime = RechargeAmount + RechargeAmount * 20/100; (Rajasthan)
But instead of this query, I updated below one:
TalkTime = RechargeAmount + RechargeAmount * 10;
TalkTime = RechargeAmount + RechargeAmount * 20;
In a span of 10 hours, that telecom service lost revenue of 6.5 crore Rupees. Thanks to recovery team they were able to recover 6 crore but still 50 lakh Rupees were in loss.
One small query, and approx 1 million dollar was on stake.
Aftermath of this incident
I should have taken those queries on mail. Or, there should have been mail communication regarding this.
Never ever do anything over oral communication. Senior employee who did this denied and said he provided correct query, and I had no proof of communication.
I told them, it was me who executed that query on production. Since I was fresher, and took my responsibility of that incident. My team lead rescued me from that situation.
Always test your query and code multiple times before you execute or Go live it on production.
Always have email communication for every action you take on production.
Power comes with responsibility. If you have admin credentials of production never use it for update/delete/drop until you are sure.
Don’t take your job lightly.
I was not fired from that Job, but I have learnt my lesson very well.1
Allrighty, so we have a huge migration upcoming. The planning started early this spring. We've split the whole process into separate tasks and estimated each of them. Also marked all the tasks client should take care of itself so save funds and time. All-in-all the whole thing estimated like 4 months if we did it [single dev, tremendous amounts of communication with various parties, buy and prepare the infra, adapt app to the changes, testing, monitoring, etc.] and like a month if client did the tasks we shouldn't be doing. The funding for migration is time-bound and can only be used before December. Cool! We got notified that by the end of April we should be good to go! Plenty of time to do things right!
April comes. Silence. Mid-april we resch out to the client. Since there's plenty of time left migration is getting lower priority to other tasks. Well allright, sort of makes sense. We should migrate mid-July. Cool!
July comes. Client replies that everyone's on vacation now. Gotta wait for August - will do the quicker version of migration to make it on time. Well allright....
August comes. Everyone's vusy with whatever they've postponed during summer. Hopefully we'll start migration in September. Mhm...
September comes. We're invited to a meeting by project funders to explain tasks' breakdown, justify the time needed to make the migration. We're being blamed for surreal estimations and poor organization of tasks as nothing's happened yet... [they were the ones who always were postponing things....]. Moreover, they can only spare 20% of infra resources required for data alone anf they want us to make that enough for all environments, all components, all backups, all databases,... You get the pic.
The leader of the meeting semi silently mumbled to other participants 'Well then I'm afrsid we can't make a full migration in time.. Only partial. That's very unfortunate, very. That's why we should not have incopetent vendors [*glancing at us*]'
somehow we agreed we'll get the resources mid-November and we should be thankful for him bcz he'll have to pull some strings for... us..
I left the meeting with my fists squeezed so hard! But it's okay, we got smth useful: resources and start date. Although it leaves us with less than a month to do smth requiring a month for a sunny-day scenario. Nvm, still doable.
Last week we get an email that resources will be available at the beginning of December [after deadline] and we should start a full migration no sooner than Nov 12. Which leaves us with 50% of our estimated fucking optimistic scenario time and not enough resources to even move a single db.
Fuck I hate politics in dev... Is it wrong for me to want to tie them to a pole, set them on a veeery slow fire and take a piss on them while they're screaming their shitty lungs out? I'd enjoy the view and the scream. I know I would. And while enjoying I might be tempted to take a burning 20cm diameter wooden stick and shove it up their assholes. Repeatedly. Round-robin. Promissing them I'll take it out in 5 seconds and pulling it out after 2 minutes.
Has any of you reached a point that you want to resign from work because of a client?
We are dealing with a client at work that uses the app for prototyping instead of making designers create wireframe, imagine the amount of code to write,edit, remove, write it again and yet there is always something isn't right from the client point of view.
What is even worse backend guys screw the server and I am the one to be blamed for errors: 5xx
I even get blamed for error 400 (bad request) when that request passes tests but out of a sudden server returns 400, when you hit refresh the exact same moment of error and server decides to return data and stop throwing error 400.
I also get blamed for server fails to return data from a search endpoint, and if server throws 403 for a public endpoint.
This isn't a rant or getting out of my system but I need opinions, I've been working on this project for a year, with complete mess from either client or backend team, if any of you is instead of me, what would you do?
I'm not a complete guy either, but that situation is just beyond my abilities to handle.6
The 'farewell great manager Jim' party on Monday.
The [insert name of a department] Christmas party on Wednesday, which you shouldn't miss because they want the company to be more integrated.
The [insert name of your department] Christmas party on Friday, which is separate from the other party because they want the company to be more inte... wait.
The hackathon on Saturday and Sunday, because coding all night for free to create buzz around the company's name is always fun.
The team meeting where the product manager presents all the shinny new things they're thinking about presenting to the client while our deadline is still a couple of weeks away. "And the engineering team knows exactly what to do, right?" Yeah, sure, if you say so.
It was the last year of high school.
We had to submit our final CS homework, so it gets reviewed by someone from the ministry of education and grade it. (think of it as GPA or whatever that is in your country).
Now being me, I really didn’t do much during the whole year, All I did was learning more about C#, more about SQL, and learn from the OGs like thenewboston, derek banas, and of course kudvenkat. (Plus more)
The homework was a C# webform website of whatever theme you like (mostly a web store) that uses MS Access as DB and a C# web service in SOAP. (Don’t ask.)
Months have passed, and only had 2 days left to deadline, with nothing on my hand but website sketches, sample projects for ideas, and table schematics.
I went ahead and started to work on it, for 48 hours STRAIGHT.
No breaks, barely ate, family visited and I barely noticed, I was just disconnected from reality.
48 hours passed and finished the project, I was quite satisfied with my it, I followed the right standards from encrypting passwords to verifying emails to implementing SQL queries without the risk of SQL injection, while everyone else followed foot as the teacher taught with plain text passwords and… do I need to continue? You know what I mean here.
Anyway, I went ahead and was like, Ok, lets do one last test run, And proceeded into deleting an Item from my webstore (it was something similar to shopify).
I refreshed. Nothing. Blank page. Just nothing. Nothing is working, at all.
Went ahead to debug almost everywhere, nothing, I’ve gone mad, like REALLY mad and almost lose it, then an hour later of failed debugging attempts I decided to rewrite the whole project from scratch from rebuilding the db, to rewriting the client/backend code and ui, and whatever works just go with it.
Then I noticed a loop block that was going infinite.
NEVER WAIT FOR A DATABASE TO HAVE MINIMUM NUMBER OF ROWS, ALWAYS ASSUME THAT IT HAS NO VALUES. (and if your CPU is 100%, its an infinite loop, a hard lesson learned)
The issue was that I requested 4 or more items from a table, and if it was less it would just loop.
So I went ahead, fixed that and went to sleep.
The day has come, the guy from the ministry came in and started reviewing each one of the students homeworks, and of course, some of the projects crashed last minute and straight up stopped working, it's like watching people burning alive.
My turn was up, he came and sat next to me and was like:
Him: Alright make me an account with an email of firstname.lastname@example.org with a password 123456
Me: … that won't work, got a real email?
Him: What do you mean?
Me: I implemented an email verification system.
Him: … ok … just show me the website.
Me: Alright as you can see here first of all I used mailgun service on a .tk domain in order to send verification emails you know like every single website does, encrypted passwords etc… As you can see this website allows you to sign up as a customer or as a merc…
Him: Good job.
He stood up and moved on.
I WENT THROUGH HELL IN THE PAST 48 HOURS.
AND YOU JUST SAT THERE FOR A MINUTE AND GAVE UP ON REVIEWING MY ENTIRE MASTERPIECE? GO SWIM IN A POOL FULL OF BURNING OIL YOU COUNTLESS PIECE OF SHIT
I got 100/100 in the end, and I kinda feel like shit for going thought all that trouble for just one minute of project review, but hey at least it helped me practice common standards.2
To me this is one of the most interesting topics. I always dream about creating the perfect programming class (not aimed at absolute beginners though, in the end there should be some usable software artifact), because I had to teach myself at least half of the skills I need everyday.
The goal of the class, which has at least to be a semester long, is to be able to create industry-ready software projects with a distributed architecture (i.e. client-server).
The important thing is to have a central theme over the whole class. Which means you should go through the software lifecycle at least once.
Let's say the class consists of 10 Units à ~3 hours (with breaks ofc) and takes place once a week, because that is the absolute minimum time to enable the students to do their homework.
1. Project setup, explanation of the whole toolchain. Init repositories, create SSH keys for github/bitbucket, git crash course (provide a cheat sheet).
Create a hello world web app with $framework. Run the web server, let the students poke around with it. Let them push their projects to their repositories.
The remainder of the lesson is for Q&A, technical problems and so on.
Homework: Read the docs of $framework. Do some commits, just alter the HTML & CSS a bit, give them your personal touch.
For the homework, provide a $chat channel/forum/mailing list or whatever for questions where not only the the teacher should help, but also the students help each other.
2. Setup of CI/Build automation. This is one of the hardest parts for the teacher/uni because the university must provide the necessary hardware for it, which costs money. But the students faces when they see that a push to master automatically triggers a build and deploys it to the right place where they can reach it from the web is priceless.
This is one recurring point over the whole course, as there will be more software artifacts beside the web app, which need to be added to the build process. I do not want to go deeper here, whether you use Jenkins, or Travis or whatev and Ansible or Puppet or whatev for automation. You probably have some docker container set up for this, because this is a very tedious task for initial setup, probably way out of proportion. But in the end there needs to be a running web service for every student which they can reach over a personal URL. Depending on the students interest on the topic it may be also better to setup this already before the first class starts and only introduce them to all the concepts in a theory block and do some more coding in the second half.
Homework: Use $framework to extend your web app. Make it a bit more user interactive with buttons, forms or the like. As we still have no backend here, you can output to alert or something.
3. Create a minimal backend with $backendFramework. Only to have something which speaks with the frontend so you can create API calls going back and forth. Also create a DB, relational or not. Discuss DB schema/model and answer student questions.
Homework: Create a form which gets transformed into JSON and sent to the backend, backend stores the user information in the DB and should also provide a query to view the entry.
4. Introduce mobile apps. As it would probably too much to introduce them both to iOS and Android, something like React Native (or whatever the most popular platform-agnostic framework is then) may come in handy. Do the same as with the minimal web app and add the build artifacts to CI. Also talk about getting software to the app/play store (a common question) and signing apps.
Homework: Use the view API call from the backend to show the data on the mobile. Play around with the mobile project to display it in a nice way.
5. Introduction to refactoring (yes, really), if we are really talking about JS here, mention things like typescript, flow, elm, reason and everything with types which compiles to JS. Types make it so much easier to refactor growing codebases and imho everybody should use it.
Flowtype would make it probably easier to get gradually introduced in the already existing codebase (and it plays nice with react native) but I want to be abstract here, so that is just a suggestion (and 100% typed languages such as ELM or Reason have so much nicer errors).
Also discuss other helpful tools like linters, formatters.
Homework: Introduce types to all your API calls and some important functions.
6. Introduction to (unit) tests. Similar as above.
Homework: Write a unit test for your form.
Now then... where do I begin 😐
TLDR - fuck charity
A bit of backstory first, I was in my first year of college when I started this project for this charity.
It started in December of last year, my tutor approached me and asked if I’d like a project to work on, for my portfolio and what not, I agreed as I thought it would be a great opportunity. Saying yes to that question is my biggest regret so far. Oh boy the pain it has caused me.
The projected started a few days after I agreed. The stack and stuff was already agreed upon by my tutors higher ups. The stack was Wordpress and a theme called ‘X theme’ I understand the use for Wordpress, they are a non tech savvy client, it will be easy for them to manage.
The project was to basically modernise the current site the charity had, simple task you might think... ohhhh no. We agreed upon a deadline, January of 2017 (spoiler, we didn’t make that headline). However the charity wanted change, after change, after change, after change, after fucking change. Every time I’d show them the new revision it was never right, they’d always want another change.
Once we hit the deadline I asked my tutor if we could just drop it. His higher ups said we had to keep going (I could of abandoned my tutor and left him to do it but I’m not a prick). Anyway, we are now in November of 2017, a whole fucking year later and the site has only just been handed off. A WHOLE FUCKING YEAR OF THIS MOTHER FUCKING COCK SUCKING PRICK WHO WOULDN’T TAKE NO FOR AN ANSWER.
Please may god be with me as we have to provide support for this site 😥😥
If anyone’s really curious as to which charity it is or the site. I’ll post it in the comments if you ask nicely enough6
So, I have to begin with saying that I was 19 and my first real job. I was assigned to ongoing project for big german web company who outsourced project for german government. I am fast learner so I quickly ended up as a only developer who works on this project, because company had another important projects. And since I studied outside of my native country and I can speak Polish and English so I was also responsible for explaining everything to customer during meetings. I worked for around 4 months on the project and was heading up to the end. 3 weeks before production deadline client wanted show the results to the german government but I was still working on the functionality. My boss decided to put the web team leader to my project around 8 hours before this presentation to speed up the development. around 30 minutes before the pitch I realised that some of the latest functionalities stopped working. I was trying to figure out what I did I asked my team leader, he said that he have refactored some parts of my code. When we found the right commit it was around 3 min to presentation and after the checkout some of the .htaccess file was broken so I fixed it quickly but Germans started the meeting a bit earlier. The website was crashed almost half of the presentation. After 5 minutes my boss come to my desk and he says that he just talked with our customer and they are so freaking mad and pissed that they will not pay us. At this point I was certain I'm fired...
Suddenly the web team leader joined the conversation protecting me that it was the fault of the project menager because he should assign someone else to this project because even though I am good it is always good to have someone more experienced to work with you and review your code.
Project manager was fired about 3 months later. I was saved 😀1
1. Project Manager is a Person who thinks nine Women can deliver a baby in One month.
2. Developer is a Person who thinks it will take 18 months to deliver a Baby.
3. Onsite Coordinator is one who thinks single Woman can deliver nine babies in one month.
4. Client is the one who doesn’t know why he wants a baby.
5. Marketing Manager is a person who thinks he can deliver a baby even if no man and woman are available.
6. Resource Optimization Team thinks they don’t Need a man or woman; They’ll produce a child with zero resources.
7. Documentation Team thinks they don’t care whether the child is delivered, they’ll just document 9 months.
8. Quality Auditor is the person who is never happy with the PROCESS to produce a baby.
9. Tester is a person who always tells his wife that this is not the Right baby.
(disclaimer :late night rough thoughts)
Ugh... Why is life so tough? Iam so fucked up right now. I don't wanna learn new ugly ass js , fucking weird css and other web dev stuff... Why can't i always stay a neive android dev? Like , this framework is so huge, let me dedicate my life to it. At one point , i will be a master of it and then , i will sit back and relax. Any project coming under my way will be made quickly and conveniently. I might even take out time to develop a better personality and shape, enjoy my free time and be a good person.
But no. I have to learn cloud, i have to learn web dev ,i have to learn ai/ml, i have to learn every fucking fuck the client has to throw on me to sustain my life and earn some slutty money. I am a fucking bitch of client, my company and technology .
You all are too. Everyone is. tech is basically a high scale labour . The one who becomes good at a lot of things seems to go very high. I don't see a lawyer trying to learn different stuffs because they fear of being incompetent or getting less opportunities . Neither do doctors play swapsies . It would be foolish of a person to say "hey you are a vet. Here's some money and some docs, treat the lung cancer of this guy' .
Then why us?9
The customer may always be right, but you are not a customer, you are a client. As a client you have come to us because you have no idea what you are talking about. Rarely do you even know what it is you even want. So how can you be right about something you know nothing about. I want you to be happy with the end product; I emotionally need it as it determines how I value myself as a developer. So trust me when I tell you that you are wrong. That is why you are my client. To give you what you never knew you wanted.
FUCK ALL THE CLIENTS
So we have something with boxes in whuch we present products and we agreed with the client that its only allowed to stay in the layout if they want to delete or add products. Which means the Layout always hast to be either 2-3-2-3-2... Or 3-2-3-2-3... So they have to delete to and add two or just delete two. But TODAY they wanted to fucking just delete ONE!!!! So I talked to my boss and we came to the conclusion that we will build a placeholder for empty boxes... Everything is nice and dandy UNTIL I built that FUCKING placeholder.... Guess what.... The client wanted a second one to be removed... FUCK MY FUCKING LIFE. I WOULD HAVE NEVER HAD TO BUILD THAT SHIT IN THE FIRST PLACE IF YOU TOLD US RIGHT AWAY. FUCK CUSTOMERS.
So we are supposed to go live with the website on thursday and i was just told we need to make layouts again to the website. I have changed the layout and design for the site 4 times already. Fuck the self righteous client for being condescending and my non technical project manager for always thinking the client is right!3
Spent many more hours than my estimate to get a project out the door. Client is now nitpicking everything. I know the client is always (usually) right but this feels ridiculous. His site is 20x faster than it ever was before but just one page is a little off _after adding more content_ and it's a crisis.1
So we now do continuous deployment to a development environment. Once a PR gets merged it gets deployed there. We then have to manually deploy to staging every so often.
We did this because QA wined that the Dev was constantly breaking Staging, when we contentiously deployed to that.
So now we have a staging instance that is always behind. Which isn't big deal, because its supposed to be stable right?
Well now the stupid fucking QA team is always making mountains of tickets and noise for stuff that is already fixed on the development instance.
Fucking shit that they message me about, or have to call me about. "Hey let me tell me about this thing I found." And then I'm like I already fixed that thing last week.
So it seems to be wasting everyone time to not just CDCI into staging. I have to wait weeks to retest my bugs on staging. To make sure that some other stupid fuckeshir on my team didn't undo or break my fucking fix. Shit keeps getting kicked out of QA Review. Fuck. lol.
Then there like I can update the thing on the database through the front end tool. Well tough shit buddy, your going to have to wait a week unti next staging deployment to see if that tool is fixed. This is your fault for fucking up our pure CDCI with your ideas. Now everything takes longer for everyody.
To sum things up. Some dumb bug makes it into the manual staging deployment and gets fixed an hour later. Doesn't get deployed until next fucking week. QA makes a bunch of noise about it. A thing that is fixed and in the pipe-line.
Also a dumb fucking bug will make it into staging, lets say a critical front-end back office tool that needs to send numbers to the backend, they send a fucking string instead of a number and break it. Now we have to redeploy the tool and backend to staging because there related. Then if we deploy backend we have to deploy the client facing site too. since it also depends on backend.
Its a fucking hassle.
Now if the fucking DevOps guy could do his job, and make a god-damn deploy button for all the staging servers that would be great.1
Client is "always" right. Except when he's wrong, but it will come back to first statement.
Need some advise from all you clever devs out there.
When I finished uni I worked for a year at a good company but ultimately I was bored by the topic.
I got a new job at a place that was run by a Hitler wannabee that didn't want to do anything properly including writing tests and any time I improved an area or wrote a test would take me aside to have a go so I quit after 3 months.
Getti g a new job was not that hard but being at companies for short stints was a big issue.
My new job I've been here 3 months again but the code base is a shit hole, no standardisation, no one knows anything about industry standards, no tests again, pull requests that are in name only as clearly broken areas that you comment on get ignored so you might as well not bother, fake agile where all user stories are not user stories and we just lie every sprint about what we finished, no estimates and so forth, and a code base that is such a piece of shit that to add a new feature you have to hack every time. The project only started a few months back.
For instance we were implementing permissions and roles. My team lead does the table design. I spent 4 hours trying to convince him it was not fit for purpose and now we have spent a month on this area and we can't even enforce the permissions on the backend so basically they don't exist. This is the tip of the iceberg as this shit happens constantly and the worst thing is even though I say there is a problem we just ignore it so the app will always be insecure.
None of the team knows angular or wants to learn but all our apps use angular..
These are just examples, there is a lot more problems right from agile being run by people that don't understand agile to sending database entities instead of view models to client apps, but not all as some use view models so we just duplicate all the api controllers.
Our angular apps are a huge mess now because I have to keep hacking them since the backend is wrong.
We have a huge architectural problem that will set us back 1 month as we won't be able to actually access functionality and we need to release in 3 months, their solution even understanding my point fully is to ignore it. Legit.
The worst thing is that although my team is not dumb, if you try to explain this stuff to them they either just don't understand what you are saying or don't care.
With all that said I don't think they are even aware of these issues somehow so I dont think it's on purpose, and I do like the people and company, but I have reached the point that I don't give a shit anymore if something is wrong as its just so much easier to stay silent and makes no difference anyway.
I get paid very well, it's close to home and I actually learn a lot since their skill level is so low I have to pick up the slack and do all kinds of things I've never done much of like release management or database optimisation and I like that.
Would you leave and get a new job?1
I hate sketch, not because it's an Apple only product, but because it's horrible to navigate. I couldn't imagine using it with out a side scrolling mouse, and none of the "normal" keyboard shortcuts work. The plugins are horrible and almost always cause more problems then they fix.
But the biggest issue, and this may be the designers that I work with, but I'm not sure. The files are huge. The smallest file I have worked with was 80mb, yesterday I received a file that was almost 1gb! It had every page, with all the text, in every size, it was insane, I turned the job down based on that alone. It had a decent budget, but the client expected way too much. And the designs for each page were different, which as we know can cause issues for the overall UX.
The screenshot is from my PC as I don't have my OS X VM fired up right now, but that's a real file, just shown with XD.2