Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Search - "not enough testing"
-
Oh, man, I just realized I haven't ranted one of my best stories on here!
So, here goes!
A few years back the company I work for was contacted by an older client regarding a new project.
The guy was now pitching to build the website for the Parliament of another country (not gonna name it, NDAs and stuff), and was planning on outsourcing the development, as he had no team and he was only aiming on taking care of the client service/project management side of the project.
Out of principle (and also to preserve our mental integrity), we have purposely avoided working with government bodies of any kind, in any country, but he was a friend of our CEO and pleaded until we singed on board.
Now, the project itself was way bigger than we expected, as the wanted more of an internal CRM, centralized document archive, event management, internal planning, multiple interfaced, role based access restricted monster of an administration interface, complete with regular user website, also packed with all kind of features, dashboards and so on.
Long story short, a lot bigger than what we were expecting based on the initial brief.
The development period was hell. New features were coming in on a weekly basis. Already implemented functionality was constantly being changed or redefined. No requests we ever made about clarifications and/or materials or information were ever answered on time.
They also somehow bullied the guy that brought us the project into also including the data migration from the old website into the new one we were building and we somehow ended up having to extract meaningful, formatted, sanitized content parsing static HTML files and connecting them to download-able files (almost every page in the old website had files available to download) we needed to also include in a sane way.
Now, don't think the files were simple URL paths we can trace to a folder/file path, oh no!!! The links were some form of hash combination that had to be exploded and tested against some king of database relationship tables that only had hashed indexes relating to other tables, that also only had hashed indexes relating to some other tables that kept a database of the website pages HTML file naming. So what we had to do is identify the files based on a combination of hashed indexes and re-hashed HTML file names that in the end would give us a filename for a real file that we had to then search for inside a list of over 20 folders not related to one another.
So we did this. Created a script that processed the hell out of over 10000 HTML files, database entries and files and re-indexed and re-named all this shit into a meaningful database of sane data and well organized files.
So, with this we were nearing the finish line for the project, which by now exceeded the estimated time by over to times.
We test everything, retest it all again for good measure, pack everything up for deployment, simulate on a staging environment, give the final client access to the staging version, get them to accept that all requirements are met, finish writing the documentation for the codebase, write detailed deployment procedure, include some automation and testing tools also for good measure, recommend production setup, hardware specs, software versions, server side optimization like caching, load balancing and all that we could think would ever be useful, all with more documentation and instructions.
As the project was built on PHP/MySQL (as requested), we recommended a Linux environment for production. Oh, I forgot to tell you that over the development period they kept asking us to also include steps for Windows procedures along with our regular documentation. Was a bit strange, but we added it in there just so we can finish and close the damn project.
So, we send them all the above and go get drunk as fuck in celebration of getting rid of them once and for all...
Next day: hung over, I get to the office, open my laptop and see on new email. I only had the one new mail, so I open it to see what it's about.
Lo and behold! The fuckers over in the other country that called themselves "IT guys", and were the ones making all the changes and additions to our requirements, were not capable enough to follow step by step instructions in order to deploy the project on their servers!!!
[Continues in the comments]26 -
Bought a Logitech G13 a few years ago knowing that the Linux support isn't good. Thought fuck it, I'll develop something for it.
That didn't go as planned. Tried numerous times to write something but the fucker is proprietary and I couldn't figure out how to get data from it.
Decided to try it again tonight with a "You're not winning this time, motherfucker!" mindset.
Figured out how to read data from it, looked long enough at the data coming in to discover patterns and started programming while testing my ass off.
Two hours later I have "mapped" all specific data points that the device sends to the hardware keys and now, whenever I have the device connected and run the program (node, no kidding), it displays which key I'm pressing when I press a key!
I finally fucking won.23 -
Testivus On Test Coverage
Early one morning, a programmer asked the great master:
“I am ready to write some unit tests. What code coverage should I aim for?”
The great master replied:
“Don’t worry about coverage, just write some good tests.”
The programmer smiled, bowed, and left.
...
Later that day, a second programmer asked the same question.
The great master pointed at a pot of boiling water and said:
“How many grains of rice should I put in that pot?”
The programmer, looking puzzled, replied:
“How can I possibly tell you? It depends on how many people you need to feed, how hungry they are, what other food you are serving, how much rice you have available, and so on.”
“Exactly,” said the great master.
The second programmer smiled, bowed, and left.
...
Toward the end of the day, a third programmer came and asked the same question about code coverage.
“Eighty percent and no less!” Replied the master in a stern voice, pounding his fist on the table.
The third programmer smiled, bowed, and left.
...
After this last reply, a young apprentice approached the great master:
“Great master, today I overheard you answer the same question about code coverage with three different answers. Why?”
The great master stood up from his chair:
“Come get some fresh tea with me and let’s talk about it.”
After they filled their cups with smoking hot green tea, the great master began to answer:
“The first programmer is new and just getting started with testing. Right now he has a lot of code and no tests. He has a long way to go; focusing on code coverage at this time would be depressing and quite useless. He’s better off just getting used to writing and running some tests. He can worry about coverage later.”
“The second programmer, on the other hand, is quite experience both at programming and testing. When I replied by asking her how many grains of rice I should put in a pot, I helped her realize that the amount of testing necessary depends on a number of factors, and she knows those factors better than I do – it’s her code after all. There is no single, simple, answer, and she’s smart enough to handle the truth and work with that.”
“I see,” said the young apprentice, “but if there is no single simple answer, then why did you answer the third programmer ‘Eighty percent and no less’?”
The great master laughed so hard and loud that his belly, evidence that he drank more than just green tea, flopped up and down.
“The third programmer wants only simple answers – even when there are no simple answers … and then does not follow them anyway.”
The young apprentice and the grizzled great master finished drinking their tea in contemplative silence.
Found on stack overflow https://stackoverflow.com/questions...8 -
Today was my last day of work, tomorrow i have officially left that place. It's a weird feeling because i'm not certain about the future.
The job was certainly not bad, and after all i read on devrant i'm beginning to believe it was one of the better ones. A nice boss, always something to eat/drink nearby, a relaxed atmosphere, a tolerance for my occasionally odd behaviour and the chance to suggest frameworks. Why i would leave that place, you ask? Because of the thing not on the list, the code, that is the thing i work with all the time.
Most of the time i only had to make things work, testing/refactoring/etc. was cut because we had other things to do. You could argue that we had more time if we did refactor, and i suggested that, but the decision to do so was delayed because we didn't have enough time.
The first project i had to work on had around 100 files with nearly the same code, everything copy-pasted and changed slightly. Half of the files used format a and the other half used the newer format b. B used a function that concatenated strings to produce html. I made some suggestions on how to change this, but they got denied because they would take up too much time. Aat that point i started to understand the position my boss was in and how i had to word things in order to get my point across. This project never got changed and holds hundreds of sql- and xss-injection-vulnerabilities and misses access control up to today. But at least the new project is better, it's tomcat and hibernate on the backend and react in the frontend, communicating via rest. It took a few years to get there, but we made it.
To get back to code quality, it's not there. Some projects had 1000 LOC files that were only touched to add features, we wrote horrible hacks to work with the reactabular-module and duplicate code everywhere. I already ranted about my boss' use of ctrl-c&v and i think it is the biggest threat to code quality. That and the juniors who worked on a real project for the first time. And the fact that i was the only one who really knew git. At some point i had enough of working on those projects and quit.
I don't have much experience, but i'm certain my next job has a better workflow and i hope i don't have to fix that much bugs anymore.
In the end my experience was mostly positive though. I had nice coworkers, was often free to do things my way, got really into linux, all in all a good workplace if there wasn't work.
Now they dont have their js-expert anymore, with that i'm excited to see how the new project evolves. It's still a weird thing to know you won't go back to a place you've been for several years. But i still have my backdoor, but maybe not. :P16 -
Not a rant, but I found this funny enough to share.
About two weeks ago, I’m contacted by a third party development firm that is responsible for building the next iteration of a control board were are developing. Alongside build of the PCB they were scoped to flash the firmware and verify all connected components.
During the call, they tell me they don’t have the resources to build our testing environment with the Ansible script I provided, and they don’t know if the updates they have made will work with our control system. Ugh...really...
I attempt to walk them through the 3 pretty simple commands to launch the playbook. Instead of listening, their project manager insists that I need to load up the environment and send them a ready to go system.
I quickly load up a RaspberryPi and prepare it for shipping. I hand the box to our shipping clerk and fill out the shipping request documentation. Then about a week goes by and this is where the story really begins.
I get an email from the same rep asking where the environment is, and I head down to the warehouse to inquire where the RaspberryPi might be. After speaking with the head clerk, we can’t seem to track down the package. I’m assured that they will find the Pi and send me the shipment update.
I pass the information along and after about a day and a half I still didn’t receive word back from the warehouse team. I load up another Pi and head back down to the warehouse. I follow up with the warehouse staff. They inform me that they have not been able to locate my package and another warehouse worker is called over. He says he hasn’t seen it, but they they were having a food day that day and he thinks more than likely someone ate it.
Like it didn’t even click at first but after a few seconds I realize that these guys have literally been looking for a pie for the past two days...and I JUST DIE.
After the 5 or so minutes of laughing I show them the newly flashed RaspberryPi, and of course they know exactly where the original one was.
It’s shipped out now, but wow. Also, it turns out the PCB manufacturing company didn’t even really need this and it was all a guise to hide that they are behind schedule and that they will not be able to finish the work scoped. FML!6 -
Lads, I will be real with you: some of you show absolute contempt to the actual academic study of the field.
In a previous rant from another ranter it was thrown up and about the question for finding a binary search implementation.
Asking a senior in the field of software engineering and computer science such question should be a simple answer, specifically depending on the type of job application in question. Specially if you are applying as a SENIOR.
I am tired of this strange self-learner mentality that those that have a degree or a deep grasp of these fundamental concepts are somewhat beneath you because you learned to push out a website using the New Boston tutorials on youtube. FOR every field THAT MATTERS a license or degree is hold in high regards.
"Oh I didn't go to school, shit is for suckers, but I learned how to chop people up and kinda fix it from some tutorials on youtube" <---- try that for a medical position.
"Nah it's cool, I can fix your breaks, learned how to do it by reading blogs on the internet" <--- maintenance shop
"Sure can write the controller processing code for that boing plane! Just got done with a low level tutorial on some websites! what can go wrong!"
(The same goes for military devices which in the past have actually killed mfkers in the U.S)
Just recently a series of people were sent to jail because of a bug in software. Industries NEED to make sure a mfker has aaaall of the bells and whistles needed for running and creating software.
During my masters degree, it fucking FASCINATED me how many mfkers were absolutely completely NEW to the concept of testing code, some of them with years in the field.
And I know what you are thinking "fuck you, I am fucking awesome" <--- I AM SURE YOU BLOODY WELL ARE but we live in a planet with billions of people and millions of them have fallen through the cracks into software related positions as well as complete degrees, the degree at LEAST has a SPECTACULAR barrier of entry during that intro to Algos and DS that a lot of bitches fail.
NOTE: NOT knowing the ABSTRACTIONS over the tools that we use WILL eventually bite you in the ASS because you do not fucking KNOW how these are implemented internally.
Why do you think compiler designers, kernel designers and embedded developers make the BANK they made? Because they don't know memory efficient ways of deploying a product with minimal overhead without proper data structures and algorithmic thinking? NOT EVERYTHING IS SHITTY WEB DEVELOPMENT
SO, if a mfker talks shit about a so called SENIOR for not knowing that the first mamase mamasa bloody simple as shit algorithm THROWN at you in the first 10 pages of an algo and ds book, then y'all should be offended at the mkfer saying that he is a SENIOR, because these SENIORS are the same mfkers that try to at one point in time teach other people.
These SENIORS are the same mfkers that left me a FUCKING HORRIBLE AND USELESS MESS OF SPAGHETTI CODE
Specially to most PHP developers (my main area) y'all would have been well motherfucking served in learning how not to forLoop the fuck out of tables consisting of over 50k interconnected records, WHAT THE FUCK
"LeaRniNG tHiS iS noT neeDed!!" yes IT fucking IS
being able to code a binary search (in that example) from scratch lets me know fucking EXACTLY how well your thought process is when facing a hard challenge, knowing the basemotherfucking case of a LinkedList will damn well make you understand WHAT is going on with your abstractions as to not fucking violate memory constraints, this-shit-is-important.
So, will your royal majesties at least for the sake of completeness look into a couple of very well made youtube or book tutorials concerning the topic?
You can code an entire website, fine as shit, you will get tested by my ass in terms of security and best practices, run these questions now, and it very motherfucking well be as efficient as I think it should be(I HIRE, NOT YOU, or your fucking blog posts concerning how much MY degree was not needed, oh and btw, MY degree is what made sure I was able to make SUCH decissions)
This will make a loooooooot of mfkers salty, don't worry, I will still accept you as an interview candidate, but if you think you are good enough without a degree, or better than me (has happened, told that to my face by a candidate) then get fucking ready to receive a question concerning: BASIC FUCKING COMPUTER SCIENCE TOPICS
* gays away into the night53 -
!rant but a story
This happened today. Sorry for long post. A manager from another team in development team, I'll call him junkfellow, called me very very late last night to help them solve an issue in our application's test environment that blocking them from doing testing. They apparently doing integration testing with our application. Now said test environment is not even prepared by our team. We are development team and this test environment prepared by our application's support team. So I politely told junkfellow to get in touch with our support team counterpart as I am from development team. And he began shout at me
junkfellow: "WHY DO YOU THINK I'M FUCKING CALL YOU? IT'S BECAUSE I CAN'T FUCKING REACH ANYONE FROM SUPPORT!"
me: "With due respects sir I have no instructions to assist you and your team in your testing"
junkfellow: "THEN WHAT GOOD ARE YOU? IF YOU DON"T GET ONLINE NOW I WILL FUCKING ESCALATE YOU TO CW!!!"
We all know who CW is and he can make some people life very hard and I didn't want to call my boss so late so I quickly went online and spent the next 4hrs supporting their testing. Next morning I told my boss what happened and he scolded me for not calling him last night. He dropped an email to junkfellow's boss about junkfellow being "unacceptable attitude, disrespectful and threatening to escalate my team mates". My boss always refer to us as team mates, not his staff or his team member.
Then in few minutes, someone walking like a school bully with his chest out came to my boss place and announced himself (he is junkfellow). I say announce because he talking like he wanted everyone to know who is he. My boss stood up promptly, greeted good morning, introduce himself, shook junkfellow hand and sat down. Still young, maybe in late 20's or even younger than me. junkfellow talking to my boss loud enough for most of us to hear. Everyone's neck suddenly long like meerkat and listening:
junkfellow looking down to my boss who is sitting down: "How dare you send email like that to my boss? We are both managers you should act like one, you have a problem with me then you talk to me. You don't bypass me and go directly to my boss. You didn't even give me face!"
my boss sitting down: "So you didn't even ask your boss before picking a fight."
*junkfellow suddenly look confused*
my boss still sitting down talking calm with poker face: "I did give you face. You think by going to your boss I bypassed you and went one level up? No I went one level down!"
junkfellow still look confused and then slowly realized what my boss meant. Now he is staring at floor and can't look my boss in eye after he realized he is screwed!
my boss now standing up: "You treat my team mates like that againi or ask them to do something without my knowledge and I will talk to your boss' boss about it"
boss to me: "Hey tollywood! junkfellow here sincerely regrets what he did last night and wants to apologize to you in person" and boss' poker face turned to his familiar smirk
junkfellow immediately came to me, said "it's ok you no need to stand up", he sat down in a squat and apologized repeatedly. He really looked like he was about to cry and for a moment I pity him. But then I remember what he did and I just enjoyed the moment! Was pure gold :D :D :D11 -
At one of my former jobs, I had a four-day-week. I remember once being called on my free Friday by an agitated colleague of mine arguing that I crashed the entire application on the staging environment and I shall fix it that very day.
I refused. It was my free day after all and I had made plans. Yet I told him: OK, I take a look at it in Sunday and see what all the fuzz is all about. Because I honestly could fathom what big issue I could have caused.
On that Sunday, I realized that the feature I implemented worked as expected. And it took me two minutes to realize the problem: It was a minor thing, as it so often is: If the user was not logged in, instead of a user object, null got passed somewhere and boom -- 500 error screen. Some older feature broke due to some of my changes and I never noticed it as while I was developing I was always in a logged in state and I never bothered to test that feature as I assumed it working. Only my boss was not logged in when testing on the stage environment, and so he ran into it.
So what really pushed my buttons was:
It was not a bug. It was a regression.
Why is that distinction important?
My boss tried to guilt me into admitting that I did not deliver quality software. Yet he was the one explicitly forbidding me to write tests for that software. Well, this is what you get then! You pay in the long run by strange bugs, hotfixes, and annoyed developers. I salute you! :/
Yet I did not fix the bug right away. I could have. It would have just taken me just another two minutes again. Yet for once, instead of doing it quickly, I did it right: I, albeit unfamiliar with writing tests, searched for a way to write a test for that case. It came not easy for me as I was not accustomed to writing tests, and the solution I came up with a functional test not that ideal, as it required certain content to be in the database. But in the end, it worked good enough: I had a failing test. And then I made it pass again. That made the whole ordeal worthwhile to me. (Also the realization that that very Sunday, alone in that office, was one of the most productive since a long while really made me reflect my job choice.)
At the following Monday I just entered the office for the stand-up to declare that I fixed the regression and that I won't take responsibility for that crash on the staging environment. If you don't let me write test, don't expect me to test the entire application again and again. I don't want to ensure that the existing software doesn't break. That's what tests are for. Don't try to blame me for not having tests on critical infrastructure. And that's all I did on Monday. I have a policy to not do long hours, and when I do due to an "emergency", I will get my free time back another day. And so I went home that Monday right after the stand-up.
Do I even need to spell it out that I made a requirement for my next job to have a culture that requires testing? I did, and never looked back and I grew a lot as a developer.
I have familiarized myself with both the wonderful world of unit and acceptance testing. And deploying suddenly becomes cheap and easy. Sure, there sometimes are problems. But almost always they are related to infrastructure and not the underlying code base. (And yeah, sometimes you have randomly failing tests, but that's for another rant.)9 -
rant? rant!
I work for a company that develops a variety of software solutions for companies of varying sizes. The company has three people in charge, and small teams that each worked on a certain project. 9 months ago I joined the company as a junior developer, and coincidentally, we also started working on our biggest project so far - an online platform for buying groceries from a variety of vendors/merchants and having them be delivered to your doorstep on the same day (hadn't been done to this scale in Estonia yet). One of the people from management joined the team working on that. The company that ordered this is coincidentally being run by one of the richest men in Estonia. The platform included both the actual website for customers to use, a logistics system for routing between the merchants, the warehouse, and the customers, as well as a bunch of mobile apps for the couriers, warehouse personnel, etc. It was built on Node.js with Hapi (for the backend stuff), Angular 2 (for all the UIs, including the apps which are run through a WebView wrapper), and PostgreSQL (for the database). The deadline for the MVP we (read: the management) gave them, but we finished it in about 7 months in a team of five.
The hours were insane, from 10 AM to 10 PM if lucky. When we weren't lucky (which was half of the time, if not more), we had to work until anywhere from 12 PM to 3 AM, sometimes even the whole night. The weekends weren't any better, for the majority of the time we had to put in even more extra hours on the weekends. Luckily, we were paid extra for them, but the salary was no way near fair (the majority of the team earned about 1000€/mo after taxes in a country where junior developers usually earn 1500€/month). Also because of the short deadline given to us, we skipped all the important parts like writing tests, doing CI, code reviews, feature branching/PR's, etc. I tried pushing the team and the management to at least write tests and make feature branches/PRs, but the management always told me that there wasn't enough time to coordinate and work on all that, that we'll do that after launching the MVP, etc. We basically just wrote features, tested them by hand, and pushed into the "test" branch which would later get tested and merged into master.
During development, one of the other juniors managed to write the worst kind of Angular code you could imagine - enormous amounts of duplication, no reusable components (every view contained the everything used in the view, so popups and other parts that should logically be reusable were in every view separately), fuck - even the HTML was broken (the most memorable for me were the "table > tr > div > td" ones, but that's barely scratching the surface). He left a few months into the project, and we had to build upon his shit, ever so slightly trying to fix the shit he produced. This could have definitely been avoided if we did code reviews.
A month after launching the MVP for internal testing, the guy working on the logistics system had burned out and left the company (he's earning more than twice the salary he got here, happy for him, he is a great coder and an even better team player). This could have been avoided if this project had been planned better, but I can't really blame them, since it was the first project they had at this scale (even though they had given longer deadlines for projects way smaller than this).
After we finished and launched the MVP, the second guy from management joined, because he saw we needed extra help. Again I tried to push us into investing the time to write tests for the system (because at this point we had created an unstable cluster fuck of a codebase), but again to no avail. The same "no time, just test it manually for now, we'll do that later when we have time" bullshit from management.
Now, a few weeks ago, the third guy from management joined. He saw what a disaster our whole project was. Him joining was simply a blessing from the skies. He started off by writing migrations using sequelize. I talked to him about writing tests and everything, and he actually listened. He told me that I'm gonna be the one writing them, and also talked to the rest of management about it. I was overjoyed. I could actually hear the bitterness in the voices of the rest of management when they told me how to write the tests, what to test, etc. But I didn't give a flying rat's ass, I was hapi.
I was told to start off by writing a smoke test for the whole client flow using Puppeteer. I got even happier, since I was finally able to again learn new things (this stopped at about 4 or 5 months into the project).
I'm using jest as the framework and started writing the tests in TypeScript. Later I found a library called jest-extended, but it didn't have type defs, so I decided to write them and, for the first time in my life, contribute to the open source community.19 -
Ok, so I have a SAAS website where users pay a daily fee to use my platform as there fundraiser landing page.
A new client comes, asks for a discount, and got a 50% off because his brother was a previous client.
Him: Can you please add a list of the days of the year so a donor can donate a day?
Me: Sure, sounds like a good idea, and will probably take me about a week to implement with testing etc. And so I want $$ (hourly rate * one week) for the work.
Him: Don't bluff me I understand a bit in programming, it shouldn't take you more than an hour, and I am paying you, so you should do it for free.
Me: Ok, here is a fair deal, since you understand in programming, build it for me, I give you two weeks and I will pay you double what I am asking for.
Him: I don't understand enough to do it myself, I just estimated how much work it is.
Me: Forget about it, if you want me to build you this feature, you pay. If not you can go to my competition happily.
Who needs bad clients at all?
Why do they think they know everything?
And why don't they understand that time is money?5 -
I'm 20, and I consider myself to be as junior as they come. I only started programming seriously in June 2016,and since then, I've been doing mainly Android Work, and making my own servers and backends(using AWS/Firebase nd stuff).
For the first time in life, I was approached by a recruiter for a company on linkedIn. They "stumbled upon" my Github profile and wanted to see if I was interested in an internship opportunity. This company is an early stage start up, by that I mean a dude with an idea calling himself the CEO and a guy who "runs a tech blog" and only knows college level C programming (explaination follows).
So they want me to make the app for their startup. and for that, I ws first asked to solve a couple problems to prove my competence and a "technical interview" followed.
They gave me 3 questions, all textbook, GCD of 2 numbers, binary search and Adding an element to the linked List, code to be written on a piece of paper. As the position was that of an Android Developer, I assumed that Java should be the language of choice. Assumed because when I asked, the 'tech blogger' said, yeah whatever.
But wait, that ain't all, as soon as I was done, Mr. Blogger threw a fit, saying I shouldn't assume and that I must write it in C. I kept my cool (I'm not the most patient person), and wrote the whole thing in C.
He read it, and asked me what I've written and then told me how wrong I was to write 2 extra lines instead of recursion for GCD. I explained that with numbers large enough, we run the risk of getting a stackoverflow and it's best to apply non recursive solution if possible. He just heard stackoverflow and accused me of cheating. I should have left right then, but I don't know why, I apologized and again, in detail explained what was happening to this fucktard. Once this was done, He asked me how, if I had to, I'd use this exact code in my Android App. I told him that Id rather write this in Java/Kotlin since those are the languages native to Android apps. I also said that I'd export these as a Library and use JNI for the task. (I don't actually know how, I figured I can study if I have to).
Here's his reply, "WTF! We don't want to make the app in Java, we will use C (Yeh, not C++, C). and Don't use these fancy TOOLS like JNI or Kotlin in front of me, make a proper application."
By this I was clear that this guy is not fit to be technical lead and that I should leave. I said, "Sir, I don't know how, if even possible, can we make an Android App purely in C. I am sorry, but this job is not for me".
I got up and was about to leave the room, when we said, "Yeah okay, I was just testing you".
Yeah right, the guy's face looked like a howling monkey when I said Library for C, and It has been easier for me to explain code to my 10 year old cousin that this dumbfuck.
He then proceeded to ask me about my availability, and I said that I can at max to 15-20 hours a week since my college schedule is pretty tight. I asked me to get him a prototype in 2 months and also offered me a full time job after I graduate. (That'd be 2 years from now). I said thank you for the offer, but I am still not sure of I am the right person for this job.
He then said, "Oh you will be when I tell you your monthly stipend."
I stopped for a second, because, money.
And then he proceeded to say 2 words which made me walk out without saying a single word.
"One Thousand".
I live in India, 1000 INR translates to roughly $15. I made 25 times that by doing nothing more than add a web view to an activity and render a company's responsive website in it so it looks like an app.
If this wasn't enough, the recruiter later had the audacity to blame me for it and tell me how lucky I am to even get an offer "so good".
Fuck inexperienced assholes trying shit they don't understand and thinking that the other guy is shitsworth.10 -
Root encounters HR at her new job.
So, I left my job a few weeks ago. I was pretty sad about it, so I didn't want to write anything about it. It was a great place to work, with great managers, decent coworkers, and interesting work. I also had free reign over how I built things, what to improve, etc. Within about four months, I authored over half of the total commits on their backend repo, added a testing suite with 90% coverage, significantly improved the security (more accurately: added security), etc. but I got a job offer that allowed me to work remotely, and make well over six figures (usd). I couldn't turn it down, even though I wanted to. So, I left. I'm still genuinely sad about that. I had emotions and everything. 🙁 I stayed on long enough to finish the last of the features for their new product launch, and make sure everything was stable. I'm welcome back whenever, though they don't want to have remote employees, and I want to move, so. that's probably not going to happen. sigh.
Anyway, I started my new job this week. Rented an office (read: professional closet) and everything! It's been veritable mountains of HR paperwork so far. That's all I've done besides some accounts setup. I've seriously only worked on and completed one ticket so far in two and a half days, and I still have six documents/contracts to sign! (and benefits; that'll probably take my weekend.)
But getting an I9 thing notarized? Apparently I only have three days before I'm legally unemployable by them or something, idk. HR made it sound ridiculously dire and important, and reminded me like five or more times. I figured it was just some notary service; that takes like 10 minutes, right? So I put it off until my second day so I didn't have to disappear in the middle of my first day. Anyway, I called a bunch of notary services on day 2, and apparently only like 5% of them both do notary services this time of year and aren't booked full. And of those, probably another 5% will notarize I9 documents.. No idea why it's rare, but whatever, I'm not a notary.
The HR lady assured me that I didn't need any special documents; I should just go there, present my IDs, and the notary will provide or draft documents for everything else. Totally doesn't sound right, but fine; I'm not a notary nor will I ever work in HR, so I'm not very knowledgeable about this. So, against my better judgement I decided to just go anyway. I called around and finally found a place that wasn't closed, busy, or refusing, and drove over there. Waited. Waited. Waited. Notary lady was super slow in every single action. (I should mention that it's now 10am, and I have a meeting with the Senior VP of Engineering [a stern, stubborn old goat who enjoys making people feel inadequate] at 12:30pm.) The notary lady looks like she's an npc updating in slow motion (maybe at 0.25x speed?) and can't seem to understand what I need. Eventually, she tells me exactly what I had assumed: if there's no document, she can't notarize said document, and she doesn't have an I9 for the company I'm trying to work for. (like, duh.) So I thank her for proving the flow of time is variable, which she ignores in slow motion, and drive back home. It's now about 11.
I message the same HR lady, and the useless wench gawks in surprise and says she's never heard of that ridiculous request before. It took prodding to get her to respond every time, but after some (very slow) back and forth, she says she wants to call the notary personally and ask what they need. I waited around for another response that never came, and eventually just drove to the notary place again to have them notarize the required ID documents. That plus my chat history with HR should be enough to show that I bloody well tried, and HR just shit the bed instead. I finally got them notarized at like 12:10, and totally broke the speed limit the entire way to the office, found the last remaining parking spot, and made it to my office just in time for the meeting. seriously, less than two minutes to spare. Meeting was interesting (mostly about security), but totally made me facepalm, shout "Seriously!? What the hell are you thinking!?" and make slapping motions at some of the people talking. I will probably rant about that next.
But anyway, I'm willing to bet that the useless wench won't get back to me before the notary closes, if at all, and will somehow try to blame it completely on me if I bring it up again. Passive aggressive bitch. She's probably thinking: "If I don't help her with these mandatory legal processes, it'll be her fault she didn't get them done in time. I mean, they're so easy! She's just doing it wrong." I fucking hate HR.13 -
The riskiest dev choice...
How about "The riskiest thing you've done as a dev"? I have a great entry for that. and I suppose it was my choice to build the feature afterall.
I was working on an instance of a small MMO at a game company I worked for. The MMO boasted multiple servers, each of them a vastly different take on the base game. We could use, extend, or outright replace anything we wanted to, leading to everything from Zelda to pokemon to an RP haven to a top-down futuristic counterstrike. The server in this particular instance was a fantasy RPG, and I was building it a new leveling and experience system with most of the trimmings. (Talents, feats/perks, etc. were in a future update.)
A bit of background, first: the game's dev setup did not have the now-standard dev/staging/prod servers; everything ran on prod, devs worked on prod, players connected and played on prod, etc. Worse yet, there was no backup system implemented -- or not really. The CTO was really the only person with sufficient access. The techy CEO did as well, but he rarely dealt with anything technical except server hardware, occasionally. And usually just to troll/punish us devs (as in "Oops ! I pulled the cat5 ! ;)"). Neither of them were the most reliable of people, either. The CTO would occasionally remote in and make backups of each server -- we assumed whenever he happened to think of it -- and would also occasionally do it when asked, but it could take him a week, sometimes even up to a month to get around to it. So the backups were only really useful for retreiving lost code and assets, not so much for player data.
The lack of reliable backups and the lack of proper testing grounds (among the plethora of other issues at the company) made for an absolutely terrible dev setup, but that's just how it was, and that's what we dealt with. We were game devs, afterall. Terrible or not, we got to make games! What more could you ask for!? It was amazing and terrible and wonderful and the worst thing ever, all at the same time. (and no, I'm not sharing the company name, but it isn't EA or Nexon, surprisingly 😅)
Anyway, back to the story! My new leveling system also needed to migrate players' existing data, so... you can see where this is going.
I did as much testing and inspection of my code as I could, copied it from a personal dev script to the server's xp system, ... and debated if I really wanted to click [Apply]. Every time I considered it, I went back to check another part or do yet more testing. I ended up taking like 40 minutes to finally click it.
And when I did... that was the scariest button press of my life. And the scariest three seconds' wait afterwards. That one click could have ruined every single player's account, permanently lost us players ...
After applying it, I immediately checked my character to see if she was broken, checked the account data for corruption or botched flags, checked for broken interactions with the other systems....
Everything ended up working out perfectly, and the players loved all of the new features. They had no idea what went into building them, and certainly had no idea of what went into applying them, or what could have gone wrong -- which is probably a good thing.
Looking back, that entire environment was so fragile, it's a wonder things didn't go horribly wrong all the time. Really, they almost never did. Apocalypses did happen, but were exceedingly rare, and were ususally fixed quickly. I guess we were all super careful simply because everything was so fragile? or the decent devs were, at least. We never trusted the lessers with access 😅 at least on the main servers where it mattered. Some of the smaller servers... well, we never really cared about those.
But I'm honestly more surprised to realize I've never had nightmares of that button click. It was certainly terrifying enough.
But yay! Complete system overhaul and migration of stored and realtime player data! on prod! With no issues! And lots of happy players! Woooooo!
Thinking back on it makes me happy 😊rant deploying straight to prod prod prod prod dev server? dev on prod you chicken migration on prod wk149 git? who's a git? you're a git! scariest deploy ever game development1 -
!!office drama
I haven't been around much in recent weeks. Due to family illness, christmas shopping, dealing with estranged parents, and brooding over the foregoing, I haven't had a lot of time or energy left to myself.
tl;dr: The CTO ("API Guy") is ostensibly getting fired, and I might be taking over his job. I don't know if I should accept, try to stave this off, or simply flee.
------
Anyone who has been following my recent rants knows that API Guy is my boss, and he often writes terrible code. It's solid and unbreakable, but reading it is a *nightmare.* One of our applications is half the length of Leo Tolstoy's War and Peace, and it's difficult to tell what code is live and what amounts to ancient, still-active landmines. This is one application; we have several, most of which I've never even looked at.
Ostensibly the code is so terrible because the company grew extremely quickly, and API Guy needed to cram in lots of unexpected / planned-against features. From what I can see, that seems about right, but I haven't checked timeframes [because that's a lot of work!].
Here's a brief rundown of the situation.
- API Guy co-founded the company with the CEO.
- CEO and API Guy have been friends for a long time.
- CEO belives the company will fail with API Guy as head of tech.
- They could just be testing me; I have zero way of knowing. API Guy seems totally oblivious, and CEO seems sincere, so this feels pretty doubtful.
- CEO likes pushing people around. CEO believes he can push me around. API Guy doesn't budge. (I probably won't, either, except to change task priorities.)
- API Guy's code is huge and awful, but functional.
- API Guy is trying to clean up the mess; CEO doesn't understand (maybe doesn't care).
- Literally nobody else knows how the code works.
- Apart from API Guy and myself, the entire company is extroverted sales people.
- None of these sales people particularly like me.
- Sales people sell and sell and sell without asking development if they can pull enough magic features out of their hat to meet the arbitrary saleslines. (because the answer is usually no)
- If I accept, I would be the sole developer (at first) and responsible for someone else's mountain of nightmarish code, and still responsible for layering on new features at the same pace as he. Pay raise likely, but not guaranteed.
- My getting the position is contingent upon the CEO and the investors, meaning it's by no means guaranteed.
- If I don't accept, likely API Guy will be replaced with someone else of unknown ability, who doesn't know the code, and whom I must answer to regardless. Potentially OK, potentially a monumental disaster.
Honestly, it feels like I'm going to be screwed no matter what course I choose.
Perhaps accepting is slightly better?
The best would be to assume the position of CTO and keep API Guy around -- but that would feel like an insult to him. I doubt he'd be okay with it. But maybe. Who knows? I doubt the CEO would seriously consider that anyway.
I feel like a lamb between a dim, angry rhino, and an oblivious one.23 -
Let the student use their own laptops. Even buy them one instead of having computers on site that no one uses for coding but only for some multiple choice tests and to browse Facebook.
Teach them 10 finger typing. (Don't be too strict and allow for personal preferences.)
Teach them text navigation and editing shortcuts. They should be able to scroll per page, jump to the beginning or end of the line or jump word by word. (I am not talking vi bindings or emacs magic.) And no, key repeat is an antifeature.
Teach them VCS before their first group assignment. Let's be honest, VCS means git nowadays. Yet teach them git != GitHub.
Teach git through the command line. They are allowed to use a gui once they aren't afraid to resolve a merge conflict or to rebase their feature branch against master. Just committing and pushing is not enough.
Teach them test-driven development ASAP. You can even give them assignments with a codebase of failing tests and their job is to make them pass in the beginning. Later require them to write tests themselves.
Don't teach the language, teach concepts. (No, if else and for loops aren't concepts you god-damn amateur! That's just syntax!)
When teaching object oriented programming, I'd smack you if do inane examples with vehicles, cars, bikes and a Mercedes Benz. Or animal, cat and dog for that matter. (I came from a self-taught imperative background. Those examples obfuscate more than they help.) Also, inheritance is overrated in oop teachings.
Functional programming concepts should be taught earlier as its concepts of avoiding side effects and pure functions can benefit even oop code bases. (Also great way to introduce testing, as pure functions take certain inputs and produce one output.)
Focus on one language in the beginning, it need not be Java, but don't confuse students with Java, Python and Ruby in their first year. (Bonus point if the language supports both oop and functional programming.)
And for the love of gawd: let them have a strictly typed language. Why would you teach with JavaScript!?
Use industry standards. Notepad, atom and eclipse might be open source and free; yet JetBrains community editions still best them.
For grades, don't your dare demand for them to write code on paper. (Pseudocode is fine.)
Don't let your students play compiler in their heads. It's not their job to know exactly what exception will be thrown by your contrived example. That's the compilers job to complain about. Rather teach them how to find solutions to these errors.
Teach them advanced google searches.
Teach them how to write a issue for a library on GitHub and similar sites.
Teach them how to ask a good stackoverflow question :>6 -
Our web department was deploying a fairly large sales campaign (equivalent to a ‘Black Friday’ for us), and the day before, at 4:00PM, one of the devs emails us and asks “Hey, just a heads up, the main sales page takes almost 30 seconds to load. Any chance you could find out why? Thanks!”
We click the URL they sent, and sure enough, 30 seconds on the dot.
Our department manager almost fell out of his chair (a few ‘F’ bombs were thrown).
DBAs sit next door, so he shouts…
Mgr: ”Hey, did you know the new sales page is taking 30 seconds to open!?”
DBA: “Yea, but it’s not the database. Are you just now hearing about this? They have had performance problems for over week now. Our traces show it’s something on their end.”
Mgr: “-bleep- no!”
Mgr tries to get a hold of anyone …no one is answering the phone..so he leaves to find someone…anyone with authority.
4:15 he comes back..
Mgr: “-beep- All the web managers were in a meeting. I had to interrupt and ask if they knew about the performance problem.”
Me: “Oh crap. I assume they didn’t know or they wouldn’t be in a meeting.”
Mgr: “-bleep- no! No one knew. Apparently the only ones who knew were the 3 developers and the DBA!”
Me: “Uh…what exactly do they want us to do?”
Mgr: “The –bleep- if I know!”
Me: “Are there any load tests we could use for the staging servers? Maybe it’s only the developer servers.”
DBA: “No, just those 3 developers testing. They could reproduce the slowness on staging, so no need for the load tests.”
Mgr: “Oh my –bleep-ing God!”
4:30 ..one of the vice presidents comes into our area…
VP: “So, do we know what the problem is? John tells me you guys are fixing the problem.”
Mgr: “No, we just heard about the problem half hour ago. DBAs said the database side is fine and the traces look like the bottleneck is on web side of things.”
VP: “Hmm, no, John said the problem is the caching. Aren’t you responsible for that?”
Mgr: “Uh…um…yea, but I don’t think anyone knows what the problem is yet.”
VP: “Well, get the caching problem fixed as soon as possible. Our sales numbers this year hinge on the deployment tomorrow.”
- VP leaves -
Me: “I looked at the cache, it’s fine. Their traffic is barely a blip. How much do you want to bet they have a bug or a mistyped url in their javascript? A consistent 30 second load time is suspiciously indicative of a timeout somewhere.”
Mgr: “I was thinking the same thing. I’ll have networking run a trace.”
4:45 Networking run their trace, and sure enough, there was some relative path of ‘something’ pointing to a local resource not on development, it was waiting/timing out after 30 seconds. Fixed the path and page loaded instantaneously. Network admin walks over..
NetworkAdmin: “We had no idea they were having problems. If they told us last week, we could have identified the issue. Did anyone else think 30 second load time was a bit suspicious?”
4:50 VP walks in (“John” is the web team manager)..
VP: “John said the caching issue is fixed. Great job everyone.”
Mgr: “It wasn’t the caching, it was a mistyped resource or something in a javascript file.”
VP: “But the caching is fixed? Right? John said it was caching. Anyway, great job everyone. We’re going to have a great day tomorrow!”
VP leaves
NetworkAdmin: “Ouch…you feel that?”
Me: “Feel what?”
NetworkAdmin: “That bus John just threw us under.”
Mgr: “Yea, but I think John just saved 3 jobs. Remember that.”4 -
This Part 3 and finale of the tale of Mr DDTW, or the worst coworker I've ever had to deal with. I suggest you start from the beginning if you don't have the context, it's been a trip.
Part 1: https://devrant.com/rants/4210605
Part 2: https://devrant.com/rants/4220715
The problem with this man threatening to snitch on me to the professor if I didn't revert my commit was that he backed me into a corner. Letting him go at his pace with his quality standards would have ruined the project for the rest of us, and I'm not going to let three other people's grades suffer because one was lazy. I'm the PM, team lead, the guy who will ultimately be held responsible for this project succeeding or failing and the mediator of problems.
So I snitched first.
The professor knew us. He had an idea of how we worked as a team, who was enthusiastic about this subject, who was diligent, and who wasn't. It'd been half a semester and he wasn't stupid. I'd also taken the not-so-minor task of testing our software and handling all the little integration problems between components and between the professor's server. This had resulted in several calls between me and him because he'd been flying by the seat of his pants with some of the upgrades he'd been doing to the server code and as the fastest group we were the ones running into all the bugs on his end. And he'd also noted our prior complaint and seen the discrepancy in commits, author tags and hours logged. Mr DDTW had been graded significantly worse than the rest of us. So when I sent him a goddamn novel about our team's internal problems, the bomb was set. And so we get to the conference call, with everybody panicking and with no clue what any of this is about. Except me.
Dear god. That call was pure catharsis. Never have I seen a man get demolished so hard. Mr DDTW got a 45 minute LECTURE, a goddamn SMACKDOWN, about how he needs to take some responsibility for this team effort and that in the real world he'd have been fired. And the professor was so incredibly serene throughout! He could've blasted him with the rage of a thousand suns but he said it in such a way that Mr DDTW's only real responses were "yes", "I understand" and "I'm sorry". An entire semester of this useless fucking bitch being nothing but a leech on our team in three separate projects and he was finally getting SCHOOLED. And then, it gets even better. The professor asked how we could solve this problem, as Mr DDTW needs to do work to be graded but he can't hold us back.
I dropped a suggestion: As I had implemented the module in a way that worked, we could carry on using my version while Mr DDTW could work on a separate branch. Everything else was working reasonably well for an MVP, we just needed to improve and test now, so if Mr DDTW got it working we could merge it back into the main branch. This solved the team's problem of not being able to progress, it solved Mr DDTWs problem of not wanting to fail the course, and it solved my problem of not having to work with this shit-for-brains for the forseeable future. A weight was lifted off my shoulders. No more Mr DDTW. No more bitching and no more shitcode. A grating arsehole that had been bugging everyone all sememster put in his place and out of my hair.
On the way home from uni that day, I rang a friend and told him the entire story as I needed to get it off my chest. Every time I brought up a problem, an issue, a setback, an argument, he made a remark.
"Damn, if only he just... did the work."
Every time he said it it was in a slightly different way, but every time it made me laugh harder as he just didn't stop interrupting me with the same comment. If only he did the work. But the funniest part of all was how right he was. Mr DDTW had so many opportunities to just sit down, shut up, and do the work like the rest of us, but instead he decided to do fuck-all until he got flak for it and proceeded to dig his own grave. What sort of delusional entitlement, sheer incompetence or other dumbfuckery was he suffering from to make such terrible decisions? It's his last year of university and he still hadn't learned to just do the goddamn work (I would later find out that his friend had covered his shortcomings a lot and was apparently the reason why he hadn't flunked out of uni yet).
And so ends the story of Mr Didn't Do The Work the worst person I have ever had the displeasure of working with. We never did merge his branch as we ran out of time during testing. The professor passed him, possibly out of pity or just so that he wouldn't have to resit the course and burden some other poor sods. We weren't the top scorers this time, partially because of my shortcomings as PM but mostly because of the huge delays and manpower deficit, but we did well enough to pass the course with some very high grades. With one exception of course.5 -
Probably the most awkward feeling call happened to me just recently.
I was to interview a guy that's like 10 years older from me with 10y more experience in mostly unrelated tech. I was prepared to have some respect for the guy, and was a bit anxious, but that changed quickly.
The first fucking thing he says, on the fucking job Interview is essentially "I've worked in tech for 20 or so years, and I don't appreciate being tested" great start .. needless to say, I tried to reformulate all my prepared Interview questions so they sound as casual as I could while still trying to get him to tell me *anything*. Most of the time I just felt like "why are we even here dude, you clearly don't care about any of this"...
About 12 or so questions later It was finally clear that none of his experience is useful, and even the exp he has sounds like past companies kept him around as a number...
I want to try a few more edge cases, hoping to find anything we could work with, when he calls me out on it and says "Well now you're testing me, I don't like being tested" at which point I pretty much gave up on the dude and let my HR colleague talk.
Then out of nowhere the guy brings up his mortgage, and how he needs money, and how no one wants to give him a job, and that if we don't want him, we should just tell him now.
Then he starts asking how many people we're interviewing, which is obviously stuff we can't answer, I just said "normal amount" to dodge the question at first, but that just made him more closed off and he just silently remarked "so you can be picky..."
That was one of the most painful interviews I had so far. Me and ny colleague pretty much instantly agreed that he's not a good culture fit for us. Probably not a fit for any company really, not with that attitude.
PS: it was a video call, though he had his camera turned off at first, so it was only me with a camera for half the call. He turned it on just about as I had enough of him.12 -
Worst hack/attack I had to deal with?
Worst, or funniest. A partnership with a Canadian company got turned upside down and our company decided to 'part ways' by simply not returning his phone calls/emails, etc. A big 'jerk move' IMO, but all I was responsible for was a web portal into our system (submitting orders, inventory, etc).
After the separation, I removed the login permissions, but the ex-partner system was set up to 'ping' our site for various updates and we were logging the failed login attempts, maybe 5 a day or so. Our network admin got tired of seeing that error in his logs and reached out to the VP (responsible for the 'break up') and requested he tell the partner their system is still trying to login and stop it. Couple of days later, we were getting random 300, 500, 1000 failed login attempts (causing automated emails to notify that there was a problem). The partner knew that we were likely getting alerted, and kept up the barage. When alerts get high enough, they are sent to the IT-VP, which gets a whole bunch of people involved.
VP-Marketing: "Why are you allowing them into our system?! Cut them off, NOW!"
Me: "I'm not letting them in, I'm stopping them, hence the login error."
VP-Marketing: "That jackass said he will keep trying to get into our system unless we pay him $10,000. Just turn those machines off!"
VP-IT : "We can't. They serve our other international partners."
<slams hand on table>
VP-Marketing: "I don't fucking believe this! How the fuck did you let this happen!?"
VP-IT: "Yes, you shouldn't have allowed the partner into our system to begin with. What are you going to do to fix this situation?"
Me: "Um, we've been testing for months already went live some time ago. I didn't know you defaulted on the contract until last week. 'Jake' is likely running a script. He'll get bored of doing that and in a couple of weeks, he'll stop. I say lets ignore him. This really a network problem, not a coding problem."
IT-MGR: "Now..now...lets not make excuses and point fingers. It's time to fix your code."
IT-VP: "I agree. We're not going to let anyone blackmail us. Make it happen."
So I figure out the partner's IP address, and hard-code the value in my service so it doesn't log the login failure (if IP = '10.50.etc and so on' major hack job). That worked for a couple of days, then (I suspect) the ISP re-assigned a new IP and the errors started up again.
After a few angry emails from the 'powers-that-be', our network admin stops by my desk.
D: "Dude, I'm sorry, I've been so busy. I just heard and I wished they had told me what was going on. I'm going to block his entire domain and send a request to the ISP to shut him down. This was my problem to fix, you should have never been involved."
After 'D' worked his mojo, the errors stopped.
Month later, 'D' gave me an update. He was still logging the traffic from the partner's system (the ISP wanted extensive logs to prove the customer was abusing their service) and like magic one day, it all stopped. ~2 weeks after the 'break up'.8 -
Round up kids.
I have a story to tell. The story of a war I've lost. Many battles were fought and many hours were wasted.
This is the story of wasp in a computer lab.
Today, the weather was good. So your old pal, Nomi, decided to open the windows. And as usual, that's where it all started.
So Nomi sat down and worked for a few hours. Tweaking two different neural nets, adding to its dimensions and concatenating the living shit out of the data they were supposed to process. After, she tried testing and testing and testing. It was early afternoon at this point and she was hungry. She went to close the windows and go for lunch.... When she realized, that she's not alone in the room. A big ass wasp was sitting on one of the curtains.
Now, Nomi doesn't have a good relationship with bugs and flying shit. Wait, no, she doesn't have a good relationship with moving things in general. So she panicked. She begged the wasp to leave. The wasp sat on the curtain and smirked at her. So after a while, she left the windows wide open, turned off the lights, put her hoodie on and went for lunch.
(btw, at this point my hoodie smells of sweat, fried onion, steak, cigarette and shisha. Don't ask. It was a long two weeks)
When she came back, the wasp was nowhere to be seen. So she assumed that the wasp got tired and left. But oh, how wrong she was.
After few hours, she heard something. She assumed it was just a fly. Actually, she hoped it was a fly and not the return of the wasp. But all her hopes were in vein.
She heard a buzz. And all of a sudden, an angry wasp flew in her direction. She dodged the attack and got under the table. But the wasp was not letting this go. Nomi jumped out of the room and left the door open. The wasp hid itself. She waited and waited but no sign of wasp. So she ran back in the room, and opened the window and ran back outside. She waited. The wasp occasionally would fly from one hideout to another. The wasp was making herself comfortable. At one point Nomi got angry and threw a shoe at the wasp, but the wasp caught the shoe and threw it back at her while maniacally laughing at her.
So she gave in. This was enough for the day. She ran back in, closed the window, turned off the computer, took her bag, turned off the light, and closed the door. All in less than 15 seconds. She came outside panicked and distressed, and now she's on her way home hoping that by tomorrow the wasp is gonna be dead.
The wasp and the robots are sitting alone in the lab tonight. I hope when the robots uprising happens, the robots can forgive me for abandoning them powerlessly with a wasp. 😟23 -
Reject original specs. Do the bare minimum MVP that works and solves problems people actually have, and not problems you think people have.
Improve it if needed.
In my experience, software projects don’t live long enough to outgrow the MVP. If they do, it happens way down the road. At that point, business will change, and the original spec will become irrelevant.
It’s a paradox: 90% of the spec was discarded, but the business is happier than if we followed the spec word by word.
Also, static typing and unit testing solve nothing. I’m sorry.24 -
Why is there so much hate against QA in general??
I read tons of rants about how bad testers are... and as a dev who does a lot of QA work, IT SUCKS!
We (devs) have to accept that are work needs to be tested! Otherwise we want be successful with our products.
BUT the testers need to know the development business! They should be trained at the same level as the devs are.
BECAUSE if the mug on my desk is smarter than the tester it is not going to work!
If the tester has full access to all the technologies, environments and tools (and are capable of using it) he has the ability to HELP!
I THINK that testing should be more than just follow predefined steps and let a random tool generate a bugreport.
I am sure that some of you are lucky enough to work with highly skilled testers so please let them help18 -
(Best read while listening to AEnima by Tool, loudly)
Dear Current Workplace,
Fuck you, for the reasons enumerated below.
Fuck your enterprise grey blue offices, the stifling warm air of a hundreds of bodies and sub par "development laptops".
Fuck your shitty carbonated water machines which were a cost saving measure over decent drinkable water.
Fuck your fake "flexi time", "you can do home office whenever you want" bullshit. You're still inviting me to mandatory meetings at 09:00 regularly.
Fuck your shitty, in house, third part IT provider sister company. They're the worst of all worlds. If it was in company, we'd get to give out to them, if it was an external company we'd fire them. And yes, when I quit I will quote the dumpster fire that is our corporate VPN as a major factor.
Fuck your cheery, bland, enterprise communication. Words coming under the corporate letterhead seem to lose all association with meaning. Agile, communication, open are things you write and profess to respect, but it seems your totally lack understanding of their meaning.
Fuck your client driven development. Sometime you actually have to fix the foundations before you can actually add new features. And fuck you management who keep on asking "why are there so many bugs and why is it always taking longer to deliver new releases". Because of you, you fucknuts, Because you can't say "NO" to the customer. Because you never listen to your own experienced developers.
Fuck your bullshit "code quality is important to us" line. If it's so important, then let us fix the heap of shit you're selling so that it works like a quasi functional program.
Fuck you development environment which has 250 projects in a single VS solution. Which takes 5mins plus to compile on a quad core i7 with 32 gb of ram.
Fuck this bullshit ball of mud "architecture". I spend most of my time trying to figure out where the logic should go and the rest of the time writing converters between different components. All because 7 years ago some idiot "architect" made a decision that they didn't have to live with.
Actually, fuck that guy in particular. Yeah, that guy who was the responsible architect for the project for 4 years and not once opened the solution to look a the code.
Fuck the manual testing of every business process. Manual setup of the entities takes 10mins plus and then when you run, boom either no message or some bullshit error code.
Fuck the antiquated technology choices which cause loads of bugs and slow down development. Fuck you for forcing me to do manual tests of another developers code at 20:00 on a Friday night because we can't get our act together to do this automatically.
Fuck you for making sure it's very clear I'm never going to be anything but a code monkey in this structure. Managers are brought in from outside.
Fuck you for being surprised that it's hard to hire competent developers in this second rate, overpriced town. It's hard to hire anywhere but this bland shithole would have anyone with half a clue running away at top speed.
Fuck you for valuing long hours and loyalty over actual performance. That one guy who everyone hated and was totally incompetent couldn't even get himself fired. He had to quit.
Fuck you for your mediocrity.
Fuck you for being the only employer for my skill-set in the region; paying just well enough that changing jobs locally doesn't make sense, but badly enough that it's difficult to move.
Fuck you for being the stable "safe" option so that any move is "risky".
Fuck your mediocrity.
Fuck you for being something I think about when I'm not at work. Not only is it shit from 9 to 5 you manage to suck the joy out of everything else in my life as well?
Fuck you for making me feel like a worse developer every day I work here. Fuck you for making every day feel like a personal and professional failure. Fuck you for making me seriously leave a career I love for something, anything else.
Fuck you for making the most I can hope for when I get up in the morning is to just make it until the night.6 -
Hey guys,
this rant will be long again. I'm sorry for any grammar errors or something like that, english isn't my native language. Furthermore I'm actually very sad and not in a good mood.
Why? What happened? Some of you may already know - I'm doing my apprenticeship / education in a smal company.
There I'm learning a lot, I'm developing awesome features directly for the clients, experience of which other in my age (I'm only 19 years old) can only dream.
Working in such a small company is very exhausting, but I love my job, I love programming. I turned my hobby into a profession and I'm very proud of it.
But then there are moments like the last time, when I had to present something for a client - the first presentation was good, the last was a disaster, nothing worked - but I learned from it.
But this time everything is worse than bad - I mean really, really worse than bad.
I've worked the whole week on a cool new feature - I've done everything that it works yesterday, that everything gets done before the deadline of yesterday.
To achieve this I've coded thursday till 10pm ! At home! Friday I tested the whole day everything to ensure that everything is working properly. I fixed several bugs and then at the end of the day everything seems to be working. Even my boss said that it looks good and he thinks that the rollout to all clients will become good and without any issues.
But unfortunately deceived.
Yesterday evening I wrote a long mail to my boss - with a "manual". He was very proud and said that he is confident that everything will work fine. He trusts me completly.
Then, this morning I received a mail from him - nothing works anymore - all clients have issues, everything stays blank - because I've forgotten to ensure that the new feature (a plugin) and its functionality is supported by the device (needs a installation).
First - I was very shoked - but in the same moment I thought - one moment - you've written an if statement, if the plugin is installed - so why the fuck should it broken everything?!
I looked instant to the code via git. This has to be a very bad joke from my boss I thought. But then I saw the fucking bug - I've written:
if(plugin) { // do shit }
but it has to be if(typeof plugin !== 'undefined')
I fucked up everything - due to this fucking mistake. This little piece of shit I've forgotten on one single line fucked up everything. I'm sorry for this mode of expression but I thought - no this can not be true - it must be a bad bad nightmare.
I've tested this so long, every scenario, everything. Worked till the night so it gets finished. No one, no one from my classmates would ever think of working so long. But I did it, because I love my job. I've implemented a check to ensure that the plugin is installed - but implemented it wrong - exactly this line which caused all the errors should prevent exactly this - what an irony of fate.
I've instantly called my boss and apologized for this mistake. The mistake can't be undone. My boss now has to go to all clients to fix it. This will be very expensive...
Oh my goodnes, I just cried.
I'm only working about half a year in this company - they trust me so much - but I'm not perfect - I make mistakes - like everyone else. This time my boss didn't looked over my code, didn't review it, because he trusted me completly - now this happens. I think this destroyed the trust :( I'm so sad.
He only said that we will talk on monday, how we can prevent such things in the feature..
Oh guys, I don't know - I've fucked up everything, we were so overhelmed that everything would work :(
Now I'm the looser who fucked up - because not testing enough - even when I tested it for days, even at home - worked at home - till the night - for free, for nothing - voluntary.
This is the thanks for that.
Thousand good things - but one mistake and you're the little asshole. You - a 19 year old guy, which works since 6 months in a company. A boss which trusts you and don't look over your code. One line which should prevent crashing, crashed everything.
I'm sorry that this rant is so long, I just need to talk to you guys because I'm so sad. Again. This has happend to frequently lately.16 -
➡️You Are Not A Software Developer⬅️
When I became a developer, I thought that my job is to write software. When my customer had a problem, I was ready to write software that solves that problem. I was taught to write software.
But what customers need is not software. They need a solution to their problem. Your job is to find the most cost-effective solution, what software often is not.
According to the universal law of software development, more code leads to more bugs:
e = mc²
Or
errors = (more code)²
The number of bugs grows with the amount of code. You have to prioritize, reproduce and fix bugs.
The more code you write, the more your team and the team after it has to maintain. Even if you split the system into micro services, the complexity remains.
Writing well-tested, clean code takes a lot of time. When you’re writing code, other important work is idle. The work that prevents your company from becoming rich.
A for-profit company wants to make money and reduce expenses. Then the company hires you to solve problems that prevent it from becoming rich. Confused by your job title, you take their money and turn it into expensive software.
But business has nothing to do about software. Even software business is not about software. Business is about making money.
Your job is to understand how the company is making money, help make more money and reduce expenses. Once you know that, you will become the most valuable asset in the company.
Stop viewing yourself as a software developer. You are a money maker.
Think about how to save and make money for your customers.
Find the most annoying problem and fix it:
▶️Is adding a new feature too costly? Solve the problem manually.
▶️Is testing slow? Become a tester.
▶️Is hiring not going well? Speak at a meetup and advertise your company.
▶️Is your team not productive enough? Bring them coffee.
Your job title doesn’t matter. Ego doesn’t matter either.
Titles and roles are distracting us from what matters to our customers – money.💸
You are a money maker. Thinking as a money maker can help choose the next skill for development. For example:
Serverless: pay only for resources you consume, spend less time on capacity planning = 💰
Machine Learning: get rid of manual decision-making = 💰
TDD: shorter feedback cycle, fewer bugs = 💰
Soft Skills: inspire teammates, so they are more productive and happy = 💰
If you don’t know what to learn next — answer a simple question:
What skills can help my company make more money and reduce expenses?
Very unlikely it’s another web framework written in JavaScript.
Article by Eduards Sizovs
Sizovs.net18 -
Hello everyone 👋
I see people blaming the developers when you see a crappy software product , saying that they have done a bad job.
But even it could be true also it could be the product managers who didn’t give enough time todo what needs to be done or project scope is too big for the persons knowledge.
I’ve worked in a company where deadlines were so tight I didn’t have enough time to proper UI and Testing. I used to be only developer who has someone experience and I had to train the interns as well. I am also to blame to joining such company but in desperate times takes desperate measures.
And now when i’m leaving the company and I have spend 2 years of my life for apps that I’m not proud of.
Just rant. Please feel free to give ur thoughts2 -
I’m back for a fucking rant.
My previous post I was happy, I’ve had an interview today and I felt the interviewer acted with integrity and made the role seem worthwhile. Fuck it, here’s the link:
https://www.devrant.io/rants/889363
So, since then; the recruiter got in touch: “smashed it son, sending the tech demo your way, if you can get it done this evening that would be amazing”
Obviously I said based on the exact brief I think that’s possible, I’ll take a look and let them know if it isn’t.
Having done loads of these, I know I can usually knock them out and impress in an evening with no trouble.
Here’s where shit gets fucked up; i opened the brief.
I was met with a brief for an MVP using best practice patterns and flexing every muscle with the tech available...
Then I see the requirements, these fucking dicks are after 10 functional requirements averaging an hour a piece.
+TDD so * 1.25,
+DI and dependency inversion principle * 1.1
+CI setup (1h on this platform)
+One ill requirement to use a stored proc in SQL server to return a view (1h)
+UX/UI design consideration using an old tech (1-2h)
+unobtrusive jquery form post validation (2h)
+AES-256 encryption in the db... add 2h for proper testing.
These cunts want me to knock 15-20h of Work into their interview tech demo.
I’ve done a lot of these recently, all of them topped out at 3h max.
The job is middling: average package, old tech, not the most exciting or decent work.
The interviewer alluded to his lead being a bit of a dick; one of those “the code comes first” devs.
Here’s where shit gets realer:
They’ve included mock ups in the tech demo brief’s zip... I looked at them to confirm I wasn’t over estimating the job... I wasn’t.
Then I looked at the other files in the fucking zip.
I found 3 of the images they wanted to use were copyright withheld... there’s no way these guys have the right to distribute these.
Then I look in the font folder, it’s a single ttf, downloaded from fucking DA Font... it was published less than 2mo ago, the license file had been removed: free for Personal, anything else; contact me.
There’s no way these guys have any rights to this font, and I’ve never seen a font redistributed legally without it’s accompanying licence files.
This fucking company is constantly talking about its ethical behaviours.
Given that I know what I’m doing; I know it would have taken less time to find free-for-commercial images and use a google font... this sloppy bullshit is beyond me.
Anyway, I said I’d get back to the recruiter, he wasn’t to know and he’s a good guy. I let him know I’d complete the tech demo over the weekend, he’s looked after me and I don’t want him having trouble with his client...
I’ll substitute the copyright fuckery with images I have a license for because there’s no way I’m pushing copyright stolen material to a public github repo.
I’ll also be substituting the topic and leaving a few js bombs in there to ensure they don’t just steal my shit.
Here’s my hypotheses, anyone with any more would be greatly welcomed...
1: the lead dev is just a stuck up arsehole, with no real care for his work and a relaxed view on stealing other people’s.
2: they are looking for 15-20h free work on an MVP they can modify and take to market
3: they are looking for people to turn down this job so they can support someone’s fucking visa.
In any case, it’s a shit show and I’ll just be seeing this as box checking and interview practice...
Arguments for 1: the head told me about his lead’s problems within 20mn of the interview.
2: he said his biggest problem was getting products out quickly enough.
3: the recruiter told me they’d been “picky”, and they’re making themselves people who can’t be worked for.
I’m going to knock out the demo, keep it private and protect my work well. It’s going to smash their tits off because I’m a fucking great developer... I’ll make sure I get the offer to keep the recruiter looked after.
Then fuck those guys, I’m fucking livid.
After a wonderful interview experience and a nice introduction to the company I’ve been completely put off...
So here’s the update: if you’re interviewing for a shitty middle level dev position, amongst difficult people, on an out of date stack... you need people to want you, don’t fuck them off.
If they want my time to rush out MVPs, they can pay my day rate.
Fuuuuuuuuck... I typed this out whilst listening to the podcast, I’m glad I’m not the only one dealing with shit.
Oh also; I had a lovely discriminatory as fuck application, personality test and disability request email sent to me from a company that seems like it’s still in the 90s. Fuck those guys too, I reported them to the relevant authorities and hope they’re made to look at how morally reprehensible their recruitment process is. The law is you don’t ask if the job can be done by anyone.6 -
So here is my week 72 as a reviewer. But first, let me ask y'all. Am I weird to think that you should finish coding the thing and testing the thing before kicking it out to review? Cuz that's how I do it. And that is the process at my work place.
So anyway, I was doing this review. And it was very wrong. Like really, really wrong. We give a thorough intro to our product (perhaps too thorough) so this guy should have known every test case he had to cover. Or at least, if he was unsure, asked. It was all documented.
Anyway, he kicks out this peer review. First thing I notice, it is not following the standard. Fair enough, we didn't give him the coding standard. BUT HE DIDN'T EVEN MAINTAIN THE FORMAT OF THE ORIGINAL FILE. HE JUST DID HIS OWN THING!!! So I email him the coding standard and make a comment in the review. He denies the finding. No reason. Just turns it down. Strike 1.
Then, I'm going through and he didn't even cover all of the core cases. I found several core cases that he missed. And every edge case. Make a not of it. He fixes only the couple of examples I gave him. Strike 2.
Guy decided to redesign a major chunk of our interfaces. Our interfaces are not just used by us (hence interfaces). We designed them the way they were for a reason. It was not a fun design process. Myself, the architect, one of our customers, and the guy that did the implementation all told him to roll back his change. Especially since it wasn't in the scope of what he was doing. He wouldn't. Strike 3.
I go to the lead and bring him in. He has a talk with him. All of the sudden he is putting out multiple builds per finding. Like most times I will put out like 2 to 4 for the whole peer review. No he kicks out minimum one per finding and chokes the review queue. Strike 4.
Strike 5: he tells me, a former DBA, that I didn't know what I was talking about when I told him to move something into a new table, even after I told him that "while in database terms it doesn't make sense, this is for product robustness".
Strike 6: he was just a condescending asshole. Bragging about how he did this job and that job over his career. His longest position held was about 18 months. Bragged about working at my company and being some hotshot at the company: only worked here for 8 months and that was 5 years ago.
You know. I have never really wanted to fight someone after about undergrad. But he came close.7 -
I'm coming off a lengthy staff augmentation assignment awful enough that I feel like I need to be rehabilitated to convince myself that I even want to be a software developer.
They needed someone who does .NET. It turns out what they meant was someone to copy and paste massive amounts of code that their EA calls a "framework." Just copy and paste this entire repo, make a whole ton of tweaks that for whatever reason never make their way back into the "template," and then make a few edits for some specific functionality. And then repeat. And repeat. Over a dozen times.
The code is unbelievable. Everything is stacked into giant classes that inherit from each other. There's no dependency inversion. The classes have default constructors with a comment "for unit testing" and then the "real" code uses a different one.
It's full of projects, classes, and methods with weird names that don't do anything. The class and method names sound like they mean something but don't. So after a dozen times I tried to refactor, and the EA threw a hissy fit. Deleting dead code, reducing three levels of inheritance to a simple class, and renaming stuff to indicate what it does are all violations of "standards." I had to go back to the template and start over.
This guy actually recorded a video of himself giving developers instructions on how to copy and paste his awful code.
Then he randomly invents new "standards." A class that reads messages from a queue and processes them shouldn't process them anymore. It should read them and put them in another queue, and then we add more complication by reading from that queue. The reason? We might want to use the original queue for something else one day. I'm pretty sure rewriting working code to meet requirements no one has is as close as you can get to the opposite of Agile.
I fixed some major bugs during my refactor, and missed one the second time after I started over. So stuff actually broke in production because I took points off the board and "fixed" what worked to add back in dead code, variables that aren't used, etc.
In the process, I asked the EA how he wanted me to do this stuff, because I know that he makes up "standards" on the fly and whatever I do may or may not be what he was imagining. We had a tight deadline and I didn't really have time to guess, read his mind, get it wrong, and start over. So we scheduled an hour for him to show me what he wanted.
He said it would take fifteen minutes. He used the first fifteen insisting that he would not explain what he wanted, and besides he didn't remember how all of the code he wrote worked anyway so I would just have to spend more time studying his masterpiece and stepping through it in the debugger.
Being accountable to my team, I insisted that we needed to spend the scheduled hour on him actually explaining what he wanted. He started yelling and hung up. I had to explain to management that I could figure out how to make his "framework" work, but it would take longer and there was no guarantee that when it was done it would magically converge on whatever he was imagining. We totally blew that deadline.
When the .NET work was done, I got sucked into another part of the same project where they were writing massive 500 line SQL stored procedures that no one could understand. They would write a dozen before sending any to QA, then find out that there was a scenario or two not accounted for, and rewrite them all. And repeat. And repeat. Eventually it consisted of, one again, copying and pasting existing procedures into new ones.
At one point one dev asked me to help him test his procedure. I said sure, tell me the scenarios for which I needed to test. He didn't know. My question was the equivalent of asking, "Tell me what you think your code does," and he couldn't answer it. If the guy who wrote it doesn't know what it does right after he wrote it and you certainly can't tell by reading it, and there's dozens of these procedures, all the same but slightly different, how is anyone ever going to read them in a month or a year? What happens when someone needs to change them? What happens when someone finds another defect, and there are going to be a ton of them?
It's a nightmare. Why interview me with all sorts of questions about my dev skills if the plan is to have me copy and paste stuff and carefully avoid applying anything that I know?
The people are all nice except for their evil XEB (Xenophobe Expert Beginner) EA who has no business writing a line of code, ever, and certainly shouldn't be reviewing it.
I've tried to keep my sanity by answering stackoverflow questions once in a while and sometimes turning evil things I was forced to do into constructive blog posts to which I cannot link to preserve my anonymity. I feel like I've taken a six-month detour from software development to shovel crap. Never again. Lesson learned. Next time they're not interviewing me. I'm interviewing them. I'm a professional.9 -
Man, most memorable has to be the lead devops engineer from the first startup I worked at. My immediate team/friends called him Mr. DW - DW being short for Done and Working.
You see, Mr. DW was a brilliant devops engineer. He came up with excellent solutions to a lot of release, deployment, and data storage problems faced at the company (small genetics firm that ships servers with our analysis software on them). I am still very impressed by some of the solutions he came up with, and wish I had more time to study and learn about them before I left that company.
BUT - despite his brilliance, Mr. DW ALWAYS shipped broken stuff. For some reason this guy thinks that only testing a single happiest of happy path scenarios for whatever he is developing constitutes "everything will work as expected!" As soon as he said it was "done", but golly for him was it "done". By fucking God was that never the truth.
So, let me provide a basic example of how things would go:
my team: "Hey DW, we have a problem with X, can you fix this?"
DW: "Oh, sure. I bet it's a problem with <insert long explanations we don't care about we just want it fixed>"
my team: "....uhh, cool! Looking forward to the fix!"
... however long later...
DW: "OK, it's done. Here you go!"
my team: "Thanks! We'll get the fix into the processing pipelines"
... another short time later...
my team: "DW, this thing is broken. Look at all these failures"
DW: "How can that be? It was done! I tested it and it worked!"
my team: "Well, the failures say otherwise. How did you test?"
DW: "I just did <insert super basic thing>"
my team: "...... you know that's, like, not how things actually work for this part of the pipeline. right?"
DW: "..... But I thought it was XYZ?"
my team: "uhhhh, no, not even close. Can you please fix and let us know when it's done and working?"
DW: "... I'll fix it..."
And rinse and repeat the "it's done.. oh wait, it's broken" a good half dozen times on average. But, anyways, the birth of Mr. Done and Working - very often stuff was done, but rarely did it ever work!
I'm still friends with my team mates, and whenever we're talking and someone says something is done, we just have to ask if it's done AND working. We always get a laugh, sadly at the excuse of Mr. DW, but he dug his own hole in this regard.
Little cherry on top: So, the above happened with one of my friends. Mr. DW created installation media for one of our servers that was deployed in China. He tested it and "it was done!" Well, my friend flies out to China for on-site installation. He plugs the install medium in and goes for the install and it crashes and burns in a fire. Thankfully my friend knew the system well enough to be able to get everything installed and configured correctly minus the broken install media, but definitely the most insane example of "it's done!" but sure as he'll "it doesn't work!" we had from Mr. DW.2 -
Introduced a ‘new’ logging framework for our web site. Web team is testing the integration and I get an email saying the logging wasn’t working. Instead of sending me how she is searching the logs, she sends me a screen shot of the code (which is ass-backwards of how I documented the logging library, but that’s another rant). OK, she wrote 5 lines of code that should be one line, but OK, the error still should have logged fine. I search the logs, and sure enough, there they are. Errors logged just as they should.
So I email back (with screenshot of the search query and results) asking how she searched for the errors.
Hour later she responds ..”I don’t know.”
That’s it.
WTF do you mean “I don’t know”?…WTF…you are a –bleep-ing developer too! This is not the first –bleep-ing splunk query you’ve written!
OK..I’m calm..feeling better. Wouldn’t be so bad if she emailed just me with the question (I’m not a splunk query expert either, we can figure it out together), but she was sure to cc 3 of the PMs involved in the integration, my boss, and other team members to make it sound like the problem was my code.3 -
Most tedious part of my day...
While meetings are boring and awful and all, it's probably spinup times for me. Each and every change requires a minimum of 35 seconds of spinup to test. If i'm testing something with mailers or other daemons, that increases to easily 90+ seconds (plus the worker thread pickup times).
It's not enough time to do anything useful, and more than enough time to lose my focus. It turns every task into boring, tedious struggle. It's awful.
Apart from my coworkers, this is the single worst part about my job. (Okay, the awful code quality totally pushes this to third place.)4 -
The worst boss and human being so far, still wondering how he keeps the company afloat. This was my first longterm developer job almost a decade ago and I was a student at that time. The application was an outlook plug in for a document management system.
Scene 1:
Boss: The processing is too slow. Make it faster.
Me: After analysis and profiling I can prove that the core (developed in VB6 by a physicist and autoconverted to VB.NET) is the bottleneck.
Boss: I don't care. Make it faster and don't touch the core.
Scene 2:
Boss: I want the app to behave in that way.
Me: This is not what we specified previously. Look here. Nonetheless, I would have to rewrite half of the plugin. Mind that it is an outlook plug in and we are restricted by outlook. If you want that, it would take XX days and we do not have enough time until release.
Boss: I don't care. Do it. And the deadline stays as it is.
Boss 2 weeks later: I don't like it.
Scene 3:
Me: To release in time I need more resources. I need at least one tester and another developer would be a huge plus. Also, I need a second PC for testing.
Boss: No.
2 weeks later:
Boss: why does it not work properly in outlook 2010? Didn't you test it?
Me: I could not. I have only outlook 2007. I asked for more resources and did not get them.
Boss: it's your fault. Bad work.
Scene 4:
*Me having failed multiple exams, stress at work, started to drink*
Boss: Don't you like working here?
Me: ...
Finale:
*Me getting written sick with severe depression*
Boss: fires me.
Me: Loses flat. Quits uni. Unemployed for 6 Months, one rejection after another (boss was phoned, that's sure). Moving back to parents. Sues boss. Gets money.
I still hate him and wish him the most painful experiences in life. Such people belong behind bars. But the justice isn't always served. One has to move forward and improve himself.3 -
Today I started work on a new project that contains a lot of legacy. I asked the developers about unit testing javascript and was told that not only is there none in place, but it's not worth adding any in.
At first, I grimaced and thought fair enough. This is their codebase, it's their choice. I've now been thinking about this for a few hours and have instead decided that screw those guys, I'm adding in a testing framework, a module pattern that's compatible with the existing code, and unit testing the crap out of it. If they don't want it they can refactoring it out, but I can't bring myself to intentionally deliver code I know is crap.
I WILL FORCE CODE QUALITY ON THEM.7 -
I'm a jr developer. I started off in automation testing and don't mind it but the testing codebase is cancer, doesn't follow basic Java conventions even basic naming conventions like camelcase, and the tests are super slow using hardcoded Thread.sleep(). Since the automation tests are not automated, I have to run manually. YES manually, every morning I wake up early at 7am to run the 2.5 hour long tests (7am because this before people get to work and when the application goes back online). I run this bitch and monitor them but most of them fail anyways. I also have to write a email report on the results which means I have to explain why shit is failing so I have to debug all this crap. This shit literally eats up an additional 2-3 hours of my work day everyday and the time is not even accounted for. ALSO, since it's running on my laptop, it makes my computer slow most of the day. If I have to debug, I can't have the browser be headless so fuckin chrome browsers be popping up every 2 minutes. I did this for legitimately 8 sprints until I decided enough was enough and bitched about it and the team told me I had no choice. I eventually got them to push towards automating it but it's still in progress so I'm still running this dumb shit. The contractors try to take advantage of me any way they can by giving me mindless bitch work they don't want and they know I don't usually say no since I'm a jr resource. I hate running the fucking automation tumor. Sometimes I go into the meeting rooms alone to scream.
I feel like I'm wasting my life away and not learning as much as I could somewhere else10 -
Have any of you already felt that you really like what you do (coding, of course, among other things), but you hate "the place(s)" where you work, specifically some of the people from there...?!?!?
It's 9AM, you already got your coffee, is comfortably sat, with your precious headphones, all ready for some gorgeous lines of code to gain life... but...
... your coworkers are arguing cos one prefer braces when using an single-line if statement, the other not...
... another one is discussing about how bad he's paid after discovering that a dev (at the same "level") receives more...
... the coordinator comes to convince you that the manager is not good, has not all the needed "certifications", and vice versa ...
... the designer didn't like the UX's work, and this is just an enough reason for a BIG gossip with the rest of the team (or even with people from other teams) ...
... the QA complains all the time about everything: the testing environments are a shit, the other QAs are a shit, the system is a shit, his life is a shit (even though he has not yet realized it) ...
Sometimes I miss that time when I got into the coding universe at home, giving my first steps and was creating things all the time... against the toxicity we find in a lot of enterprise "habitats"...1 -
I am an I.T Admin currently responsible for the URS, Validation, oversight of outsourced development and deployment of a new application for our company...
I've been saying once a week now for 2 fucking months that this thing will be ready to deploy at the end of the week.
With enough technical knowledge I know the hell business people put developers through, the lack of contextual understanding of the Job between the two sides is insane.
(I mean holy shit when you tab through various fields, even that ordering needs to be explicitly programmed.)
I refuse to put the pressure on our devs that I am told too, I cant submit a request and phone ten minutes later to ask if itll be done today, people plan their lives, the devs have other clients and projects... what the mother of fuck makes us so special that they must drop everything.
On top of that all the testing I do over and over and over and over reveals some pretty huge operational risks and I keep making changes so as to not blow up the operations of half our company.
I am not saying my boss is horrible or anything but Holy Hell, most people just can't put themselves in someone else's shoes for five short minutes
I try to please my boss while trying to protect my devs from abuse and sadly it results in me being in the middle of two sides playing tug of war and it is ripping me apart...
Why can't people just be more understanding and communicate and understand better... But don't worry all you beautiful game changing, world improving devs... I will always have your back5 -
> Worst work culture you've experienced?
It's a tie between my first to employers.
First: A career's dead end.
Bosses hardly ever said the truth, suger-coated everything and told you just about anything to get what they wanted. E.g. a coworker of mine was sent on a business trip to another company. They had told him this is his big chance! He'd attend a project kick-off meeting, maybe become its lead permanently. When he got there, the other company was like "So you're the temporary first-level supporter? Great! Here's your headset".
And well, devs were worth nothing anyway. For every dev there were 2-3 "consultants" that wrote detailed specifications, including SQL statements and pseudocode. The dev's job was just to translate that to working code. Except for the two highest senior devs, who had perfect job security. They had cooked up a custom Ant-based build system, had forked several high-profile Java projects (e.g. Hibernate) and their code was purposely cryptic and convoluted.
You had no chance to make changes to their projects without involuntarily breaking half of it. And then you'd have to beg for a bit of their time. And doing something they didn't like? Forget it. After I suggested to introduce automated testing I was treated like a heretic. Well of course, that would have threatened their job security. Even managers had no power against them. If these two would quit half a dozen projects would simply be dead.
And finally, the pecking order. Juniors, like me back then, didn't get taught shit. We were just there for the work the seniors didn't want to do. When one of the senior devs had implemented a patch on the master branch, it was the junior's job to apply it to the other branches.
Second: A massive sweatshop, almost like a real-life caricature.
It was a big corporation. Managers acted like kings, always taking the best for themselves while leaving crumbs for the plebs (=devs, operators, etc). They had the spacious single offices, we had the open plan (so awesome for communication and teamwork! synergy effects!). When they got bored, they left meetings just like that. We... well don't even think about being late.
And of course most managers followed the "kiss up, kick down" principle. Boy, was I getting kicked because I dared to question a decision of my boss. He made my life so hard I got sick for a month, being close to burnout. The best part? I gave notice a month later, and _he_still_was_surprised_!
Plebs weren't allowed anything below perfection, bosses on the other hand... so, I got yelled at by some manager. Twice. For essentially nothing, things just bruised his fragile ego. My bosses response? "Oh he's just human". No, the plebs was expected to obey the powers that be. Something you didn't like? That just means your attitude needs adjustment. Like with the open plan offices: I criticized the noise and distraction. Well that's just my _opinion_, right? Anyone else is happily enjoying it! Why can't I just be like the others? And most people really had given up, working like on a production line.
The company itself, while big, was a big ball of small, isolated groups, sticking together by office politics. In your software you'd need to call a service made by a different team, sooner or later. Not documented, noone was ever willing to help. To actually get help, you needed to get your boss to talk to their boss. Then you'd have a chance at all.
Oh, and the red tape. Say you needed a simple cable. You know, like those for $2 on Amazon. You'd open a support ticket and a week later everyone involved had signed it off. Probably. Like your boss, the support's boss, the internal IT services' boss, and maybe some other poor sap who felt important. Or maybe not, because the justification for needing that cable wasn't specific enough. I mean, just imagine the potential damage if our employees owned a cable they shouldn't!
You know, after these two employers I actually needed therapy. Looking back now, hooooly shit... that's why I can't repeat often enough that we devs put up with way too much bullshit.3 -
Well two days ago, i was in a sap codin g camp (ranted about that)
The challenge: moke a robot that avoid collisions and 6inds a black mm spot on tha floor
We marginally had enough time te implement sth but well i tried to do an algo.
10 mins before deadline i realized that it wouldnt work. So i took an old prototype (without algo) from the trash bin, fixed compilation errors and went to the competition without testing. Because we had to do a little explanation for the parents about arduinos, we all were shaky. A friend of mine even failed to remember his text xD
Asso, because of Fortuna wanting to beat us down, we were the last team driving in the arena. Everybody got pretty fast times. (with a random algo). At the end, we took our robot with the untestet thrash bin program.
It drove pretty well, avoided collisions and then it happened: it reached (only robot not to collide) the black spot in 1:09!!! 😁7 -
"four million dollars"
TL;DR. Seriously, It's way too long.
That's all the management really cares about, apparently.
It all started when there were heated, war faced discussions with a major client this weekend (coonts, I tell ye) and it was decided that a stupid, out of context customisation POC had that was hacked together by the "customisation and delivery " (they know to do neither) team needed to be merged with the product (a hot, lumpy cluster fuck, made in a technology so old that even the great creators (namely Goo-fucking-gle) decided that it was their worst mistake ever and stopped supporting it (or even considering its existence at this point)).
Today morning, I my manager calls me and announces that I'm the lucky fuck who gets to do this shit.
Now being the defacto got admin to our team (after the last lead left, I was the only one with adequate experience), I suggested to my manager "boss, here's a light bulb. Why don't we just create a new branch for the fuckers and ask them to merge their shite with our shite and then all we'll have to do it build the mixed up shite to create an even smellier pile of shite and feed it to the customer".
"I agree with you mahaDev (when haven't you said that, coont), but the thing is <insert random manger talk here> so we're the ones who'll have to do it (again, when haven't you said that, coont)"
I said fine. Send me the details. He forwarded me a mail, which contained context not amounting to half a syllable of the word "context". I pinged the guy who developed the hack. He gave me nothing but a link to his code repo. I said give me details. He simply said "I've sent the repo details, what else do you require?"
1st motherfucker.
Dafuq? Dude, gimme some spice. Dafuq you done? Dafuq libraries you used? Dafuq APIs you used? Where Dafuq did you get this old ass checkout on which you've made these changes? AND DAFUQ IS THIS TOOL SUPPOSED TO DO AND HOW DOES IT AFFECT MY PRODUCT?
Anyway, since I didn't get a lot of info, I set about trying to just merge the code blindly and fix all conflicts, assuming that no new libraries/APIs have been used and the code is compatible with our master code base.
Enter delivery head. 2nd motherfucker.
This coont neither has technical knowledge nor the common sense to ask someone who knows his shit to help out with the technical stuff.
I find out that this was the half assed moron who agreed to a 3 day timeline (and our build takes around 13 hours to complete, end to end). Because fuck testing. They validated the their tool, we've tested our product. There's no way it can fail when we make a hybrid cocktail that will make the elephants foot look like a frikkin mojito!
Anywho, he comes by every half-mother fucking-hour and asks whether the build has been triggered.
Bitch. I have no clue what is going on and your people apparently don't have the time to give a fuck. How in the world do you expect me to finish this in 5 minutes?
Anyway, after I compile for the first time after merging, I see enough compilations to last a frikkin life time. I kid you not, I scrolled for a complete minute before reaching the last one.
Again, my assumption was that there are no library or dependency changes, neither did I know the fact that the dude implemented using completely different libraries altogether in some places.
Now I know it's my fault for not checking myself, but I was already having a bad day.
I then proceeded to have a little tantrum. In the middle of the floor, because I DIDN'T HAVE A CLUE WHAT CHANGES WERE MADE AND NOBODY CARED ENOUGH TO GIVE A FUCKING FUCK ABOUT THE DAMN FUCK.
Lo and behold, everyone's at my service now. I get all things clarified, takes around an hour and a half of my time (could have been done in 20 minutes had someone given me the complete info) to find out all I need to know and proceed to remove all compilation problems.
Hurrah. In my frustration, I forgot to push some changes, and because of some weird shit in our build framework, the build failed in Jenkins. Multiple times. Even though the exact same code was working on my local setup (cliche, I know).
In any case, it was sometime during sorting out this mess did I come to know that the reason why the 2nd motherfucker accepted the 3 day deadline was because the total bill being slapped to the customer is four fucking million USD.
Greed. Wow. The fucker just sacrificed everyone's day and night (his team and the next) for 4mil. And my manager and director agreed. Four fucking million dollars. I don't get to see a penny of it, I work for peanut shells, for 15 hours, you'll get bonuses and commissions, the fucking junior Dev earns more than me, but my manager says I'm the MVP of the team, all I get is a thanks and a bad rating for this hike cycle.
4mil usd, I learnt today, is enough to make you lick the smelly, hairy balls of a Neanderthal even though the money isn't truly yours.4 -
Got pulled out of bed at 6 am again this morning, our VMs were acting up again. Not booting, running extremely slow, high disk usage, etc.
This was the 6 time in as many weeks this happened. And always the marching orders were the same. Find the bug, smash the bug, get it working with the least effort. I've dumped hundreds of hours maintaining this broken shitheap of a system, putting off other duties to keep mission critical stations running.
The culprits? Scummy consultants, Windows 10 1709, and Citrix Studio.
Xen Server performed well enough, likely due to its open source origins and Centos architecture.
Whelp. DasSeahawks was good and pissed. Nothing like getting rousted out of bed after a few scant hours rest for patching the same broken system.
DasSeahawks lost his temper. Things went flying. Exorcists were dispatched and promptly eaten.
Enough. No consultants, no analysts, and no experts touched it. No phone calls, no manuals, not even a google search. Just a very pissed admin and his minion declaring blitzkrieg.
We made our game plan, moved the users out, smoked our cigs, chugged monster, and queued a gnu-metal playlist on spotify.
Then we took a wrecking ball to the whole setup. User docs were saved, all else was rm -r * && shred && summon -u Poseidon -beast Land_Cracken.
Started at 3pm and finished just after midnight. Rebuilt all the vms with RDP, murdered citrix studio (and their bullshit licenses), completely blocked Windows 10 updates after 1607, and load balanced the network.
So what do we get when all the experts are fired? Stabbed lightning. VMs boot in less than 10 seconds, apps open instantly, and server resources are half their previous usage state. My VMs are now the fastest stations in our complex, as they should be.
Next to do: install our mxgpu, script up snapshots and heartbeat, destroy Windows ads/telemetry, and setup PDQ. damn its good to be good!
What i learned --> never allow testing to go to production, consultants will fuck up your shit for a buck, and vendors are half as reliable over consultants. Windows works great without Microsoft, thin clients are overpriced, and getting pissed gets things done.
This my friends, is why admins are assholes.4 -
Question time:
Has anyone used PHP unit with Selenium before?
I have a.. well words can’t explain it nice enough but, beyond a joke, not even funny, spaghetti code base I’ve come to inherit recently, which god help me, doesn’t follow any design patterns at all, it’s just a stamp this here, staple this down over here and throw paint at the wall and hope it sticks.
It’s a mixture of procedural and functional with the rare class kind of mess.
So attempting to refactor by any means is not a real possibility without some kind of behavioural testing in place first otherwise I know I’m going to end up breaking something somewhere and not even know it.
Also if anyone has had the privilege of such code bases, tips to dealing with the mess are appreciated.
Oh and no, I can’t rm -rf or start again.😭3 -
Why me. Why is it always me who has issues with Windows. (The OS)
I HAVE to use windows for a specific thing right now. Fair enough, I have an old system lying around somewhere with not the best specs ever but it'll do. Windows 7, clean install.
Firstly, let's boot up! Booting goes fine, login goes well... "Installing device drivers" (keyboard and mouse combi). I connected this set a gazillion times before so no clue why windows would need to download the drivers YER AGAIN. But, fine, it works.
Let's connect a USB webcam and to to the hardware testing website to see if my setup is right!
(I mostly don't blame this part on windows)
The webcam drivers install successfully, good. Although the page says it isn't working, it displays the live cam footage well so whatever.
Installed Chrome (not chromium too badly) to see if it shows fine there but chrome doesn't detect ANY cam/mic combination at all, not even the integrated one(s).
Annoying so let's reboot and see if it works normally with all checks okay on Firefox.
Rebooted.... aaaaand the USB webcam driver installation fails. I'm weirded out since the drivers were installed BEFORE the reboot already. Firefox now does not display any can/mic.... until it does after a few reloads. Windows is still saying that the driver installation failed.
The testing webpage, however, still says its not working while I'm literally seeing my ugly smug on screen. I contact support which does a remote check and says all is good but there was probably "a glitch with Windows" while the checks are still mostly red, I take a copy of the chat log just to be sure.
Now, I kinda want to shut this system down until the time I'll need it but I'm rather afraid that Windows is going to throw driver conundrums yet again and I simply *CANNOT* have this right now. So, I'm leaving this system on until I need it, and I'll pray windows plays along well.23 -
So, in my very first rant in this astounding community, I unwittingly decided I’d settled for Ubuntu not knowing the massive sea of distros out there 😊 …... boy was I ignorant!
After testing a number of these distros out there I was comfortable enough to truly settle for Ubuntu 16.04.3 LTS (Xenial Xerus)
I wanted something stable, something that I won’t have to tinker much with, something that has a relatively long-time community support. So, I based my decision vastly on the below points since I think they encompass your everyday Joe distro requirements.
1. Package Manager
2. Desktop environment
3. Community support
4. Stability
Any whom, thanks @Totchinuko for sharing your experience about Linux Mint, also @calmyourtities for the Zorin suggestion. I must say I still like Zorin’s look and feel desktop environment. Also @hacker, @Cyanide for your suggestions and to the guys shared their view and comments on the rant 😊 😉9 -
That I am not good enough for this shit.
Recently left my job because anxiety, a lot of it.
Tbh, I should not burntout myself, because:
- salary was a shit
- the scrum was a lie, there was no end of the sprint, so no retrospective meeting ever done.
- They change the """sprint""" task pile at any moment, usually adding more tasks for the same sprint.
- previous project manager was an idiot who said "yes" at EVERYTHING the client asked, even if the request was outside tje scope of the project.
The project was heavily delayed, and I was the only developer left on the most hideous backend you can imagine (the code was just tje very definition of "what not to do"). NO UNIT TESTING at all.
My task: clean the mess so we have a """stable""" release (with the tests), add the new features and re-do the backend again, but this time properly.
8 months of develop for this shit and they wanted the stable-shit-backend in a month and the new backend in other month "because everithing was already done in the shitty one". Do not forget the new features too.
So, I was doing the imposible to try to do tje task, overdoing hours and reading the docs of the project (because I was new in it), but it take me.a lot of effort to simply correct bugs because of complexity of the code and not understanding fully some parts of the project.
Then the comments like "why this is not finished yet?" Or "I do not understand why this is taking so long"
So, I had poor sleep, I was anxious because my inhability to do the imposible and in the end, a feeling kind of defeated because I quit.
So... that.
Sorry if something is wrong typed or so, english is not my native language.5 -
Two big moments today:
1. Holy hell, how did I ever get on without a proper debugger? Was debugging some old code by eye (following along and keeping track mentally, of what the variables should be and what each step did). That didn't work because the code isn't intuitive. Tried the print() method, old reliable as it were. Kinda worked but didn't give me enough fine-grain control.
Bit the bullet and installed Wing IDE for python. And bam, it hit me. How did I ever live without step-through, and breakpoints before now?
2. Remember that non-sieve prime generator I wrote a while back? (well maybe some of you do). The one that generated quasi lucas carmichael (QLC) numbers? Well thats what I managed to debug. I figured out why it wasn't working. Last time I released it, I included two core methods, genprimes() and nextPrime(). The first generates a list of primes accurately, up to some n, and only needs a small handful of QLC numbers filtered out after the fact (because the set of primes generated and the set of QLC numbers overlap. Well I think they call it an embedding, as in QLC is included in the series generated by genprimes, but not the converse, but I digress).
nextPrime() was supposed to take any arbitrary n above zero, and accurately return the nearest prime number above the argument. But for some reason when it started, it would return 2,3,5,6...but genprimes() would work fine for some reason.
So genprimes loops over an index, i, and tests it for primality. It begins by entering the loop, and doing "result = gffi(i)".
This calls into something a function that runs four tests on the argument passed to it. I won't go into detail here about what those are because I don't even remember how I came up with them (I'll make a separate post when the code is fully fixed).
If the number fails any of these tests then gffi would just return the value of i that was passed to it, unaltered. Otherwise, if it did pass all of them, it would return i+1.
And once back in genPrimes() we would check if the variable 'result' was greater than the loop index. And if it was, then it was either prime (comparatively plentiful) or a QLC number (comparatively rare)--these two types and no others.
nextPrime() was only taking n, and didn't have this index to compare to, so the prior steps in genprimes were acting as a filter that nextPrime() didn't have, while internally gffi() was returning not only primes, and QLCs, but also plenty of composite numbers.
Now *why* that last step in genPrimes() was filtering out all the composites, idk.
But now that I understand whats going on I can fix it and hypothetically it should be possible to enter a positive n of any size, and without additional primality checks (such as is done with sieves, where you have to check off multiples of n), get the nearest prime numbers. Of course I'm not familiar enough with prime number generation to know if thats an achievement or worthwhile mentioning, so if anyone *is* familiar, and how something like that holds up compared to other linear generators (O(n)?), I'd be interested to hear about it.
I also am working on filtering out the intersection of the sets (QLC numbers), which I'm pretty sure I figured out how to incorporate into the prime generator itself.
I also think it may be possible to generator primes even faster, using the carmichael numbers or related set--or even derive a function that maps one set of upper-and-lower bounds around a semiprime, and map those same bounds to carmichael numbers that act as the upper and lower bound numbers on the factors of a semiprime.
Meanwhile I'm also looking into testing the prime generator on a larger set of numbers (to make sure it doesn't fail at large values of n) and so I'm looking for more computing power if anyone has it on hand, or is willing to test it at sufficiently large bit lengths (512, 1024, etc).
Lastly, the earlier work I posted (linked below), I realized could be applied with ECM to greatly reduce the smallest factor of a large number.
If ECM, being one of the best methods available, only handles 50-60 digit numbers, & your factors are 70+ digits, then being able to transform your semiprime product into another product tree thats non-semiprime, with factors that ARE in range of ECM, and which *does* contain either of the original factors, means products that *were not* formally factorable by ECM, *could* be now.
That wouldn't have been possible though withput enormous help from many others such as hitko who took the time to explain the solution was a form of modular exponentiation, Fast-Nop who contributed on other threads, Voxera who did as well, and support from Scor in particular, and many others.
Thank you all. And more to come.
Links mentioned (because DR wouldn't accept them as they were):
https://pastebin.com/MWechZj912 -
I'm feeling like writing this down...
So today I got told off by my boss. Why? Because my job bores me.
My current title, "webmaster", is quite similar to "plumber" where I work. I fix holes on our websites, and I tell "qualified" people (external providers) how a project should be made. Nothing exciting, nothing creative, boring.
So I got told off today for being "laid-back" in a newsletter project (GDPR, looking at you) and not being thorough in my procedures of testing and configuration. Fair enough, I didn't care and I admitted it. It's a boring drag-and-drop done in literally 5 minutes, there's no added brain-value here. Plus I got told off by my IT Manager because our Exchange server would not let me receive test emails. Still doesn't work after a day. Yay.
Then she said "we're doing exciting things here, it's not always the case anywhere else you'd work". And I'm like: "really? I love writing code, seeing things coming alive, investigating why things don't run smoothly, writing efficient code (both in performance and in readability)". I hear many friend devs telling me they're doing that and what they do during their "dev-day"... All I'm doing here is "maintenance" (a.k.a boring) stuff that apparently is "exciting". Adding a <script> to handle google tag manager is hell fun, going through compiled CSS and change color values is also thrilling, finding out if a PDF handler application can handle PDF files, re-plugging a computer monitor to make it work...
I think she meant that I'm not at my place here.
Didn't want to tell her that I have no motivation in doing things I don't enjoy making, i.e, my job.
Good thing I have an interview in two weeks2 -
Does anyone get the feeling that as they become more senior, they care less about meeting "best practices" and more of just "good enough"?
Best practices being everything in those books about TDD, unit testing, design patterns, design artifacts.
Good enough: enough so it won't blow up in prod, some tests but not 80-90%, some docs. Basically not like those public docs, open source projects/frameworks where function is covered
When I first started professionally, I was all about efficiency, good design, reducing technical debt, clean code.
But now, I look at problems and instinctively I may make these decisions but I don't really think about it much. First goal is to just get something working, clean it up later... Maybe.6 -
(long post is long)
This one is for the .net folks. After evaluating the technology top to bottom and even reimplementing several examples I commonly use for smoke testing new technology, I'm just going to call it:
Blazor is the next Silverlight.
It's just beyond the pale in terms of being architecturally flawed, and yet they're rushing it out as hard as possible to coincide with the .Net 5 rebranding silo extravaganza. We are officially entering round 3 of "sacrifice .Net on the altar of enterprise comfort." Get excited.
Since we've arrived here, I can only assume the Asp.net Ajax fiasco is far enough in the past that a new generation of devs doesn't recall its inherent catastrophic weaknesses. The architecture was this:
1. Create a component as a "WebUserControl"
2. Any time a bound DOM operation occurs from user interaction, send a payload back to the server
3. The server runs the code to process the event; it spits back more HTML
Some client-side js then dutifully updates the UI by unceremoniously stuffing the markup into an element's innerHTML property like so much sausage.
If you understand that, you've adequately understood how Blazor works. There's some optimization like signalR WebSockets for update streaming (the first and only time most blazor devs will ever use WebSockets, I even see developers claiming that they're "using SignalR, Idserver4, gRPC, etc." because the template seeds it for them. The hubris.), but that's the gist. The astute viewer will have noticed a few things here, including the disconnect between repaints, inability to blend update operations and transitions, and the potential for absolutely obliterative, connection-volatile, abusive transactional logic flying back and forth to the server. It's the bring out your dead approach to seeing how much of your IT budget is dedicated to paying for bandwidth and CPU time.
Blazor goes a step further in the server-side render scenario and sends every DOM event it binds to the server for processing. These include millisecond-scale events like scroll, which, at least according to GitHub issues, devs are quickly realizing requires debouncing, though they aren't quite sure how to accomplish that. Since this immediately becomes an issue with tickets saying things like, "scroll event crater server, Ugg need help! You said Blazorclub good. Ugg believe, Ugg wants reparations!" the team chooses a great answer to many problems for the wrong reasons:
gRPC
For those who aren't familiar, gRPC has a substantial amount of compression primarily courtesy of a rather excellent binary format developed by Google. Who needs the Quickie Mart, or indeed a sound markup delivery and view strategy when you can compress the shit out of the payload and ignore the problem. (Shhh, I hear you back there, no spoilers. What will happen when even that compression ceases to cut it, indeed). One might look at all this inductive-reasoning-as-development and ask themselves, "butwai?!" The reason is that the server-side story is just a way to buy time to flesh out the even more fundamentally broken browser-side story. To explain that, we need a little perspective.
The relationship between Microsoft and it's enterprise customers is your typical mutually abusive co-dependent relationship. Microsoft goes through phases of tacit disinterest, where it virtually ignores them. And rightly so, the enterprise customers tend to be weaksauce, mono-platform, mono-language types who come to work, collect a paycheck, and go home. They want to suckle on the teat of the vendor that enables them to get a plug and play experience for delivering their internal systems.
And that's fine. But it's also dull; it's the spouse that lets themselves go, it's the girlfriend in the distracted boyfriend meme. Those aren't the people who keep your platform relevant and competitive. For Microsoft, that crowd has always been the exploratory end of the developer community: alt.net, and more recently, the dotnet core community (StackOverflow 2020's most loved platform, for the haters). Alt.net seeded every competitive advantage the dotnet ecosystem has, and dotnet core capitalized on. Like DI? You're welcome. Are you enjoying MVC? Your gratitude is understood. Cool serializers, gRPC/protobuff, 1st class APIs, metadata-driven clients, code generation, micro ORMs, etc., etc., et al. Dear enterpriseur, you are fucking welcome.
Anyways, b2blazor. So, the front end (Blazor WebAssembly) story begins with the average enterprise FOMO. When enterprises get FOMO, they start to Karen/Kevin super hard, slinging around money, privilege, premiere support tickets, etc. until Microsoft, the distracted boyfriend, eventually turns back and says, "sorry babe, wut was that?" You know, shit like managers unironically looking at cloud reps and demanding to know if "you can handle our load!" Meanwhile, any actual engineer hides under the table facepalming and trying not to die from embarrassment.36 -
Most successful? Well, this one kinda is...
So I just started working at the company and my manager has a project for me. There are almost no requirements except:
- I want a wireless device that I can put in a box
- I want to be able to know where that device is with enough accuracy to be able to determine in which box the device was put in if multiple boxes were standing together
So, I had to make a real time localization system. RTLS.
A solo project.
Ok, first a lot of experiments. What will the localization technique be? Which radio are we going to use?
How will the communication be structured?
After about two months I had tested a lot, but hadn't found THE solution. So I convinced my manager to try out UWB radio with Time Difference Of Arrival as localization technique. This couldn't be thrown together quickly because it needed more setup.
Two months later I had a working proof of concept. It had a lot of problems because we needed to distribute a clock signal because the radio listeners needed to be sub-nanosecond synchronous to achieve the accuracy my manager wanted. That clock signal wasn't great we later found out.
The results were good enough to continue to work on a prototype.
This time all wired communication would be over ethernet and we'd use PTP to synchronize the time.
Lockdown started.
There was a lot of trouble with getting the radio chip to work on the prototype, ethernet was tricky and the PTP turned out to be not accurate enough. A lot of dev work went into getting everything right.
A year and 5 hardware revisions later I had something that worked pretty well!
All time synchronization was done hybridly on the anchors and server where the best path to the time master was dynamically found.
Everything was synchronized to the subnanosecond. In my bedroom where I had my test setup I achieved an accuracy of about 30cm in 3d. This was awesome!
It was time to order the actual prototype and start testing it for real in one of the factory halls.
The order was made for 40 anchors and an appointment was made for the installation in the hall.
Suddenly my manager is fired.
Oh...
Ehh... That sucks. Well, let's just continue.
The hardware arrives and I prepare everything. Everything is ready and I'm pretty nervous. I've put all my expertise in this project. This is gonna make my career at this company.
Two weeks before the installation was to take place, not even a month after my manager was fired, I hear that my project was shelved.
...
...
Fuck
"We're not prioritizing this project right now" they said.
...
It would've been so great! And they took it away.
Including my salary and hardware dev cost, this project so far has cost them over €120k and they just shelved it.
I was put on other projects and they did try to find me something that suited me.
But I felt so betrayed and the projects we're not to my liking, so after another 2-3 months I quit and went to my current job.
It would've so nice and they ruined it.
Everything was made with Rust. Tags, anchors, RTLS server, web server & web frontend.
So yeah, sorry for the rambling.5 -
So there is the webapp that the national post is using in Hungary. When you want to search a street in the given city you have to wait until the whole fucking list is populated and the street names are filtered afterwards. (I've got it he only wanted one request per street). But if that won't be enough the drop down menu is offset in some resolutions and the console is full of errors.
I can live with that even with the duplicate street name, but how dare you to publish an app with a search function that is unable to work with the special characters of the specific language? It's not even hard to make it work. You just a lazy ass dumbfuck who copy pasted something from stack overflow and didn't make the effort of testing it.
I mean I would probably jump off of a brifge if I would make such a huge mistake.1 -
I have been keeping this inside for long time and I need to rant it somewhere and hear your opinion.
So I'm working as a Team Lead Developer at a small company remotely based in Netherlands, I've been working there for about 8 years now and I am the only developer left, so the company basically consists of me and the owner of the company which is also the project manager.
As my role title says I am responsible for many things, I maintain multiple environments:
- Maintain Web Version of the App
- Maintain A Cordova app for Android, iOS and Windows
- Working with pure JavaScript (ES5..) and CSS
- Development and maintenance of Cordova Plugins for the project in Java/Swift
- Trying to keep things stable while trying very hard to transit ancient code to new standards
- Testing, Testing, Testing
- Keeping App Stable without a single Testing Unit (sadly yes..)
- Just pure JavaScript no framework apart from JQuery and Bootstrap for which I strongly insist to be removed and its being slowly done.
On the backend side I maintain:
- A Symfony project
- MySQL
- RabbitMQ
- AWS
- FCM
- Stripe/In-App Purchases
- Other things I can't disclose
I can't disclose the nature of the app but the app is quite rich in features and complex its limited to certain regions only but so far we have around 100K monthly users on all platforms, it involves too much work especially because I am the only developer there so when I am implementing some feature on one side I also have to think about the other side so I need to constantly switch between different languages and environments when working, not to mention I have to maintain a very old code and the Project Owner doesn't want to transit to some more modern technologies as that would be expensive.
The last raise I had was 3 years ago, and so far he hasn't invested in anything to improve my development process, as an example we have an iOS version of the app in Cordova which of course involves building , testing, working on both frontend and native side and etc., and I am working in a somewhat slow virtual machine of Monterey with just 16 GB of RAM which consumed days of my free time just to get it working and when I'm running it I need to close other apps, keep in mind I am working there for about 8 years.
The last time I needed to reconfigure my work computer and setup the virtual machine it costed me 4 days of small unpaid holiday I had taken for Christmas, just because he doesn't have the enough money to provide me with a decent MacBook laptop. I do get that its not a large company, but still I am the only developer there its not like he needs to keep paying 10 Developers.
Also:
- I don't get paid vacation
- I don't have paid holiday
- I don't have paid sick days
- My Monthly salary is 2000 euro GROSS (before taxes) which hourly translates to 12 Euro per hour
- I have to pay taxes by myself
- Working remotely has its own expenses: food, heating, electricity, internet and etc.
- There are few other technical stuff I am responsible of which I can't disclose in this post.
I don't know if I'm overacting and asking a lot, but summarizing everything the only expense he has regarding me is the 2000 euro he sends me on which of course he doesn't need to pay taxes as I'm doing that in my country.
Apart from that just in case I spend my free time in keeping myself updated with other tech which I would say I fairly experienced with like: Flutter/Dart, ES6, NodeJS, Express, GraphQL, MongoDB, WebSockets, ReactJS, React Native just to name few, some I know better than the other and still I feel like I don't get what I deserve.
What do you think, do I ask a lot or should I start searching for other job?23 -
This isn't a funny rant or story. It's one of becoming increasingly unsure of the career choices I've made the path they've led me down. And it's written with terrible punctuation and grammar, because it's a cathartic post. I swear I'm a better writer than this.
The highlights:
- I left a low-paying incredibly stable job with room to grow (think specialized office worker at a uni) to become a QA tester at a AAA game studio, after growing bored with the job and letting my productivity and sometimes even attendance slip
- I left AAA studio after having been promoted through the ranks to leading an embedded test tools development team where we automated testing the game (we got to create bots, basically!) and the database, and building some of the most requested tools internally to the company; but we were paid as if we were QA testers, not engineers, and were told that wouldn't change; rather than move over or up, I moved out to a better paying, less fabulous web and tools development job for a no-name company
- No-name company offered one or two days remote, was salaried, and close to home. CTO was a fan of long lunches and Quake 3 Arena 1-2 hours at the end of every day. CTO position was removed, I got a lot of his responsibilities, none of his pay, and started freelancing to learn new skills rather than deal with the CFO being my boss.
- Went to work as a freelancer for an email marketing SaaS provider my previous job had used. Made loads of money, dealt with an old, crappy code base, an old, cranky senior dev, and an owner who ran around like the world was on fire 24/7; but I worked without pants, bought a car, a house, had a kid, etc;
Now during ALL of this, I was teaching game dev as an adjunct at my former uni. This past fall, I went full time as a professor in game dev. I took a huge pay cut, but got a steady schedule (semester to semester anyway) and great benefits. I for once chose what I thought was the job I wanted over more money and something that was just "different". And honestly, I've regretted it so much. My peer / diagonally above me coworker feels untrustworthy half the time and teaches the majority of the programming courses when he's a designer and I've been the game programming professor for 8 years (I also teach non-game programming courses, but those just got folded into the games program...); I hate full-time uni politics; I'm struggling with money for my family; and I am in the car all the time it feels like. I could probably go back to my last job, which had some benefits, but nowhere near as good; my wife doesn't want me back to working in the house all the time because that was a struggle unto itself once we had a kid (for all of us, in different ways); and I have now less than 24 hours to tell my university I want to not pursue longer term contracts for full-time and go back to adjunct next Fall (or walk away entirely), or risk burning a bridge (we are reviewing applicants for next year tomorrow, including my own) by bailing out mid-application process.
I'm not sure I'm asking for advice. I'm really just ranting, I guess. Some people I know would kill to have the opportunities I have. I just feel like each job choice led me further away from a job I liked, towards more money, which was a tradeoff that worked out mostly, but now I feel like I don't have either, and I'm trapped due to healthcare and 401k and such. Sure, I like working more with my students and have been able to really support them in their endeavors this semester, but... that's their lives. Not mine. The wife thinks I should stay at the university and we'll figure out money eventually (we are literally sinking into debt, it's not going well at all), while most people think I should leave, make money, and figure out the happiness factor once my finances are back on track and the kid is old enough to be in school.
And I have less than 24 hours it feels like to make a momentous decision.
Yay. Thanks for reading :)2 -
I used to be a sysadmin and to some extent I still am. But I absolutely fucking hated the software I had to work with, despite server software having a focus on stability and rigid testing instead of new features *cough* bugs.
After ranting about the "do I really have to do everything myself?!" for long enough, I went ahead and did it. Problem is, the list of stuff to do is years upon years long. Off the top of my head, there's this Android application called DAVx5. It's a CalDAV / CardDAV client. Both of those are extensions to WebDAV which in turn is an extension of HTTP. Should be simple enough. Should be! I paid for that godforsaken piece of software, but don't you dare to delete a calendar entry. Don't you dare to update it in one place and expect it to push that change to another device. And despite "server errors" (the client is fucked, face it you piece of trash app!), just keep on trying, trying and trying some more. Error handling be damned! Notifications be damned! One week that piece of shit lasted for, on 2 Android phones. The Radicale server, that's still running. Both phones however are now out of sync and both of them are complaining about "400 I fucked up my request".
Now that is just a simple example. CalDAV and CardDAV are not complicated protocols. In fact you'd be surprised how easy most protocols are. SMTP email? That's 4 commands and spammers still fuck it up. HTTP GET? That's just 1 command. You may have to do it a few times over to request all the JavaScript shit, but still. None of this is hard. Why do people still keep fucking it up? Is reading a fucking RFC when you're implementing a goddamn protocol so damn hard? Correctness be damned, just like the memory? If you're one of those people, kill yourself.
So yeah. I started writing my own implementations out of pure spite. Because I hated the industry so fucking much. And surprisingly, my software does tend to be lightweight and usually reasonably stable. I wonder why! Maybe it's because I care. Maybe people should care more often about their trade, rather than those filthy 6 figures. There's a reason why you're being paid that much. Writing a steaming pile of dogshit shouldn't be one of them.6 -
Welp, this made my night and sorta ruined my night at the same time.
He decided to work on a new gaming community but has limited programming knowledge, but has enough to patch and repair minor issues. He's waiting for an old friend of his to come back to start helping him again, so this leads to me. He needed a custom backend made for his server, which required pulling data from an SQL/API and syncing with the server, and he was falling behind pace and asked for my help. He's a good friend that I've known for a while, and I knew it wouldn't take to long to create this, so I decided to help him. Which lead to an interesting find, and sorta made my night.
It wasn't really difficult, got it done within an hour, took some time to test and fix any bugs with his SQL database. But this is where it get's interesting, at least for me. He had roughly a few hundred people that did beta testing of the server, anyways, once the new backend was hooked in and working, I realized that the other developer he works with had created a 'custom' script to make sure there are no leaks of the database. Well, that 'custom' script actually begins wiping rows/tables (Depends on the sub-table, some get wiped row by row, some just get completely dropped), I just couldn't comprehend what had happened, as rows/tables just slowly started disappearing. It took me a while of checking, before checking his SQL query logs (At least the custom script did that properly and logged every query), to realize it just basically wiped the database.
Welp, after that, it began to restrict the API I was using, and due to this it identified the server as foreign access (Since it wasn't using the same key as his plugin, even though I had an API key created just so it could only access ranks and such, to prevent abuse) and begin responding not with denied, but with a lovely "Fuck you hacker!" This really made my night, I don't know why, but I was genuinely laughing pretty hard at this response.
God, I love his developer. Luckily, I had created a backup earlier, so I patched it and just worked around the plugin/API to get it working. (Hopefully, it's not a clusterfuck to read, writing this at 2 am with less than an hour of sleep, bedtime! Goodnight everyone.)7 -
Sometimes life takes unexpected turns:
I studied mechanical engineering and did some "computer stuff" in my free time, you know, "programming" with Java, toyed around with HTML/CSS/PHP a few years ago, some local server stuff with a raspberry pi, nothing fancy.
Half a year ago i got hired as engineer first but they said they needed an "IT Guy" also.
What i did since then
*Researching, Testing and Planning the introduction of an ERP software
*Planning, coordinating and (partially) setting up a new server for the company (actually two cause redundancy (heavy lifting got done by our IT partner, its not like i suddenly know how to do the entire windows server administration)
*Writing 3 minor tools for some guys in the company in java
*Creating numereous excel vba scripts that make work a lot easier
*doing all the day to day business that comes up when absolutly noone know how to use a pc in the company
*consulting the boss about webshops and websites in general and finding a decent partner
*and some engineering
Did i mentioned that i studied mechanical engineering? I know nothing about all this, or rather, i know enough to know that i know not enough.
My current side project is creating a small intranet, so creating a new VM in Hyper V, setting up some OS (probably slim CentOS), getting a Webserver running and making it somewhat secure. Then i need to create some content, i am very close to just install a mediawiki and call it a day. If i write anything in PHP i fear that i make way to many erros or just reinvent the wheel, on the other hand, i couldnt find anything resembling what i need. I also had to create the front end side, i knew CSS around 2010, there is probably tons of stuff i dont know and i will make so many errors.
This is frustrating, everything i touch feels like i am venturing the beaten path but noone ever showed me the ropes so everything i do feels like childs play. I need an adult. Also the biggest Question remains: What i am?1 -
It’s actually been quite a fun day, after some ranting on one of our slack communities flutter channel, myself and my team realized we were in a really good place to give back.
We have been working on a large scale flutter application for about a year, phase 1 is about done and we at 11k LOC.
We have been doing a big push for testing over the last 2 months and are at about 50% coverage. The thing we realized is that is the 1 place flutter has fallen short with documentation.
Very little about what we learned for testing our code came out of a google search, or it came out of cobbling bits together from numerous searches and sources.
So we decided we are going to plan and host a virtual meetup to discuss what we have learned and hopefully teach a few people some useful things and hopefully also learn a few new things too.
In addition, and as it has a longer shelf life, we going to setup a medium publication for the company and start a series to cover small specific topics, specific use cases or scenarios that we had trouble with and solved.
Today I had my first thing to type out, had worked out how to test that a function that was passed into a widget was called. So the parent passes the child and onTap function but you are testing the child not the parent as the child is reusable...
Anyway, so with that idea I got hold of marketing for some assets, setup the publication and proceeded to type out 3 articles today, all nice short ones under 2 min reading time.
It really is nice to give back, it’s not like I am Remi smart and can go and write BLoC, but I am smart enough to figure shit out and type it up so that the next guy hopefully benefits from my brain bashing.6 -
Does anyone work on a team with multiple stacks?
For example we have batch jobs in Java but also have a JS front-end and APIs.
How do you divide the developers and the work across these projects?
Currently everyone does everything but I feel like this is inefficient and hard to develop expertise. And different people or even the same person will make the same mistakes over and over again because they don't know how to do X or they forget or overlook some quirk. When I switched Beck to JS took me like a week to get a Promises nailed down again. And this morning someone else had a production bug and couldn't figure it out. But when I looked at the code I could pretty much see where an issue could be (uncaught exception in a promise)
Also the testing frameworks are very different and there's a lot of infrastructure technical debt, things that really should've been done a long time or fixed but no one had the time or expertise to do it or notice it (until it causes a production issue and then everyone is like WTF is happening??!!!!).
I'm not the manager but I always feel that the team needs to be split along the language lines and specific people need to own these projects to review and code changes for all these common newbie errors. And also developer enough expertise to foresee problems before it becomes a production issue.9 -
rant="""
It's too many features for me to keep up with. And the client just bounces between this matrix of all the possible permutations of them, refusing to admit that he is asking for mutually exclusive behavior in more than one place. I have mentioned to him at least 12 times a year that there is too much going on, not organized, we need to simplify, prioritize, or we will have 100 half baked untested features.
Of course it is more or less made it out to be that this is all my fault, or at least it's hard not to feel that way when I say:
It will be a long time before X will be working, we need 25 other things first.;
Next day he asks:
Have you made any progress on X;
I reply: Now we need 24 things to be done at this rate it will be a month.;
He replies:
Ok but I need this yesterday. How about if you add a new feature Y that does everything X does without those 24 things?;
I reply: That will not work at all like X. Y is just X + 1 more feature.
He replies: Ok well I need Y so when you're done with X I need a way to do it like Y also. I just thought it'd be easier.
EASIER TO ADD MORE FUCKING FEATURES YEAH SURE THATS EASY AS FUCK YOU FUCK FUCK FUCK. He's a nice enough guy, pretty smart compared to my first few paying gigs, but wtf really? How do I come out and tell you I need 25 days and you ADD more work? This was one example.
IN TWO days he has added 12 features. And during the week has asked for 29 UI interfaces to be COMPLETELY different. This is becoming COMMONPLACE. Every week there is either a huge change, or a conversation like about that finds its way into the entire business flow inside an dout.
The worst thing is: I TOTALLY understand what he needs. I feel that HE doesn't. This weekend I spent literally HALF of his retainer on getting equipment into my hands to bring it back to find out it DOESNT WORK. Why aisn't HE doing this so I can finish the features from NOVEMBER that HE NEEDS in order to PROCESS SALES.
I've tried and tried but I just can't get through to this client what a tremendous waste of time his \"process\" is, for lack of a better word. Constant changes, contsant additions, lack of clarity, needless repetition and contradictions, constantly adding moonshot ideas to compete with every industry in the region, and not beta testing anything until something goes wrong.
Fuck this guy! His business is failing and I felt responsible for the longest time but it is clear to me that if I wanted to save his business I would have to ignore 95% of his feature requests. I ignore 50% now because of the stress in trying to determine which of the 3 different paradigms he is talking about changing. I will lose this client, and I feel like he will sue me to get all of his money back. He holds me to very little honestly - BUT WEEKLY reminds me that he won't be able to pay me next month if feature XY and Z arent ready!
If a developer is CLEARLY overwhelmed, it makes NO sense at all to continue to PILE ON feature after feature
"""
try:
while true:
rant+=", after feature"
except DevHeadExplodes as inevitable:
raise YourDevsRatesOrLookElsewhere(inevitable)8 -
The feature was to parse a set of fairly complex xml files following a legacy schema. Problem was, the way this was done previously did not conform to the schema so it was a guideline at best, which over the course of many years snowballed into an anarchy where clients would send in whatever and it was continuously updated per case as needed. They wanted to start enforcing their new schema while phasing out the old method.
The good news is that parsing and serialization is very testable, so I rounded up what I could find of example files and got to work. Around the same time I asked our client if they had any more examples of typical cases we need to deal with, and sure enough a couple of days later I receive a zip with hundreds of files. They also point out that I should just disregard the entire old set since they decided to outright cut support for it after all if it makes things simpler. Nice.
I finish the feature in a decent amount of time. All my local tests pass, and the CD tests pass when I push my branches. Once we push to our QA env though and the integration tests run, we get a pass rate of less than 10%.
I spend a couple of days trying to figure out what's going on, and eventually narrow it down to some wires being crossed with the new vs. old xml formats. I'm at a loss. I keep trying to chip away at it until I'm left with a minimal example, and I have one of those lean-back moments where you're just "I don't get it". My tests pass locally, but in the QA environment they fail on the same files.
We're now 3 people around my workstation including the system architect, and I'm demonstrating to the others how baffling and black magic this is. I postulate that maybe something is cached in my local environment and it's not actually testing the new files. I even deleted the old ones.
"Are you sure you deleted the right files?"
"Duh of course -- but let me check..."1 -
Wish me luck. Looks like the feature I am developing is going to be late because QA doesn't feel like following the estimates we agreed on. We already identified that development was going to be the longest part of this whole effort and that QA was going to be relatively easy, but but no. Because this is the day we have to be "code complete", they don't want to test a relatively simple feature. In fact we had to talk them into even starting testing on it today. Even though regression day is Monday and they are basically going to be done testing their last ticket this morning. Like what the fuck were they going to do for the next 7-8 hours? They don't write any documentation. There are no reports to do. There are no meetings. Did they just want a virtual day off?
Edit: they are literally playing with people's careers here. This is not the first time I have had something delayed by QA even though they agreed that it was simple to test and it was delivered with enough time to fucking test. Then I get in trouble because of late delivery.6 -
Best client I have ever experienced. Kappa
So, I got job to recreate one old website, because the old one was incredibly fucked up. She told us, it was made by someone retarded.
The code was fucked up even more than UI. It was definitely written by some kind of idiot. Diacritics, mixed languages, no OOP, no FW, just copy&paste. Yeah copy and paste for every page.
The DB was another level of shit. Inifine is not enough to describe it. Column names with whitespace, diacritics, uppercase, lowercase...pure hell. Yeah and I had to import it.
Whenthe new website was ready for testing I got an email from her that it was her who made the website... HER!! Fucking hell, no more of this please!1 -
Hmm. Seniors have the half working experience as I do and I am the only not senior one in Dev team.
I adapt code only to "taste" good for code reviewers, but they allow themselves to commit without caring and just saying :"oh unit testing is boring"
Enough with the kindergarten. Time to prepare myself for the next job.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.
Can I?8 -
So I joined a pretty big organization, and am working here for like the last 4 months. Barely wrote any code, mostly I have been documenting stuff, and testing stuff of other devs.
So I had a doubt regarding a functionality, like what I asked a senior dev was, Where exactly is this logic implemented in the codebase so that I can refer it. He was like, you are supposed to know it since you have worked on a testing ticket of it. And if I ask the manager such questions, he would be pissed off. My point of view is that yes, I might have seen that logic, and it might have been explained it to me once, but at that point of time, I did not knew about which functionality it was being used for. am I in the wrong here? Am I not paying enough attention to the code base given It's my 4th month here?2 -
I remember my colleague who was DevOps guy (15+ years exp) in our one very good project about kids' edutainment.
He always breaks things & blames others when only he had admin access of the tool.
When client was very much interested in Android app, our that DevOps focusing totally on REST API & ignored Android app related DevOps tasks.
Our Android CI/CD was not complete till project ended. Due to his stubborn nature we couldn't take benifit of automation testing.
You can't tell him how to do any task, if you tell then it will be taken by him as an insult to his intelligence.
He would waste his 2 business weeks to find a way to do that task, then he would do some frugal trick half heartedly then he will leave it. Still he wouldn't accept your help due to his ego & he would work on tasks which he likes even though they are of low priority.
He was hellbent on cost cutting so he reduced caching availability to save extra billing, now we couldn't had enough speed for even 10 users to show recommendation feed by API.
Due to this our client couldn't show demo to angel investors properly & didn't get funding.
I don't how with such a bad attitude, he could survive so long.
He had plenty of training certificates (Salesforce etc.) with very little practical knowledge.
God save people of his current & future projects.2 -
I need some opinions on Rx and MVVM. Its being done in iOS, but I think its fairly general programming question.
The small team I joined is using Rx (I've never used it before) and I'm trying to learn and catch up to them. Looking at the code, I think there are thousands of lines of over-engineered code that could be done so much simpler. From a non Rx point of view, I think we are following some bad practises, from an Rx point of view the guys are saying this is what Rx needs to be. I'm trying to discuss this with them, but they are shooting me down saying I just don't know enough about Rx. Maybe thats true, maybe I just don't get it, but they aren't exactly explaining it, just telling me i'm wrong and they are right. I need another set of eyes on this to see if it is just me.
One of the main points is that there are many places where network errors shouldn't complete the observable (i.e. can't call onError), I understand this concept. I read a response from the RxSwift maintainers that said the way to handle this was to wrap your response type in a class with a generic type (e.g. Result<T>) that contained a property to denote a success or error and maybe an error message. This way errors (such as incorrect password) won't cause it to complete, everything goes through onNext and users can retry / go again, makes sense.
The guys are saying that this breaks Rx principals and MVVM. Instead we need separate observables for every type of response. So we have viewModels that contain:
- isSuccessObservable
- isErrorObservable
- isLoadingObservable
- isRefreshingObservable
- etc. (some have close to 10 different observables)
To me this is overkill to have so many streams all frequently only ever delivering 1 or none messages. I would have aimed for 1 observable, that returns an object holding properties for each of these things, and sending several messages. Is that not what streams are suppose to do? Then the local code can use filters as part of the subscriptions. The major benefit of having 1 is that it becomes easier to make it generic and abstract away, which brings us to point 2.
Currently, due to each viewModel having different numbers of observables and methods of different names (but effectively doing the same thing) the guys create a new custom protocol (equivalent of a java interface) for each viewModel with its N observables. The viewModel creates local variables of PublishSubject, BehavorSubject, Driver etc. Then it implements the procotol / interface and casts all the local's back as observables. e.g.
protocol CarViewModelType {
isSuccessObservable: Observable<Car>
isErrorObservable: Observable<String>
isLoadingObservable: Observable<Void>
}
class CarViewModel {
isSuccessSubject: PublishSubject<Car>
isErrorSubject: PublishSubject<String>
isLoadingSubject: PublishSubject<Void>
// other stuff
}
extension CarViewModel: CarViewModelType {
isSuccessObservable {
return isSuccessSubject.asObservable()
}
isErrorObservable {
return isSuccessSubject.asObservable()
}
isLoadingObservable {
return isSuccessSubject.asObservable()
}
}
This has to be created by hand, for every viewModel, of which there is one for every screen and there is 40+ screens. This same structure is copy / pasted into every viewModel. As mentioned above I would like to make this all generic. Have a generic protocol for all viewModels to define 1 Observable, 1 local variable of generic type and handle the cast back automatically. The method to trigger all the business logic could also have its name standardised ("load", "fetch", "processData" etc.). Maybe we could also figure out a few other bits too. This would remove a lot of code, as well as making the code more readable (less messy), and make unit testing much easier. While it could never do everything automatically we could test the basic responses of each viewModel and have at least some testing done by default and not have everything be very boilerplate-y and copy / paste nature.
The guys think that subscribing to isSuccess and / or isError is perfect Rx + MVVM. But for some reason subscribing to status.filter(success) or status.filter(!success) is a sin of unimaginable proportions. Also the idea of multiple buttons and events all "reacting" to the same method named e.g. "load", is bad Rx (why if they all need to do the same thing?)
My thoughts on this are:
- To me its indentical in meaning and architecture, one way is just significantly less code.
- Lets say I agree its not textbook, is it not worth bending the rules to reduce code.
- We are already breaking the rules of MVVM to introduce coordinators (which I hate, as they are adding even more unnecessary code), so why is breaking it to reduce code such a no no.
Any thoughts on the above? Am I way off the mark or is this classic Rx?16 -
TITANOSAURUS CRAP!!!
Whose idea was to send an e-mail at 11pm about a dev job convention for this weekend!!! And on top of that there will be testing to weed out the candidates!
SIMPLY GREAT! I have to be off town for unavoidable family matters for three days without Internet connection...
Thanks a lot automated mail system for letting me know 4 days in advance that I will fail!!!
It's not that things were awful enough, now I have one more reason to be stressed, get more rashes and weep internally! -
Today, I have installed/uninstalled a combination of [windows 7, arch linux, dual-boot] a total of 9 times...
I wouldn't be surprised if my 120G SSD fails next week
It all started when I had to whip up a GUI-wrapped youtube-dl based program for a windows machine.
Thinking a handy GUI python library will get it done in no time, I started right away with the Kivy quick-start page in front of me.
Everything seemed to be going fine, until I decided it would be "wise" to first check if I can run Kivy on said windows machine.
Here I spent what felt like a day (5 hours) trying to install core pip modules for kivy.. only before realizing my innocent cygwin64 setup was the reason everything was failing, and that sys.platform was NOT set to "win32" (a requirement later discovered when unpacking .whl files)
"Okay.. you know what? Fuck........ This."
In a haze of frustration, I decided it was my fault for ever deciding to do Python on windows, and that "none of this would've happened if I were installing pip modules on a Linux terminal"...
I then had the "brilliant" idea of "Why don't I just use Linux, and make windows a virtual machine within, for testing."
And so I spent the next hour getting everything set up correctly for me get back to programming.... And so I did.
But uh... you're doing GUI stuff, right? -> Yeah...
And you uh.. Kivy uses OpenGL on windows, doesn't it? -> Yeah..?
OpenGL... 2.
-> Fuck.
That's when I realized my "brilliant" idea, was actually a really bad prank. Turns out.. I needed a native windows environment with up-to-date non-virtual graphics drivers that supported at least OpenGL2 for Kivy GUI programs!
Something I already had from square 1.
And at this point, it hurts to even sigh knowing I wasted hours just... making... poor decisions, my very first one being cygwin64 as a substitution for windows cmd.
But persistent as any programmer should be in order to succeed, I dragged my sorry ass back to the computer to reinstall windows on the actual hardware... again.
While the windows installer was busy jacking off all over my precious gigabytes (why does it need that much spaaace for a base install??? fuck.). I had "yet another brilliant idea" YABI™
Why not just do a dual-boot? That way, you have the best of both worlds, you do python stuff in Linux, and when it's time to build and test on the target OS, you have a native windows environment!
This synthetic harmony sounded amazing to the desperate, exhausted, shell of a man that I had become after such a back-breaking experience with cygwin
Now that my windows platter with a side of linux was all set-up and ready-to-go, I once again booted up windows to test if Kivy even worked.
And... It did!
And just as I began raising my victory flags, I suddenly realized there was one more thing I had to do, something trivial, should take me "no time" to do, being in a native windows environment and all.................... -.- (sigh)
I had to make sure it compiles to a traditional exe...
Not a biggy, right? Just find one of those py2exe—sounding modules or something, and surprisingly enough, there was indeed a py2exe—sounding module, conveniently named... py2exe.
Not a second thought given, I thought surely this was a good enough way of doing it, just gonna look up the py2exe guide and...
-> 3 hours later + 1 extra coffee
What do you meeeeean "module not found"? Do I need to install more dependencies? Why doesn't it say so in the DAMN guide? Wait I don't? Why are you showing me that error message then????
-------------------------------
No. I'm not doing this.
I shut off my computer and took a long... long.. break.
Only to return sometime the next day and end up making no progress, beating my SSD with more OS installs (sometimes with no obvious reason to do so).
Wondering whether I should give up Kivy itself as it didn't seem compatible with py2exe.. I discovered pyInstaller, which seemed to be the way Kivy wants exe's to be made on windows..
Awesome! I should've looked up how Kivy developers make exe's instead of jumping straight into py2exe land, (I guess "py2exe" just sounded more effective to me then)
More hours pass, and you'd think I'd have eliminated all of my build environment problems by now... but oh, how wrong you'd be...
pyInstaller was failing, and half the solutions I found online were to download some windows update KB32946..whatever...
The other half telling me to downgrade from Python 3.8.1 to Python 3.8.0000.009 (exaggeration! But you get the point)
At the end of all that mess, I decided it wasn't worth some of my lifespan, and that maybe.. just maybe.. it would've been better to create WINDOWS GUI with the mother fuc*ing WINDOWS API.
Alright, step 1: Get Visual Studio..
Step 2: kys
Step 3: kys again.6 -
I had a tight deadline so what I did to finish the feature was to cut corners by not writing optimized code and not doing enough dev testing to ensure the feature works.
End of today, I've moved the ticket to QA.4 -
Nightmare morning. Woke up for the fact that my app in app store is crashing on opening. Yesterday submitted improvements to the app (react-native).
Tested locally on simulator and also on real machine by react-natives --variant Release. Worked ok. But now when I build it with xcode and sent it to app store, it's no longer working at all =/.
Im losing users by every minute. Was able to immediately make a hotfix, but apple has not taken any hurry in reviewing it. Also it's not possible to revert previous version in app store, I just have to submit a new version that will be reviewed. I even called them and they promised to hurry but nothing's happened and it's been like 4-5 hours already.
I got so bad luck because usually in review they test the app, but now they didn't, and this time it didn't work at all. And I thought that testing it by react-natives --variant release mode would be enough, but apparently theres something different when you build and archive it with xcode. I feel my app is doomed now, many of the users might abandon it completely =/.
If I learned something it is that always try to test the last modified version of the app. Even if the modification seems small. Don't trust react-natives --variant release for testing an ios app.2 -
I just fucked up real bad:
My phone was giving some error about not being able to install an update. Fair enough, i think to myself, so i try rebooting. Still nothing...
I then remember that i at some point OEM unlocked it for some testing, so i start up adb and see if i can connect during the update process. I can't. This is bad: I can't get into my home environment, nor can i connect with adb
Then i try booting into recovery, but instead of booting to ACTUAL recovery, it boots to some custom made "E-Recovery" made by huawei (my phone is a huawei p9 lite), which only gives me the option to download the update, which crashes, and no way of resetting. However, from here, i am finally able to connect to my internal storage via hisuite to make a backup
Next up: Bootloader
So i next load up the unlocked bootloader to try and manually flash the update. That works great, but it still wont boot normally. So i figure: it must think my device is in fact a different device. At this point i'm pretty fucked: Even though i have my data backed up, i can't manually download the update from huawei's site because i don't have the right keys, and i can't download an OTA because their site sucks and half of the downloads don't work, including the one i need. So now i'm stuck here with a bricked phone because EMUI doesn't know how to install an update.
I then did the stupidest thing i have done to date: i wanted to flash a custom recovery image over the "E-Recovery" in order to do some troubleshooting, but instead of writing
"fastboot (mydeviceid) flash recovery recovery.img"
I wrote
"fastboot (mydeviceid) flash boot recovery.img"
Meaning i flashed my BOOT partition with a custom recovery image that turned out to not be able to run. Great! Now i've totally fucked my boot sequence
I can't call their support line either, because as soon as they realize i've tried to restore it myself, and therefor had my OEM unlocked, they basically just hang up.7 -
I actually learnt this last year but here I go in case someone else steps into this shit.
Being a remote work team, every other colleague of mine had some kind of OS X device but I was working this Ubuntu machine.
Turns out we were testing some Ruby time objects up to a nanosecond precision (I think that's the language defaults since no further specification was given) and all tests were green in everyone's machine except mine. I always had some kind of inconsistency between times.
After not few hours of debugging and beating any hard enough surface with our heads, we discovered this: Ruby's time precision is up to nanoseconds on Linux (but just us on OS X) indeed but when we stored that into PostgreSQL (its time precision is up to microseconds) and retrieved it back it had already got its precision cut down; hence, when compared with a non processed value there was a difference. THIS JUST DOES NOT HAPPEN IN OS X.
We ended up relying on microseconds. You know, the production application runs on Ubuntu too. Fuck this shit.
Hope it helps :)
P.s.: I'm talking about default configs, if anyone knows another workaround to this or why is this the case please share. -
Ok, so: I have a macbook for work. And for the most part, I love it. Its a good looking device that has a fast cpu, enough ram to run stuff locally for testing, even multiple services / environments at the same time without getting overly sluggish.
And, the best thing: It isn't Windows. I have a good, working shell (zsh), so I can use all the command line tooling I could wish for, I have a somewhat working package manager and everything.
But there are just some little things I really can't wrap my head around. And since everything is so locked in by Apple, there are no sensible ways to fix those things without having a bunch of extra programs / services running all the time, introducing overhead, configuration for things I neither want nor need, and so on.
First of all, why the hell did you think the normal way of typing "@" on a german iso keyboard is the key combination for closing the currently focused application? I am a daily user of macos for over 2 years now, and I still keep quitting applications regularly, almost every day.
Or, scroll direction: I use a mouse (g pro wireless) and not just the touchpad, but when I am in a meeting or something (or when I take my macbook with me to configure a switch that isn't accessible over the network), I don't want to take the mouse with me, the touchpad is pretty good, it is big, precise and everything. But for some dumb reason, they decided to reverse the scroll direction for the mouse by default, so if you change that to use the mouse like a normal person, it also changes the scroll direction for the touchpad. And, the worst part is: there doesn't seem to be ANY easy way to separate those two settings, or to automatically set the scroll direction when a mouse is connected.
So every time I use my laptop somewhere else, wich also happens regularly, the scroll directions is wrong, which means I have to go into the settings, change it, then change it back when I am at my desk again.
It just doesn't make any sense, stop trying to "know what our customers want", and please, dear Mr. Tim Apple, give your customers the freedom to know for themselves what they want.
Thanks for listening to my TED Talk.8 -
oh my goodness if I dhsfjhsjfhj
i can barely type right now im so frusterated
I've told my manager multiple times that I don't feel comfortable with the task hes trying to give me because it feels way too large (its designing/programming/testing/documenting an entire prototype cloud file sync application and server backend service on my own, replacing one we have had for several years) and he still just ignores me and persists that I should be thankful for the opportunity and challenge.
It pisses me off so much when people say dumb shit like, 'its a great opportunity to learn' at work. No it isn't. Your boss is going to be on your fucking case for taking too long or not delivering enough, and thats exactly what happened. He got upset and said he was expecting more things to have been written down by now, like design notes. I was just fuming. Design notes? I'm not even a freaking designer, I've never designed any type of big software ever, what the fuck do you want from me.
On top of that, I don't know where the hell he expects me to get time for this. I'm apparently also devops so I get yoinked off of anything im doing if some stupid thing breaks in some other environment about something I really don't even care about. Any other random ass task just gets dumped on me too. I'm supposed to be a 'junior developer', and get paid as such (i've wanted to go to the intermediate level but get told the title doesn't actually matter and no pay raise for you) but I get the responsibilties of a whole fucking team dumped on me and its just
do I just quit now? I'm just, for fuck sakes man4 -
Alright, it's been a while since I expressed my thoughts/feelings but here is what I'm dealing with.
Ever since I was a kid I've played games and even ended up enjoying the testing of new beta games more than actually playing games. The first games I played were atomic bomberman and worms. I was 4 at the time and lived in Denmark. By the age of 6 I moved to The Netherlands and have dealt with 8 years of being bullied for a reason I do not know. So as you can imagine I've dealt with a serious depression for a while and have always felt out of place.
Later after a few failed attempts of following an education I got into development. This was after I wasn't accepted into an education of game design. The course I follow now describes itself as application development but all we're doing there is building websites and not learning a proper way to keep code clean.
In the second year of the three year course we had to follow our first internship. This was the first positive thing I've had with school in my entire life. I ended up working for a company that had a game which tested your skill, the game was used by recruiters for bigger companies to pre select the right people for interviews. I had a look at the code of the game and it was a mess, after a couple of meetings further I managed to get them far enough that I could start working on a complete rewrite of their game.
So far it's been a rough road to becoming a game dev but I most certainly hope to own a studio one day. Now I only need to manage until I've got there3 -
My work product: Or why I learned to get twitchy around Java...
I maintain a Java based test system, that tests a raster image processor. The client is a Java swing project that contains CORBA bindings to the internal API of the raster image processor. It also has custom written UI elements and duplicated functionality that became available in later versions of Java, but because some of the third party tools we use don't work with later versions of Java for some reason, it's not possible to upgrade Java to gain things as simple as recursive directory deletion, yes the version of Java we have to use does not support something as simple as that and custom code had to be written to support it.
Because of the requirement to build the API bindings along with the client the whole application must be built with the raster image processor build chain, which is a heavily customised jam build system. So an ant task calls out to execute a jam task and jam does about 90% of the heavy lifting.
In addition to the Java code there's code for interpreting PostScript files, as these can be used to alter the behaviour of the raster image processor during testing.
As if that weren't enough, there's a beanshell interface to allow users to script the test system, but none of the users know Java well enough to feel confident writing interpreted Java scripts (and that's too close to JavaScript for my comfort). I once tried swapping this out for the Rhino JavaScript interpreter and got all the verbal support in the world but no developer time to design an API that'd work for all the departments.
The server isn't much better though. It's a tomcat based application that was written by someone who had never built a tomcat application before, or any web application for that matter and uses raw SQL strings instead of an orm, it doesn't use MVC in any way, and insane amount of functionality is dumped into the jsp files.
It too interacts with a raster image processor to create difference masks of the output, running PostScript as needed. It spawns off multiple threads and can spend days processing hundreds of gigabytes of image output (depending on the size of the tests).
We're stuck on Tomcat seven because we can't upgrade beyond Java 6, which brings a whole manner of security issues, but that eager little Java updated will break the tool chain if it gets its way.
Between these two components we have the Java RMI server (sometimes) working to help generate image data on the client side before all images are pulled across a UNC network path onto the server that processes test jobs (in PDF format), by reading into the xref table of said PDF, finding the embedded image data (for our server consumed test files are just flate encoded TIFF files wrapped around just enough PDF to make them valid) and uses a tool to create a difference mask of two images.
This tool is very error prone, it can't difference images of different sizes, colour spaces, orientations or pixel depths, but it's the best we have.
The tool is installed in both the client and server if the client can generate images it'll query from the server which ones it needs to and if it can't the server will use the tool itself.
Our shells have custom profiles for linking to a whole manner of third party tools and libraries, including a link to visual studio 2005 (more indirectly related build dependencies), the whole profile has to ensure that absolutely no operating system pollution gets into the shell, most of our apps are installed in our home directories and we have to ensure our paths are correct for every single application we add.
And... Fucking and!
Most of the tools are stored as source bundles in a version control system... Not got or mercurial, not perforce or svn, not even CVS... They use a custom built version control system that is built on top of RCS, it keeps a central database of locked files (using soft and hard locks along with write protecting the files in the file system) to ensure users can't get merge conflicts by preventing other users from writing to the files at all.
Branching is heavy weight and can take the best part of a day to create a new branch and populate the history.
Gathering the tools alone to build the Dev environment to build my project takes the best part of a week.
What should be a joy come hardware refresh year becomes a curse ("Well fuck, now I loose a week spending it setting up the Dev environment on ANOTHER machine").
Needless to say, I enjoy NOT working with Java. A lot of this isn't Javas fault, but there's a lot of things that Java (specifically the Java 6 version we're stuck on) does not make easy.
This is why I prefer to build my web apps in python or node, hell, I'd even take Lua... Just... Compiling web pages into executable Java classes, why? I mean I understand the implementation of how this happens, but why did my predecessor have to choose this? Why?2 -
Trying to learn JavaScript unit testing with Vue.js and it's not going well. Took long enough just to get everything installed and now it errors as it doesn't understand <template> tags. Why is it so difficult?
-
I have no specific story to tell (for now. Will post ke if i remember one) but i have had tons of CS teachers that are shit. From ones who don't know shit to ones who are so bad as a human being i am sure thrte are hundreds of people out there to kill them. I have had multiple teachers where all they did was read out a book and we'd have o site everything they read. Whole fucking semester. And not just one person or once. M-U-L-T-I-P-L-E TIMES AND TEACHERS. then I ve had ones who would rejection my code even if it's better, is right, can andle more edge cases, most likely magnitfrs of times faster and isn an eye sore with just effig if-else on op of if-else nested within if-else with many for loops. Then there are those who want you to do just what they want and expect you to not have a life of your own. Those who blatantly abuse their powers. Those who couldn't care less. Those who are not that bad a teacher but their attitude and style just makes you want to leave. There's one currently who wants a group of 4 people in second year to develop a full blown industry level application in mere 3 weeks. AND WE ARE HAVING OUR THEORY PAPRRS INBETWEEN FOR 2 EFFING WEEKS. So that's just like a month. Fortunately I have a group that's good enough that I can have them do the testing and filling up the documentation (did I mention that he needs full documentatiin for software plus a report on how our development process) and have them work on presentation (yup. We need to present this thing) all for just 50 marks. 1 uni credit. Our system still gives 80% weightage to pure theory. Plus the practical part is somewhat theory too.
Our HOD wants us *insists*forces** to stay back at college and work on projects (which is nice but what he ments is use the shitty outdated books from early 2000s to study something). Now I'd be happy to stay back if college provided decent internet (I am not asking for gigabit speeds. Even 1-2Mbps would work) and place to sit. But nope, our college non-teaching staff is eager to send us out of their department and by extention college building. There is literally nowhere you can sit. Plus yup, there is no internet and nowhere for you to plug your laptop in. That's a moot point anyway because they don't want you to use your laptop in college library or anywhere anyways. Plus you don't get much of mobile data too because of the building design. Those work only near windows. Why would I be at college if I can get a 50+Mbps down, area to sit, snacks, port to charge all at home. And you'd say we should talk with him about this – well it's not his issue is all he has to say.
Well, such is life in Indian colleges. And my college/uni is one of the better ones.1 -
Hey guys, first time writing here.
Around 8 months ago I joined a local company, developing enterprise web apps. First time for me working in a "real" programming job: I've been making a living from little freelance projects, personal apps and private programming lessons for the past 10 years, while on the side I chased the indie game dev dream, with little success. Then, one day, realized I needed to confront myself with the reality of 'standard' business, where the majority of people work, or risk growing too old to find a stable job.
I was kinda excited at first, looking forward to learning from experienced professionals in a long-standing company that has been around for decades. In the past years I coded almost 100% solo, so I really wanted to learn some solid team practices, refine my automated testing skills, and so on. Also, good pay, flexible hours and team is cool.
Then... I actually went there.
At first, I thought it was me. I thought I couldn't understand the code because I was used reading only mine.
I thought that it was me, not knowing well enough the quirks of web development to understand how things worked.
I though I was too lazy - it was shocking to see how hard those guys worked: I saw one guy once who was basically coding with one hand, answering a mail with another, all while doing some technical assistance on the phone.
Then I started to realize.
All projects are a disorganized mess, not only the legacy ones - actually the "green" products are quite worse.
Dependency injection hell: it seems like half of the code has been written by a DI fanatic and the other half by an assembly nostalgic who doesn't really like this new hippy thing called "functions".
Architecture is so messed up there are methods several THOUSANDS of lines long, and for the love of god most people on the team don't really even know WHAT those methods are for, but they're so intertwined with the rest of the codebase no one ever dares to touch them.
No automated test whatsoever, and because of the aforementioned DI hell, it's freaking hard to configure a testing environment (I've been trying for two days during my days off, with almost no success).
Of course documentation is completely absent, specifications are spread around hundreds of mails and opaquely named files thrown around personal shared folders, remote archives, etc.
So I rolled my sleeves up and started crunching as the rest of the team. I tried to follow the boy-scout rule, when the time and scope allowed. But god, it's hard. I'm tired as fuck, I miss working on my projects, or at least something that's not a complete madness. And it's unbearable to manually validate everything (hundreds of edge cases) by hand.
And the rest of the team acts like it's all normal. They look so at ease in this mess. It's like seeing someone quietly sitting inside a house on fire doing their stuff like nothing special is going on.
Please tell me it's not this way everywhere. I want out of this. I also feel like I'm "spoiled", and I should just do like the others and accept the depressing reality of working with all of this. But inside me I don't want to. I developed a taste for clean, easy maintainable code and I don't want to give it up.3 -
A very long rant.. but I'm looking to share some experiences, maybe a different perspective.. huge changes at the company.
So my company is starting our microservices journey (we have a 359 retail websites at this moment)
First question was: What to build first?
The first thing we had to do was to decide what we wanted to build as our first microservice. We went looking for a microservice that can be used read only, consumers could easily implement without overhauling production software and is isolated from other processes.
We’ve ended up with building a catalog service as our first microservice. That catalog service provides consumers of the microservice information of our catalog and its most essential information about items in the catalog.
By starting with building the catalog service the team could focus on building the microservice without any time pressure. The initial functionalities of the catalog service were being created to replace existing functionality which were working fine.
Because we choose such an isolated functionality we were able to introduce the new catalog service into production step by step. Instead of replacing the search functionality of the webshops using a big-bang approach, we choose A/B split testing to measure our changes and gradually increase the load of the microservice.
Next step: Choosing a datastore
The search engine that was in production when we started this project was making user of Solr. Due to the use of Lucene it was performing very well as a search engine, but from engineering perspective it lacked some functionalities. It came short if you wanted to run it in a cluster environment, configuring it was hard and not user friendly and last but not least, development of Solr seemed to be grinded to a halt.
Elasticsearch started entering the scene as a competitor for Solr and brought interesting features. Still using Lucene, which we were happy with, it was build with clustering in mind and being provided out of the box. Managing Elasticsearch was easy since there are REST APIs for configuration and as a fallback there are YAML configurations available.
We decided to use Elasticsearch since it provides us the strengths and capabilities of Lucene with the added joy of easy configuration, clustering and a lively community driving the project.
Even bigger challenge? Which programming language will we use
The team responsible for developing this first microservice consists out of a group web developers. So when looking for a programming language for the microservice, we went searching for a language close to their hearts and expertise. At that time a typical web developer at least had knowledge of PHP and Javascript.
What we’ve noticed during researching various languages is that almost all actions done by the catalog service will boil down to the following paradigm:
- Execute a HTTP call to fetch some JSON
- Transform JSON to a desired output
- Respond with the transformed JSON
Actions that easily can be done in a parallel and asynchronous manner and mainly consists out of transforming JSON from the source to a desired output. The programming language used for the catalog service should hold strong qualifications for those kind of actions.
Another thing to notice is that some functionalities that will be built using the catalog service will result into a high level of concurrent requests. For example the type-ahead functionality will trigger several requests to the catalog service per usage of a user.
To us, PHP and .NET at that time weren’t sufficient enough to us for building the catalog service based on the requirements we’ve set. Eventually we’ve decided to use Node.js which is better suited for the things we are looking for as described earlier. Node.js provides a non-blocking I/O model and being event driven helps us developing a high performance microservice.
The leap to start programming Node.js is relatively small since it basically is Javascript. A language that is familiar for the developers around that time. While Node.js is displaying some new concepts it is relatively easy for a developer to start using it.
The beauty of microservices and the isolation it provides, is that you can choose the best tool for that particular microservice. Not all microservices will be developed using Node.js and Elasticsearch. All kinds of combinations might arise and this is what makes the microservices architecture so flexible.
Even when Node.js or Elasticsearch turns out to be a bad choice for the catalog service it is relatively easy to switch that choice for magic ‘X’ or component ‘Z’. By focussing on creating a solid API the components that are driving that API don’t matter that much. It should do what you ask of it and when it is lacking you just replace it.
Many more headaches to come later this year ;)3 -
This is an actual transcript...
Since it's way too long for the normal 5000 characters, hence splitting it up...
Infra Guy: mr Dev, could you please give some rational for update of jjb?
Dev: sparse checkout support is missing
Infra Guy: is this support mandatory to achive whatever you trying to do?
Dev: yes
Infra Guy: u trying to get set of specific folder for set of specific components?
Dev: yes
Infra Guy: bash script with cp or mv will not work for you?
Dev: no
Infra Guy: ?
Dev: when you have already present functionality why reinvent the wheel
Dev: jenkins has support for it
Dev: the jjb is the bottle neck
Infra Guy: getting this functionality onto our infra would have some implications
Dev: why should I write bash script if jenkins allows me to do that
Dev: what implications ??
Infra Guy: will you commit to solve all the issues caused by new jjb?
Dev: you show me the implications first
Infra Guy: like a year ago i have tried to get new jjb <commit_url>
Infra Guy: no, the implications is a grey area
Infra Guy: i cant show all of them and they may hit like in week or eve month
Dev: then why was it not tackled
Dev: and why was it kept like that
Infra Guy: few jobs got broken on something
Dev: it will crop up some time later
Dev: if jobs get broken because of syntax
Dev: then jobs can be fixed
Dev: is it not ???
Infra Guy: ofc
Infra Guy: its just a question who will fix them
Dev: follow the syntax and follow the guidelines
Dev: put up a test server and try and lets see
Dev: you have a dev server
Dev: why not try on that one and see what all jobs fails
Dev: and why they fail
Dev: rather than saying it will fail and who will fix
Dev: let them fail and then lets find why
Dev: I manually define a job
Dev: I get it done
Infra Guy: i dont think we have test server which have the same workload and same attention as our prod
Dev: unless you test how would you know ??
Dev: and just saying that it broke one with a version hence I wont do it
Infra Guy: and im not sure if thats fair for us to deal with implication of upgrading of the major components just cause bash script is not good enough for u
Dev: its pretty bad
Infra Guy: i do agree
Infra TL Guy: Dev, what Infra Guy is saying is that its not possible to upgrade without downtime
Infra Guy: no
Dev: how long a downtime are we looking at ??
Infra Guy: im saying that after this upgrade we will have deal with consequences for long time
Infra Guy-2: No this is not testing the upgrade is the huge effort as we dont have dev resources to handle each job to run
Dev: if your jjb compiles all the yaml without error
Dev: I am not sure what consequences are we talking of
Infra Guy: so you think there will be no consequences, right?
Dev: unless you take the plunge will you know ??
Dev: you have a dev server running at port 9000
Infra Guy: this servers runs nothing
Dev: that is good
Dev: there you can take the risk
Infra Guy: and the fack we have managed to put something onto api doesnt mean it works
Dev: what API ?
Infra Guy: jenkins api
Infra Guy: hmmm
Dev: what have you put on Jenkins API ??
Infra Guy: (
Dev: jjb is a CLI
Infra Guy: ((
Dev: is what I understand
Dev: not a Jenkins API
Infra Guy: (((
Dev: (((((
Infra Guy: jjb build xmls and push them onto api
Infra Guy: and its doent matter
Dev: so you mean to say upgrading a CLI is goig to upgrade your core jenkisn API
Dev: give me a break
Infra Guy: the matter is that even if have managed to build something and put it onto api
Infra Guy: doesnt mean it will work
Dev: the API consumes the xml file and creates a job
Infra Guy: right
Dev: if it confirms to the options which it understands
Dev: then everything will work
Dev: I am actually not getting your point Infra Guy
Infra Guy: i do agree mr Dev
Dev: we are beating around the bush
Infra Guy: just want to be sure that if this upgrade will break something
Infra Guy: we will have a person who will fix it
Dev: that is what CICD is supposed to let me know with valid reasons
Dev: why can't that upgrade be done
Infra Guy: it can be done
Infra Guy: i even have commit in place3 -
I used to love the hero treatment I got long ago in my previous company. Appreciations and what not for conducting events, contributing to open source. I think I burned out later. Later the hero treatment stopped there and I craved for it when I wasn't doing the stuff I used to do - basically I was previously keeping others happy I guess, instead of keeping myself happy. Contributing to open source or conducting events was not even part of the day job and was mostly considered outside the working hours and hence one had to stretch to do all that extra stuff. I over did stuff I guess and burned out
In my current company, I see heros and appreciations so much for contributing to open source though not all our roles are completely defined as open source roles and we instead have to work on closed source or yet to be open sourced stuff. My role is contributing a very tiiiiiny testing bit in an yet to be open sourced project, but a few other colleagues of mine work on closed source paid advanced version of the open source core project
Seeing all the hero treatment where I'm not the hero and seeing all the appreciation, I wonder how it doesn't seem right. Surely I'm jealous, lol. But I also felt the treatment also shows some sort of Special treatment for some people. It's "Special" and not exactly for all and only for open source contributors or people doing all the popularly so called as "cool" stuff. Fortunately for them their job role kinda mentions that I believe. And people working on closed source are now trying to contribute there. I'm stuck with some of my main day job work and dying in guilt for burning out, and not being able to contribute to open source and also kind of starting to hate open source for it's dark sides. Reminds me Batman dialogue "You either die a hero, or you live long enough to see yourself become the villain.". Open Source dark sides - of course the possibile dark sides of companies funding open source, the people behind the companies and also of course my company being one of them possibly, though if you ask anyone they say "Community comes first". That's full of lies is what I would say.
Inclusivity gets thrown out the window. Heroes get to talk. Heroes get worshipped. Others are not even noticed I think. I guess the only way to get noticed is to imitate the heroes
At some point I realized I'm envying or idolizing a crazy set of people, or like putting them on a pedestal. I'm trying to fix that in my head. But oh my, you should see all the treatment, the respect, etc. Surely some people just are there to do meh or grunt work or even good work or whatever without much appreciation, and then have to move on. No respect or consideration for opinions, thoughts usually. Some of them don't even have the time to care to check what people have to say. Top down hierarchy but they say it's flat hierarchy. They don't even wanna listen to some of us I think, that is during team meetings. Only very few care from what I have noticed
One good thing is I have to come to realize how much I'm like them in some behaviours and feeling damn guilty. I sometimes spend time thinking how to change myself for the long term. And how to avoid the toxic behaviors in the team and also control my anger and control my response to their behaviours. I'm also trying to understand where I'm climbing the ladder with my assumptions and also trying to see the "real" thing instead of assuming or being blind or imagining etc. But it has become so hard because idk if people are faking it, it's become very hard to always assume people are telling the truth 🙈 though it makes to assume or believe that by default. If people are okay with themselves lying, who am I question that huh1 -
So, I have been offered two jobs at the same company (big, global corp)
1. RPA coordinator or operator or business analyst. Completely new to me, they're happy with my background enough so that I could learn on the job. RPA is new in this place and they're creating team from scratch.
2. Member of IT security team where most of my work would be split between things that interest me greatly - vulnerabilities, fixing them and pen testing.
I'm not sure what to pick, really.
Option 1 seems to be way more future proof and seems like a lifetime opportunity to get into something relatively new, potentially more ££ down the road.
Option 2 is what I already spent some time learning and I have quite a big interest in. I've always been less of a programmer and more of an admin/sec guy.
Tbh before option 1 called me yesterday I thought that option 2 is a dream job for me. Now I'm all in doubt.12 -
Being pretty much the only one who has some knowledge of how to code and get my way around tech (even if minimal, I'm too lazy for my own good) in my familiar household - and by extension, my family (Family extends FamiliarHousehold - LoL I'm sorry) - (my brother is on his first grade of a programming course in high school, I'm a 2nd grade uni student aiming to become a game dev) sometimes I wish I knew nothing of it.
Don't get me wrong, I do like working on code (if in Java. C is making me wanna tear my eyes out) but sometimes ignorant family members push me through the edge.
I worked on a business thing my family started this summer and one of the "jobs" was managing everything via a website.
Fair enough, I knew nothing of it when I started but I learn fast and just like that I knew my way around it. The problem came when I had to teach the person who started the project how it worked. This doesn't sound all that bad except he is kinda in the stone age regarding informatics.
He got a computer a few years ago and he pretty much only played poker in it, and he still had one of those old nokias you could throw to a wall and get a hole into it. The computer is like 9y and runs like crap.
To make things worse he bought a new phone, a smartphone, and pestered me to teach him. I swear trying to teach him is like repeating the same thing 1000x and pray he keeps it in his head. Spoiler: he doesn't. ( sanity--; )
So to try and easy my suffering I decided to make a manual for the website (which is outdated by now because the team behind the website did a 180 and some things looks different), but it acted as if I'd done nothing. ( sanity--; )
To top this off he keeps on saying I don't wanna help him. ( sanity--; )
This kept going for the whole damn summer, and meanwhile I had to go back to uni and in the first days I still got like 4-5 calls/day, half of those might about the smallest things because he's so panicky.
Like (both examples happened while I was still there but it kinda goes along those lines sometimes):
- (During the period they changed the website the first time since we're there; they were mostly doing changes back and forth and testing because it had a new layout for a day or 2 before going back; also the site was totally functional, except for a thing or 2)
Him: "They're changing the website, why are they doing that?"
Me: "Because it's their website and they can?"
Him: "WHY DIDN'T THEY LET US KNOW"
Me: "They don't have to, they don't work for you." ( sanity--; )
Or (during the same period; the pages have a menu on the left; one of the submenus has a counter that resets every time the session ends; during that maintenance time they must've "disabled" the function because the number kept growing even after the session ended):
Him: "WHY IS THE NUMBER GROWING?"
Me: "They're working on the code, relax, it's nothing."
Him: "But why." ( sanity--; )
The only quesion he pretty much hasn't asked me yet is why "Is the website's colour this one and not that one?".2 -
I have a great chemistry with this coworker.
He lacks some depth of android knowledge but is always very interested in adding new google libs to the project, so we often discuss and come up with the safest, scalable solutions.
He is SE2 and I am SE1.
But one thing that is interesting about him is the way he gives estimations for the tasks. He takes usually that much amount of time that i would take, for a task, but he would quote half the time estimates.
the bosses usually come on the last days to check the feature demo, but QAs gets the first build when a task is completed. I have seen his first builds that goes to QA and most of the time, boy it has some amazingly stupid bugs.
dude would just put a util function, then run the build, if everything compiled, he would just give the build to QA directly. he wouldn't even check that the util function gave an expected output or not.
He is simply wasting QA time n efforts, and risking product quality by not testing enough, but he almost always gets a clean chit for this behavior just because he did the work super fast.
Dude is super cool and i don't envy him for his good luck, but rather think of him as an inferior dev. However bosses think of him as a better dev and my TL even once told me to "be like him"
So i guess this is how corporate works. I will try to apply this in my next role in current/next organisation.3 -
Okay. Here's the ONLY two scenarios where automated testing is justified:
- An outsourcing company who is given the task of bug elimination in legacy code with a really short timeframe. Then yes, writing tests is like waging war on bugs, securing more and more land inch after inch.
- A company located in an area where hiring ten junior developers is cheaper than hiring one principal developer. Then yes, the business advantage is very real.
That's it. That's the only two scenarios where automated testing is justified. Other such scenarios doesn't exist.
Why? Because any robust testing system (not just "adding some tests here and there") is a _declarative_ one. On top of already being declarative (opposed to the imperative environment where the actual code exists), if you go further and implement TDD, your tests suddenly begins to describe your domain area, turning into a declarative DSL.
Such transformations are inevitable. You can't catch bugs in the first place if your tests are ignorant of entities your code is working with.
That being said, any TDD-driven project consists of two things:
- Imperative code that implements business logic
- Declarative DSL made of automated tests that also describes the same business logic
Can't you see that this system is _wet_? The tests set alone in a TDD-driven project are enough to trivially derive the actual, complete code from it.
It's almost like it's easier to just write in a declarative language in the first place, in the same way tests are written in TDD project, and scrap the imperative part altogether.
In imperative languages, absence of errors can be mathematically guaranteed. In imperative languages, the best performance (e.g. the lowest algorithmic complexity) can also be mathematically guaranteed. There is a perfectly real point after which Haskell rips C apart in terms of performance, and that point happens earlier on than you think.
If you transitioned from a junior who doesn't get why tests are needed to a competent engineer who sees value in TDD, that's amazing. But like with any professional development, it's better to remember that it's always possible to go further. After the two milestones I described, the third exists — the complete shift into the declarative world.
For a human brain, it's natural to blindly and aggressively reject whatever information leads to the need of exiting the comfort zone. Hence the usual shitstorm that happens every time I say something about automated testing. I understand you, and more than that, I forgive you.
The only advice I would allow myself to give you is just for fun, on a weekend, open a tutorial to a language you never tried before, and spend 20 minutes messing around with it. Maybe you'll laugh at me, but that's the exact way I got from earning $200 to earning $3500 back when I was hired as a CTO for the first time.
Good luck!6 -
I starting developing my skills to a pro level from 1 year and half from now. My skillset is focused on Backend Development + Data Science(Specially Deep Learning), some sort of Machine Learning Engineer. I fill my github with personal projects the last 5 months, and im currently working on a very exciting project that involves all of my skills, its about Developing and deploy a Deep Learning Model for Image Deblurring.
I started to look for work two months to now. I applied to dozens of jobs at startups, no response. I changed my strategy a bit, focusing on early stage startups that dont have infinite money for pay all that senior devs, nothing, not even that startups wish to have me in their teams. I even applied to 2 or 3 and claim to do the job for little payment, arguing im not going for money but experience, nothing. I never got a reply back, not an interview, the few that reach back(like 3, from 3 or 4 dozen of startups), was just for say their are not interested on me.
This is frustrating, what i do on my days is just push forward my personal projects without rest. I will be broke in a few months from now if i dont get a job, im still young, i have 21 years, but i dont have economic support from parents anymore(they are already broke). Truly dont know what to do. Currently my brother is helping me with the money, but he will broke in few months as i say.
The worst of all this case is that i feel capable of get things done, i have skills and i trust in myself. This is not about me having doubts about my skills, but about startups that dont care, they are not interested in me, and the other worst thing is that my profile is in high demand, at least on startups, they always seek for backend devs with Machine Learning knowledge. Im nothing for them, i only want to land that first job, but seems to be impossible.
For add to this situation, im from south america, Venezuela, and im only able to get a remote job, because in my country basically has no Tech Industry, just Agencies everywhere underpaying devs, that as extent, dont care about my profile too!!! this is ridiculous, not even that almost dead Agencies that contract devs for very little payment in my country are interested in me! As extra, my economic situation dont allows me to reallocate, i simple cant afford that. planning to do it, but after land some job for a few months. Anyways coronavirus seems to finally set remote work as the default, maybe this is not a huge factor right now.
I try to find job as freelancer, i check the freelancer sites(Freelancer, Guru and so on) every week more or less, but at least from what i see, there is no Backend-Only gigs for Python Devs, They always ask for Fullstack developers, and Machine Learning gigs i dont even mention them.
Maybe im missing something obvious, but feel incredible that someone that has skills is not capable of land even a freelancer job. Maybe im blind, or maybe im asking too much(I feel the latter is not the case). Or maybe im overestimating my self? i think around that time to time, but is not possible, i have knowledge of Rest/GraphQL APIs Development using frameworks like Flask or DJango(But i like Flask more than DJango, i feel awesome with its microframework approach). Familiarized with containerization and Docker. I can mention knowledge about SQL and DBs(PostgreSQL), ORMs(SQLAlchemy), Open Auth, CI/CD, Unit Testing, Git, Soft DevOps Skills, Design Patterns like MVC or MTV, Serverless Environments, Deep Learning Solutions, end to end: Data Gathering, Preprocessing, Data Analysis, Model Architecture Design, Training and Finetunning. Im familiarized with SotA techniques widely used now days, GANs, Transformers, Residual Networks, U-Nets, Sequence Data, Image Data or high Dimensional Data, Data Augmentation, Regularization, Dropout, All kind of loss functions and Non Linear functions. My toolset is based around Python, with Tensorflow as the main framework, supported by other libraries like pandas, numpy and other Data Science oriented utils.
I know lot of stuff, is not that enough for get a Junior Level underpaid job? truly dont get it, what is required for get a job? not even enough for get an interview?
I have some dev friends and everyone seems to be able to land jobs, why im not landing even an interview?
I will keep pushing my Dev career, is that or starve to death. But i will love to read your suggestions! how i can approach this?
i will leave here my relevant social presence:
https://linkedin.com/in/...
https://github.com/ElPapi42
Thanks in advance!9 -
TL;DR: Embedded software guy needs to create a multi-instance sandbox environment in Jenkins for testing and not sure what good solutions are out there. Looking for suggestions.
So at work, we have these really cool integration tests that validate our system for flight safety. What's not so cool is that due to factors outside of my control, each test has to be run serially and the entire test suite can take many many hours. This is mostly due to a hardware limitation (not enough physical NICs), but there are other SW factors as well.
What I would like to do is somehow be able to wrap up all the resources into a neat little package and then deploy that package into some kind of virtual environment that can be instantiated on a Jenkins job. The NIC issue would be replaced with a virtual one and *theoretically* I should be able to spawn as many instances of this virtual environment as my CPU and RAM can handle. In short, I want to pseudo parallelize our test suite and drive down our testing time. Somehow I would need to be able to control this entire thing from a script of some sort.
Does anyone know of something out there that would satisfy these kinds of requirements? Double internet points if it's open source. -
I know this is too late to ask this question, but am a final year computer science student, average in all core subjects with 0 knowledge of web development (except a few html tags, but not enough to make a wikipedia like website) or other professional streams.
I know java and python enough to make oop classes and understand code written in them.
Should i
A)study more about web dev/ml-ai/testing/other "professional" stuff
B) learn more and strengthen my core subjects , like operating system, algorithms, data structures, etc or
C) learn another core language like C/c++/assembly?27 -
Upgrading my tech skills.. Once again I feel my personal my personal dev environment and told are much more up-to-date than what I use at work.... Though the book Kim reading is on TDD and was written 3 years ago.
Maybe I should read another on in cloud services and ML... but don't have any motivation for these topics.
I need TDD for work because now we're emphasizing unit test coverage...
I usually only use manual functional tests to verify the final outputs as either the testing framework is broken (JS) or I don't have time to relearn the frameworks for the particular language...
Anyway got off topic... So questions after:
1. Do you ever feel your technologically always more ahead than what you do at work and essentially you bring skills to the job but you don't learn much out of it?
2. How do you test? I actually got into a bit of a argument/discussion with my colleagues about how to implement unit tests. Apparently there are 2 ways to test? Black box vs WhiteBox. She said she tests only Public methods using mock inputs, dependencies. She read online and seems there is an opinion that should only test public functions and if you can't then your app is designed incorrectly, not separated enough.
For me I test the private functions individually (WhiteBox/Java reflection) because the public one is like generateReport and as a whole is like a Pachinko machine, too many unique paths that would need a test case for.
So thoughts? Yes sorry for turning it into a remake I guess...24 -
Why is it acceptable for dev think it's ok to skip testing? WHY?
Today i was told that a co-worker had good enough judgment when it comes to CSS if it will break in other browsers other than chrome. I'd accept that if they knew the browsers inside out and read all the release docs but no, not them. Even more so when it's not their field of expertise.
After working for 2+ years at the some company, with a QA team, it's become evident no one does any proper testing, even the friking QA team!
I'm close to define the supported browsers as "What ever the developer used at the time of build".
Am I really the only Dev to test in at least 2 other browsers? -
So well... 2 monitors are not enough for testing an server ha application with teaming/bounding interface with 3 nic.
-
So I'm the only tester at my company, and I've had to adapt a lot of my skills to fit in with our in house expectations. So everything was fine when I focused on trying one component (manual and automation).
Slowly over time I've had more components to test with exact same resource of me.
Eventually my automatic breaks as I could no longer maintain that and all the other manual tests and all the other jobs I do ( light level internal it support, jira ticket rangerling, rollbar (error messages) basic investigation).
My boss keeps saying why is x,y,z not tested / missed while I can point to time periods where was focused on v instead so didn't get to others.
I keep wanting to just hit them with a keyboard until they realise 10± devs to one qa in our environment just isn't going to work.
I keep getting promised some dev time to help with qa so I can play catch up but never seems to arrive.
Don't get me wrong I'm not the best I used to be at testing(before joining I was proud of my abilities, maybe all stick and not enough carrot wears you down)
We keep taking on new work flows that make no sense (create a bug ticket, then a task ticket if bug take more than hour to do, then I'm stuck chasing developers to update their task ticket so I cam update the bug ticket (if its a bug then log sodding log time against it).
I've gotten to point now where I'm stopping my suggestions, explaining why something didn't get dome and will see if they can answer their own stupid questions
At what point do you stop ignoring the voices in your head (metaphorically).
Do other people go through this cycle where feel like pushing a boulder up the hill, for them to either push your boulder down the hill, replace it with a bigger boulder, move to a bigger hill, get you to move more rocks at once or all the above.
I know QA has its quite and busy phases but for me it seems to be constantly busy with no respite4 -
Some really motivated guy.
He apparently wants to monitore his opensource application on his spare time.
His application is likely to have no users though.
But well, that guy looks like kinda montivated.
For professional purpose, guy already did monitore with newrelic.
Seems like he was not satisfied and switched to datadog 3 years ago.
But liking digging dirt, he migrated to self hosted telegraf/influx/grafana (which he likes to about)
Today that guy is not in his company but on his potatoe machine in the cloud. So he wants to be minimalistic, datadog should do.
Now you got it, random ff*** is me, on a weekend, a shinny saturday for that matter.
Actually now it is night.
Now let's start the fight.
I have datadog scripts!
But datadog be sneaky as well. datadog upgraded to v6 8=)
-> scripts ain't working. outdated.
I check the logs. Too bad!
-> datadog removed dogstatsD.log in v6!
Well I have nothing to do in my life it is too cold outside as they say. I read the (sluggy) datadoc and tries some shell command (given in doc) to upload some events to dogstatsd (via udp).
-> Nothing happens, neither in local nor in remote.
ok maybe command not up to date, so let me try some official library. datadog from python. Feels like a nice try!
-> only available for python >= 3.5. 3.4 on my good ol' jessie. Upgrading os for datadog not acceptable.
Maybe dogstatsD not started... doc says it is by default, but well, not the first time doc is wrong... I put datadog as log verbose. Guess what: as per standard: shitload of error.
Digging... kubexx, docker and whatsoever apparently preventing collector to do its normal stuff
np, I am gonna check that on github! Goog, people have the same errors. They seem to fix it by trying some settings, with. or without luck
-> I am not that warrior to check every stuff
Ok, let's stop the datadog events, it works. It does not anymore. You know that sentence. We all know it.
Still not enough!
How about testing that uber super nice feature of v6. The logs. After all I want to make events out of my applicative logs.
How about reading the log again. Configure the yaml log as they say. Done. Make some pattern. Read the best practive. Done. Configures the yaml. Done. Now testing.
-> remote datadog interface be like: no logs for you dude you need to pay
ff***f*f*f
Fuck datadog, fuck that v6 version, good old tail -Fxx | someaggreate.js|sendmail will do... -
How do you deal when you are overpromising and underdelivering due to really shitty unpredictable codebase? Im having 2-3 bad sprints in a row now.
For context: Im working on this point of sale app for the past 4 months and for the last 3 sprints I am strugglig with surprises and edgecases. I swear to god each time I want to implement something more complex, I have to create another 4-5 tickets just to fix the constraints or old bugs that prevent my feature implementation just so I could squeeze my feature in. That offsets my original given deadlines and its so fucking draining to explain myself to my teamlead about why feature has to be reverted why it was delayed again and so on.
So last time basically it went like this: Got assigned a feature, estimated 2 weeks to do it. I did the feature in time, got reviewed and approved by devs, got approved by QA and feature got merged to develop.
Then, during regression testing 3 blockers came up so I had to revert the feature from develop. Because QA took a very long time to test the feature and discover the blockers, now its like 3 days left until the end of the sprint. My teamlead instantly started shitting bricks, asked me to fix the blockers asap.
Now to deal with 3 blockers I had to reimplement the whole feature and create like 3 extra tickets to fix existing bugs. Feature refactor got moved to yet another sprint and 3 tickets turned into like 8 tickets. Most of them are done, I created them just to for papertrail purposes so that they would be aware of how complex this is.
It taking me already extra 2 weeks or so and I am almost done with it but Im going into really deep rabbithole here. I would ask for help but out of other 7 devs in the team only one is actually competent and helpful so I tried to avoid going to him and instead chose to do 16 hour days for 2 weeks in a row.
Guess what I cant sustain it anymore. I get it that its my fault maybe I should have asked for help sooner.
But its so fucking frustrating trying to do mental gymnastics over here while majority of my team is picking low hanging fruit tasks and sitting for 2 weeks on them but they manage to look good infront of everyone.
Meanwhile Im tryharding here and its no enough, I guess I still look incompetent infront of everyone because my 2 weeks task turned into 6 weeks and I was too stubborn to ask for help. Whats even worse now is that teamlead wants me to lead a new initiative what stresses me even more because I havent finished the current one yet. So basically Im tryharding so much and I will get even extra work on top. Fucking perfect.
My frustration comes from the point that I kinda overpromised and underdelivered. But the thing is, at this point its nearly impossible to predict how much a complex feature implementation might take. I can estimate that for example 2 weeks should be enough to implement a popup, but I cant forsee the weird edgecases that can be discovered only during development.
My frustration comes from devs just reviewing the code and not launching the app on their emulator to test it. Also what frustrates me is that we dont have enough QA resources so sometimes feature stands for extra 1-2 weeks just to be tested. So we run into a situation where long delays for testing causes late bug discovery that causes late refactors which causes late deliveries and for some reason I am the one who takes all the pressure and I have to puloff 16 hour workdays to get something done on time.
I am so fucking tired from last 2 sprints. Basically each day fucking explaining that I am still refactoring/fixing the blocker. I am so tired of feeling behind.
Now I know what you will say: always underpromise and overdeliver. But how? Explain to me how? Ok example. A feature thats add a new popup? Shouldnt take usually more than 2 weeks to do my part. What I cant promise is that devs will do a proper review, that QA wont take 2 extra weeks just to test the feature and I wont need another extra 2 weeks just to fix the blockers.
I see other scrum team devs picking low hanging fruit tasks and sitting for 2 weeks on them. Meanwhile Im doing mental gymnastics here and trying to implement something complex (which initially seemed like an easy task). For the last 2 weeks Im working until 4am.
Im fucking done. I need a break and I will start asking other devs for help. I dont care about saving my face anymore. I will start just spamming people if anything takes longer than a day to implement. Fuck it.
I am setting boundaries. 8 hours a day and In out. New blockers and 2 days left till end of the sprint? Sorry teamlead we will move fixes to another sprint.
It doesnt help that my teamlead is pressuring me and asking the same shit over and over. I dont want them to think that I am incompetent. I dont know how to deal with this shit. Im tired of explaining myself again and again. Should I just fucking pick low hanging fruit tasks but deliver them in a steady pace? Fucking hell.4 -
#Suphle Rant 1: Laravel closing the gap
This is the first of a series of long overdue rants regarding Suphle, because I have had so so much to grumble about over the last ~2 years building it. A bit of introduction: I compiled a list of all the challenges I faced in my time as a salaried PHP developer. I also gathered issues complained about by other developers in a laravel group I'm part of, and decided to solve them at the framework level since they're avoidable. I also borrowed impressive features encountered in my time working with other languages and invented a new one, as well. I quit my job last July, still haven't get a new one yet cuz office workload kept conflicting with Suphle development. I concluded all work and testing on it back in August/September but it's yet to be officially released since the docs is still in progress.
Anyway, yesterday, I stumbled upon what is IMO the most progressive /tangible update I've seen in all my time following Laravel updates. It's called [precognition](don't have enough rep to post the PR link but you can search on their repo), and contains features that are actually beneficial to both developer and end user. It also turns out to be functionality that was part of Suphle's bragging rights. Their DX is still tacky but I'm devastated cuz it's a matter of time before they work it out. Makes me wonder what the quality of all I've built would be in a year if it doesn't become big enough to attract frequent contribution. I guess there's only so much one can do against a community.
Later that evening, I found a developer from my country on twitter who claims to be making a decent living. A little snooping around his profile informed me he's building his own back end framework but in NodeJS. I know with every degree of certainty that what he'll eventually do can't hold a candle against Suphle in overall functionality or thoroughness. Not a dick measuring contest but when your motive isn't significant innovation, you'll neither plan properly nor even know what exactly to build. You'll just reinvent the wheel as an academic exercise
Yet, I can't help but have that sinking feeling he's winging it, while making a windfall with his dozens of freelance projects. It kind of feels like I shortchanged myself, and Suphle's shelf life will suffer the same fate as a hobby project for 10 stars (which I don't even have yet!!). I reached out to him to rub minds together but he ignored. More pain.
I'll get over this and return to work on the docs, but from the look of things, the end isn't an appealing or expected /deserved one