Skillsobjective-c, swift, ios, xcode, node.js, Angular, bluemix
Joined devRant on 9/19/2016
Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
So I've been screaming for months that push notifications are not reliable enough to build critical functionality on top of. Management won't listen and keep pushing ahead with making teams use it because its cheap and easy.
Been debugging an issue on/off for several weeks. Turns out someone in management asked the backend team to cut the expiration time of items down to 5 minutes to increase throughput (without telling mobile). Notifications are regularly taking +4 mins to get to the phones, leaving our users with barely any time to react. They are now complaining.
I swear if there is a single IQ point available between the whole team i've yet to see any evidence of it3
PM: 2 months? no thats way too long, do it in 1.
Director: I had a chat with someone else who doesn't work on this team, he says that developer you complained about is a good guy and we should keep him on the team.
Business: No, we don't have time for tech debt, lets build these new features as quick as possible and lets see where we are.
everyone: WHAT DO YOU MEAN IT CRASHED AGAIN??? THIS IS UNACCEPTABLE6
Mam: Hey can I ask you a question about Facebook?
Me: (Christ give me strength) ... sure whats up?
Mam: You know when you get a notification and you click on it and see what someone uploaded?
Me: ... you are not on Facebook, you can't be getting notifications
Mam: well I do. Is it possible to...
Me: No hang on a second, it is 110% not possible for this to happen. Something else is going on that you think is a notification.
Mam: You know when you are on, and you see a message like "12 new notifications"
Me: on? on what? this is happening on your phone is it? Can I see?
Mam: No its on my laptop at home.
Me: ... you have an old laptop with an old windows, you can't get notifications on it.
Mam: OH FOR GOD SAKE! ... you know when you are in your emails and it says "12 new notifications"?
Me: ... right so we are talking about EMAILS about unread notifications and not getting notifications on your phone. So you have an old account then that you don't use?
Mam: Yeah I don't know the password to it, haven't logged in, in years.
Me: of course
Mam: Right anyway. When I get one and click on it, lets say its about you, can you see me reading your notifications?
Me: ..... you can't not read my notifications.
Mam: uh, can you see me reading your emails then smart arse?
Me: ... can't do that either.
Mam: So what the hell am I doing then?
Me: You are reading a post someone uploaded, which you got alerted to from an email.
Mam: Right, can you tell when I've read your POST then?!?!?!
Mam: was that so hard?
Me: ... yep7
My linkedin profile = ~7 years as an iOS developer. All of my job titles are "iOS Developer", "iOS Engineer" or "Mobile lead".
Recruiter: Hi, your profile looks great, I have a number of open roles matching your skills. Would you be free for a call to discuss your salary expectations, skills, what you are looking for etc.
Me: Hi, sorry I don't have time for a call right now, here are answers to your questions. Can you send me on any iOS job specs you have and i'll review. <answers>
Recruiter: Sorry I have no open iOS roles at this time.
Bitch ... ima find you and make you understand5
WWDC was last night. Joined my companies "iOS" slack channel this morning expecting to see lots of activity about SwiftUI, Combine, Federated Login, New iPad updates ... but no. The only comment
"Does anyone else feel like the event artwork is lazy and uninspired?"
... I am just fundamentally in the wrong company16
Recruiter: Hi, i'm recruiting for xyz, your profile looks like a great fit. Would you be interested in discussing further?
Me: Hi, your company website says you only have an office location in Berlin. I've marked my profile as not interested in relocation, only interested in jobs in my country and said the same in my description. Are you expanding to my country?
Recruiter: You are correct, this role is based in AMAZING Berlin. Are you interested in relocating?
Team quarterly capacity planning:
- Confluence document created with a big table (+100 rows) by product / business. Each row is something that needs to be worked on for the coming quarter.
- Row 1 could be an Epic with 15 tickets attached. Row 2 could be adding a single log to our analytics. No consistency.
- For each row, we create a separate confluence document with the "technical details". 75% of the time these remain blank. 1% of the time there is something useful, the rest its a slightly longer version of the description from the bigger document.
- Each row gets a high level estimate by the leads. 50% of the time without sufficient background info to actually do get it accurate.
- These are then copied into the teams excel spreadsheet, where it will calculate if we are over/under capacity.
- We will go backwards and forwards between confluence and excel until we are "close enough" to under capacity without being too much.
- Once done, we then need to copy them into the org/division's excel spreadsheet. This document is huge, has every team on it and massive 50pt text saying "Do not put a filter on this document".
- Jira tickets + Epics will now be created for each one, with all the data be copied over by hand, bit by bit, by product. Often missing something.
- Last week, at the end of this process for Q2 (2 weeks late), 6 of the leads were asked to attend a 30 minute meeting to discuss how to group the line items together because we had too many for the bigger excel spreadsheet.
- This morning I was told business weren't happy with one of our decisions to delay one line item. Although they were all top priority (P0), one of them was actually higher than that again (P-1?) and we need to work it back in.
... so back to step 1
- Mid way through Q2, a new document will be created for Q3. Work items that didn't make the cut will be manually copied from one to the other. 50/50 whether anything that didn't get done on time in Q2 will make its way to the Q3 doc.
- "Tech excellence" / "Tech debt" items (unit/UI tests, documentation, logging, performance, stability etc) will never be copied over. Because product doesn't understand them and assumes therefore that they are unimportant.
PS: I'd like to say this was a rare event for Q2, but no. Q4 and Q1 were so bad, we were made assurances from the director of engineering that he would fix this process for Q2. This is the new and improved process (I shit you not) that has resulted in nothing tangible.8
Got a LinkedIn message from a recruiter looking to know if I’m interested in a full stack developer role, to only work on front end. The requirement is that I know one of:
“go, node.js, rails, python, C# .NET, RoR etc”.
I wonder who it is that doesn’t have a clue, company or recruiter (or both?).
I’m actually going to reply to this one for fun to try figure out this mess (yes I’m that bored)21
I've been wondering for a while, how the backend my team has to use could have so many issues. I was convinced they had no alerting system in place and have been commenting on it for a while now, and complaining about it.
Was on a Zoom call with one of the backend devs today, he shared his screen and had his email open. I saw a folder he had setup called alerts, and sub folders under that. One of them was named the name of the service/app we are using ... it had over 360,000 un-reads ... and emails are automatically deleted after 4 months in my company.
So they have alerts setup, they just don't care ... problem solved. Enjoy your weekend folks!2
Sorry if I make a typo, my hands a still a little shaky, just had to stop myself from crying.
This morning I came in, opened my email, saw an automated response from Jira saying .... saying ..... saying the backend team provided details about their new endpoint.
After a year of screaming, they finally did it. It was so beautiful I fell to the floor and wept like a baby.
Thank you all for your support through this difficult time. Together we can accomplish anything!!!8
A song that perfectly captures my working life. Very beautiful, nearly brought a tear to my eye.
Me: Right, its Monday, time for a fresh start. Things have been unbearable, but i've nowhere else to go just yet. I gotta just dig deep, ignore everything bad and just get it done, It's all about positivity right? Lets just ignore the little things and keep moving.
*My morning so far, 2 hours in*
Remote dev: (timezone 5 hours earlier than me) Hey so whats the plan for this quarter?
Me: ... I posted a big detailed plan in the group chat on Friday night so you wouldn't be delayed ... but anyway, lets just move on. I need you to work on A, B and C. A is just copying what Android has already done, for B one of the backend guys working next to you is doing this, he'll be able to help you. C is all documented in the ticket.
Remote dev: cool thanks.
Local dev: So I was just chatting with remote dev ... yeah he told me he has no idea what he's suppose to do.
Me: ..... Ok i'll book a video call with him in the morning. Can't do it right now.
Remote dev: Hey i'm helping the BE team do some testing. I found a bug in Android. Homepage says theres no trips. But Offers screen says there is.
Me: Ok so just to confirm, The "available" offers screen has offers to accept, but the white notification on the homepage saying "You have X offers to accept" is not showing up?
Remote dev: Correct!
*debugging for 5 mins*
Remote dev: actually no, the "accepted" offers tab has offers, but the homepage says there are no upcoming offers to work on.
Me: ..... ok, thats very different ... but sure, let me have a look.
Me: Right so the BE are ... again ... sending down expired offers. Looks like the accepted tab isn't catching it and the homepage is.
Remote dev: Right i'll open a ticket for Android.
Me: ... and BE team.
Remote dev: why?
Me: ... because they once again have timezone issues. This keeps causing issues in random places. BE need to fix this everywhere.
Remote dev: right, i'll chat to them and see if they can fix it.
Product: So this ticket xxxxx is clear right?
Me: eh, kind of, so you want us to add feature X to user type A?
Me: right but I don't see anywhere talking about the time it will take to build the screen for feature X
Product: What do you mean the screen?
Me: ... well, feature X is only accessible on screen Y ... we would have to change screen Y to support user type A ... you know ... so they can ... use the feature
Product: .... hhhhmmm .... i suppose you are right. Well we can't just add screen Y, we'll have to add W and Z, it won't make sense without them.
Me: ... ok sure, but our estimates put us over for this quarter. I don't think we can just add in 3 screens.
Product: No this is a must have.
Me: Ok so we'll have to drop something else.
Product: hhhmmm, don't think we can ... let me get back to you.
Backend team invited me to a meeting at 6am my time on Friday.
... 2 hours into Monday ... there must be vodka around here somewhere1
So i've spent the day:
a) Finding evidence (again) of product not doing their job, to send on to one of my managers. So we can again discuss why she's still here.
b) Explaining to my iOS developer that although all the devs are in agreement that 2 of them are not pulling their weight and shouldn't be here ... they will definitely still be here because management actually want to keep our multi-timezone setup as they see it as beneficial. We, do not.
c) Having a meeting with another manager, in a different department. (Backstory, a member of their team has had many complaints filed against them by various members of the building, including one from my team). To let them know that my employee felt like you ignored her concerns and complaints and are going to allow this person pass their probation without considering the implications.
I hope to actually find some time in the reminder of the day to actually achieve something, rather than just telling skidmarks that they are in fact skidmarks.
... but probably won't due to 3 hours of pointless back to back meetings, where we answer the same few questions every week.
I really do love being a tech lead. So refreshing.
Debate (with rant-ish overtones):
FYI, while it is a debate, its a practiseSafeHex debate, which means there is a correct answer, i'm just interested in your responses/thoughts.
Ok lets kick off. So the remote team I work with had an opening for a new iOS developer (unrelated to anything to do with me). They interviewed and hired a guy based off his "amazing" take home challenge.
The challenge consists of 4 screens and was for a senior level position. For the challenge the interviewee created a framework (a iOS library) for each screen, included all the business logic for each screen inside, each one needs to be built separately, exposed some API/functions from each one and then created a main project to stitch it all together.
Now, my opinion is, this is highly unscalable and a ridiculous approach to take as it would add so much unnecessary overhead, for no benefit (I am correct btw).
The interviewee said he did it like this to "show off his skills and to stand out". The remote team loved it and hired him. The challenge said "show us the code standard you would be happy to release to production". I would argue that he has only demonstrated 1 extra skill, and in exchange delivered something that is unscalable, going to be a nightmare to automate and require huge on-boarding and a paradigm shift, for no reason. To me thats a fail for a senior to not realise what he's doing. This person will be required to work alone (in part), make architecture decisions, set the foundation for others etc. Having someone who is willing to just do mad shit to show off, is really not the type of person suited to this role.
Million dollar app/service idea.
Automatically reply to all LinkedIn inmail’s with “I don’t have any experience with that on my profile”.
Even without any NLP I estimate over a 90% success rate.12
Remote manager: Hey, that contractor you are working with that sits with me. We are thinking of sending him over to you guys, get him a visa, pay relocation and all that stuff and have him sit with you guys as a full time employee. What do you think?
Me: .... eh ... look I have to be honest, that guy is awful. He doesn't listen to me, constantly working on other things, and the architecture he forced onto the rest of the team is some of the worst i've ever seen.
RM: hhhmmmm, ok but what if we have him report to you, can you whip him into shape?
Me: Honestly I think theres too much effort involved. We are very short staffed. I'd prefer to hire someone else here who has more experience. Its a firm no from us on this guy.
RM: Ok, understood, thanks.
*2 weeks later*
Contractor: Hey guys, was chatting to my manager last week and he said the company is finally looking to convert me to a full time employee, and best of all he wants to move me over to sit with you guys. Isn't that great?
..... not really no7
Product sending an email: Can I confirm feature A is all set for its release on April 30th?
Me: ... what? no that feature is going out with Feature B, that was pushed back to June because of the server issue.
Product: No, the release plan document says April 30th for this.
Me: ... theres 6 copies of this doc now. Someone is after deleting my comments saying "releasing with Feature B". Oh look heres a link to another doc that says this. See Feb14th "Will go out with Feature B". This is because they are touching the same code, we can't separate them now without re-writing it.
*Me to myself*: Ha product are going to hate this, their shitty processes have finally caught up with them.
Other manager: So heres my plan for the app release x, y, z.
*Me to myself*: ... his plan? this is my app, I mange this. What the hell is this?
*reads email thread*
*Me to myself*: ... oh so product really didn't like my reply, took me off the thread, sent a response to all the other managers asking for alternatives, CC'ing upper management. The same upper management I had a private conversation with yesterday about how shit our product team are.
I'm going to enjoy writing this reply.13
Currently in the middle of quarterly planning (its been fun so far). Needs to be signed off by business today.
- My team has ~25 man weeks available in terms of capacity.
- Looking at only priority 0 tasks, last night we calculated the ask from product stands at 64.
- Including P1's, P2's etc. its well over 100 man weeks.
- Email was sent around from business with a list of tasks, asking which can be dropped, de-scoped etc.
Product (non technical) response this morning:
- This one can't take 2 weeks, its not that complicated.
- This one needs to stay, It was originally a Q1 task.
- Can we make this one smaller? (currently only a 3 week task)
- 14 comments on other teams items.
... ah perfect, that cut down the items by less than half. We are now ready for the deadline in 4 hours to have all this signed off on. Great job everyone. Thanks for all the insightful discussions. Go team!
10am: meeting invite for 9:30pm my time.
*decline with comment: can’t attend*
9:40pm: email, “is anyone from engineering going to attend?”
10:05pm: email, ok the results of the call were X, Y and Z. But we’ve been asked to supply architecture diagrams (which don’t exist). Can we do this today?
10:45pm: email, guys this is urgent can we do this ASAP!
... welcome to the new world bitches, bite me8
Me: well guys, after the 4th attempt and a week of waiting, I’ve gotten a response from the remote backend team about the errors affecting this release. Which are the same issues affecting the last release 2 months ago. The findings are: “there is in fact some issue with the API”.
I’d like to thank everyone who put in so much effort to get us to this momentous step forward. We can expect a fix any year now.
*equally sarcastic colleague on another team listening in*:
oh wow, this months long thing has just been “some issue” all this time? Well that’s fantastic. You should mark the ticket as “done” and reply “thank you” for all their hard work.
..... I laughed so hard at how ridiculous all this is and the joke, that I nearly did, hoping someone from product/business would have to review it1
Well I’ve had my LinkedIn status to open for a little while now. Time to check what exciting offers (me, an iOS developer / team lead) has received.
- Senior python engineer with multiple years machine learning experience.
- a job 3000 miles outside the only city I’ve marked myself as interested in.
- Architect for a .NET team.
- Senior UX Researcher.
- The same job for a bank 6 times. But each time they won’t initially give the name of the company. Only “my fav client to work with” until I respond.
... not much hope in this process12
Product replying to Jira ticket: We think this issue has been resolved. Can you please reach out to the user and confirm?
Customer care: User xxx has responded to say she "has given up in frustration, and the app simply doesn't work". She has requested to have her account deactivated. This user has requested to not be contacted any further by the program.
Hows your day going devrant? mines going VERY well6
Spent most of the day debugging issues with a new release. Logging tool was saying we were getting HTTP 400’s and 500’s from the backend. Couldn’t figure it out.
Eventually found the backend sometimes sends down successful responses but with statusCode 500 for no reason what so ever. Got so annoyed ... but said the 400’s must be us so can’t blame them for everything.
Turns out backend also sometimes does the opposite. Sends down errors with HTTP 200’s. A junior app Dev was apparently so annoyed that backend wouldn’t fix it, that he wrote code to parse the response, if it contained an error, re-wrote the statusCode to 400 and then passed the response up to the next layer. He never documented it before he left.
Saving the best part for last. Backend says their code is fine, it must be one of the other layers (load balancers, proxies etc) managed by one of the other teams in the company ... we didn’t contact any of these teams, no no no, that would require effort. No we’ve just blamed them privately and that’s that.
Backend: Sorry the fix we had isn't going to work. Turns out app is sending an "undelivered" status after you call the API where you claimed we had an issue. This is in fact the cause, please address it.
Me: We do not have an "undelivered" status anywhere in our codebase. We do not do this.
Backend: *CC product* turns out this issue is only affecting 0.1% of users, its very minimal. Lets push ahead with the release.
Product: Ok, lets go live.
Me: ... ... ... we all just gonna ignore that "undelivered" bullshit? ... ok ... very stable release, here we go.5
Me: I just can’t keep working these hours. I’m on calls and emails 8pm and 9pm 4 times a week.
Boss: ok, but come on, Office X does be on for the same calls but it’s midnight their time.
Me: ... How does that make anything better?5
Just found out the backend developer I’m always complaining about. The one who:
- Can’t implement OAuth, and we have to have app users login every 24 hours because we have no way to generate new refresh tokens.
- Who used the phrase “your time zone is not my concern” to avoid building something that would let us inject test data.
- Who’s been debugging a critical bug affecting many users since December.
- Who can’t conduct API tests from external internet (you know, like the way the app will be in the wild) because it takes too much time.
- Who replies to Jira tickets only on a blue moon.
- Who has been 90% of the reason for my blood pressure situation
... is a fucking principal engineer in this company. In pecking order, his opinion should be considered more valuable than mine and everyone on my team.
I’ve just lost the will to live. How are big organizations THIS bad. Seriously, what promotion discussion did he go into
“So, you are a complete and utter bastard, nobody can stand to speak to you and you’ve yet to deliver anything of worth that actually works, over the course of several years ... ... ... interested in having your pay doubled??”20