- git clone <repo1> <dest1>
- git clone <repo2> <dest2>
- git clone <repo3> <dest3>
What do they do? git clone repo1, 2, 3 without giving <dest> parameter, which clones into default folders named after the repos. Build fails of course because repo1 depends on repo2 and 3 being named specifically. He sends me the error log (remote colleague, yay) and I say: you gotta rename those folders. Instead of renaming them, tries other things for hours, then comes back and shows me other build errors. I look over the errors and realize, again, the folders are still named incorrectly. Rinse and repeat 2 more times before finally the build process works. Lost a few hours to this. This kinda stuff keeps happening with this colleague. It's really a huge time-sink. If I had more time, I would do remote call and watch over them, but I'm so deep in my own stuff that I don't have time to babysit (not to mention calls take 1-2 hours with this person just trying to explain really basic things, over and over and over again).
repo1/bin/build_all .But you know what's also frustrating? Code bases which involve multi-step manual steps to build.
You should be able to get a working local environment with a single command.
You should be able to get a working local build with a single build command.
If you have depedent projects, they should either be in a monorepo, or delivered through a packaging system so they are not depend on the specific local naming of other repos.
Having a repo depend on a different repo being in a specific place on the file system is bad, having multiple of them is terrible.
Stick what's needed in an onboarding script, and make sure it works before onboarding someone.
Ideally that script should be kept to a minimum, if it grows too large that's a sign you've split things artificially instead of finding natural splits.
In an ideal world and in retrospect, you are right. But the build process is very old, created by someone long gone, of which multiple projects depend upon, each with minor tweaks and always reliant on the same hard-coded paths which IMO isn't that bad and can easily be rectified - it's really not worth the time or energy to allow dynamically named folders, not to mention dangerous since it's a critical production system that's worked forever. Nobody wants to break a running system, nor has the time to clean things up properly, especially since there are tons of build scripts that all rely on these paths, and trying to fix all of them would be a huge amount of work, spread across multiple projects, all requiring sign-off from higher-ups who will never be able to justify the cost to fix something that already works.
1: https://www.joelonsoftware.com/2000/08/09/the-joel-test-12-s...
The full build literally works in one step but the main prerequisite is to perform a few git clone commands which can be copy/pasted from the readme. Can't help it if they want to manually do git clone and let it name folders incorrectly and then subsequently ignore compiler errors and my advice to rename. Changing our antiquated workflow would have required changing a lot of other sensitive dependencies. What ever happened to the old adage "never change a running system" ? ;)
And people here are concentrating on our build system, which I will be the first to admit isn't perfect, but this isn't the only instance of me telling this person how to do things, them not listening to me and doing something else, letting me debug only to realize they didn't listen, telling them how to fix, only to be ignored _again_, rinse and repeat. It's unfortunately a recurring theme. I initially thought it was a communication error on my part, but I've heard similar complaints from several other colleagues as well.
What happened to "never change a running system" is that if the system is barely running at all, you better do change that system.
If I'm the new guy and you tell me how to do things and those things seem bad and there's no explanation for why they need to be that way, I'll also ignore you, coz I know how I want to do things and how things can be done better. Don't tell me to do things X way. Many roads lead to Rome and some are better than others. See my other reply. At my very first job I was also told how things work and how to do things. But things sucked and so I made them better anyhow.
Now, in the other part of the thread you also did mention how they just sent you error logs without reading and thinking about them themselves and such. That definitely is a red flag and the kind of thing that will make me fail someone's probation period. Definitely. But just because someone doesn't think that "the way we've always done things" is a good reason to keep doing something bonkers is where I'm no longer with you. And again, probably just your wording/what you disclose in various parts of these threads but it explains why "we concentrate on certain things only" ;)
I most definitely am not, and constantly push back for changing processes, and do make changes when I am allowed, even when it's not budgeted for or even officially allowed, because we have legacy systems that need to be maintained and some things are truly outdated and need some love. In fact, as a new hire in another life, I used to get scolded for changing _too much_ because I like to constantly improve things. The problem is, in order to ship code at our company and within our budget constraints, you don't have time to constantly refactor, unfortunately.
> is that if the system is barely running at all
Our system is and has been running just fine for many years, thank you very much :)
> there's no explanation for why they need to be that way
There is an explanation: There is no shell script because there is no root for all the repos, and some repos are shared across multiple projects.
I hate reiterating this yet again but is it really that hard to copy/paste a couple git commands? The readme is quite short, and once you've done it one time, it's fairly easy and straightforward to understand.
p.s. just FYI but I didn't downvote you.
If you aren't willing to fix obvious issues like this it is not somewhere that I want to work.
It's not fun to copy/paste 3 git commands? What a truly gilded engineering life you must live! :)
I would also recognize what happened when I see the error messages though and then silent quit until I've been with you guys for long enough my resume doesn't take a hit just because your interview process duped me into starting at your place.
Yes this sounds harsh. I know. Nothing against you personally. But I've been at too many such places. One can do things better.
and btw the system doesn't shit itself that much: the compiler errors are fairly straight-forward: this folder doesn't exist.
Of course everyone can always do better, but it's a legacy inherited system, and works fine, as long as things are named correctly. The readme is actually very short - literally the git commands are there to copy/paste and will create the correct directory names. There are plenty of other things to get hung up on, but naming folders correctly should IMO not be one of them.
And I might not silent quit right away and try to actually improve things and see how it goes/how you "let me".
This does actually remind me of my very first job actually. It's been many, many, many years now. I found a stinking pile of disparate shell and perl scripts that made up the "backend" of the application I was hired into working on. Grown histerically for almost 15 years prior to me being hired fresh out of university. I started extracting common library code out of every single one of these every time that I was tasked with adjusting one of those scripts. I introduced a proper deployment from source control to production the second time I "broke" something, because someone had previously fixed a bug directly in production and forgot to check the fix into source control (and no, I didn't believe that it was not the guy that was working on the project w/ me for one second after seeing how they coded and how they defended everything that was bad about that pile of poo and how "it's too complicated to do X".
Well guess what, this new grad did all of that anyway. Without AI and without IDE refactoring support (I mentioned Perl and shell scripts, did I?) and without a single QA person in sight. And yes, every single one of the readers here very probably has bought a product that was "touched" by that software, without knowing, since it was an in-house administration tool.
Git submodules is a thing ...
edit: removed stupid hack that wouldn't work.
Yes. That's what bash scripts are for.