I was originally a chip designer. Then I shifted into embedded development. Now I’m mainly a C# guy.
But when I shifted into embedded development, I also shifted into doing power engineering. I grabbed a couple of books on the topic at hand, taught myself a lot, and designed the electronics to meet the need. We sold the product to city utilities.
I remember one time I was in a room with probably 10 engineers from one of the utilities. After having described the product to them, and went through a lot of our settings and stuff, I was explaining the difference between two of algorithms we put in (because different utilities use different algorithms, and I just wanted one device that could do both). At some point I was like “which of the two algorithms do you use?” and one responded “well, which do you recommend?” So I talked about why I thought one was better than the other.
They all started looking at each other and nodding and saying “Yeah, that’s the one were going to use.” I realize I could have said anything at that point and they would have agreed. They thought I was expert. And that was my “last two frames” of this comic moment.
Now as a senior dev, I’ve seen enough shit to realize that most people have no idea what is going on, and are flying by the seat of their pants. So I figure my ignorance is a little less than theirs, and that gives me a lot of confidence, but I also realize that I can learn a lot from most people.
Now as a senior dev, I’ve seen enough shit to realize that most people have no idea what is going on, and are flying by the seat of their pants.
What’s helpful in my industry is that new development happens so frequently that the absolute best answer today is probably the wrong one in the next few years. Since I’m never on the absolute cutting edge, I have to trust my team to pitch the plan and we roll with it.
What I think makes me a senior is me knowing that we don’t know anything, but being able to create a plan if/when we have to make changes.
I’ve always felt like I don’t deserve my role, I climbed the proverbial ladder quick and I am very young for my position (Principal Engineer). But I sleep fine at night because at the end of the day I was always honest with my skills, my intentions and my motivations, and I’m always sure to get full agreement from everyone before doing stuff. If after all that nobody figured out I’m a fucking idiot just making an informed guess, that’s on them.
I always fear the next company I join will have “real technical leaders” who will inevitably show me my place, but it hasn’t happened so far (3-4 massive companies in the last decade).
Maybe one day I will meet this person, but it is not this day… And then I try to teach the same to younger engineers to work through problems as a team and just do it until somebody stops you, because in a lot of cases nobody has a clue either, and that’s what it means to lead.
When I was working stand-in positions such as after a move, for example retail, my favorite go-to when asked “Whyyyy?” was “I have no idea. No one told me anything.” I sometimes miss those days.
You’re right though. Most people have enough knowledge to do the steps of the job or task. For many of them skipping a step shuts down that memory, if only temporarily. I’ve met only a handful of true experts. People who can do things forwards, backwards, upside-down, and mix things up on the fly. They are BY FAR the most uncommon.
'Cause COBOL might actually get you a job? Esoteric languages can’t even do that, so you have to hate yourself worse than COBOL if you’re going to learn brainfuck.
“Worse than COBOL.” This is a terrifying concept. 😱
When I was younger, I read R.A Salvatore’s classic fantasy novel, The Crystal Shard. There is a scene in it where the young protagonist, Wulfgar, challenges a barbarian chieftain to a duel for control of the clan so that he can lead his people into a war that will save the world. The fight culminates with Wulfgar throwing away his weapon, grabbing the chief’s head with bare hands, and begging the chief to surrender so that he does not need to crush a skull like an egg and become a murderer.
Well this is me. Begging you. To stop lying. I don’t want to crush your skull, I really don’t.
Correct me if I’m wrong, but it’s not enough to delete the files in the commit, unless you’re ok with Git tracking the large amount of data that was previously committed. Your git clones will be long, my friend
I don’t understand how we’re all using git and it’s not just some backend utility that we all use a sane wrapper for instead.
Everytime you want to do anything with git it’s a weird series or arcane nonsense commands and then someone cuts in saying “oh yeah but that will destroy x y and z, you have to use this other arcane nonsense command that also sounds nothing like you’re trying to do” and you sit there having no idea why either of them even kind of accomplish what you want.
There are tons of wrappers for git, but they all kinda suck. They either don’t let you do something the cli does, so you have to resort to the arcane magicks every now and then anyways. Or they just obfuscate things to the point where you have no idea what it’s doing, making it impossible to know how to fix things if (when) it fucks things up.
It’s because git is a complex tool to solve complex problems. If you’re one hacker working alone, RCS will do an acceptable job. As soon as you add a second hacker, things change and RCS will quickly show its limitations. FOSS version control went through CVS and SVN before finally arriving at git, and there are good reasons we made each of those transitions. For that matter, CVS and SVN had plenty of arcane stuff to fix weird scenarios, too, and in my subjective experience, git doesn’t pile on appreciably more.
You think deleting an empty directory should be easy? CVS laughs at your effort, puny developer.
It’s because git is a complex tool to solve complex problems. If you’re one hacker working alone, RCS will do an acceptable job. As soon as you add a second hacker, things change and RCS will quickly show its limitations. FOSS version control went through CVS and SVN before finally arriving at git, and there are good reasons we made each of those transitions. For that matter, CVS and SVN had plenty of arcane stuff to fix weird scenarios, too, and in my subjective experience, git doesn’t pile on appreciably more.
Yes it is a complex tool that can solve complex problems, but me as a typical developer, I am not doing anything complex with it, and the CLI surface area that’s exposed to me is by and large nonsense and does not meet me where I’m at or with the commands or naming I would expect.
I mean NPM is also a complex tool, but the CLI surface area of NPM is “npm install”.
So basic, well documented, easily understandable commands like git add, git commit, git push, git branch, and git checkout should have you covered.
the CLI surface area that’s exposed to me is by and large nonsense and does not meet me where I’m at
What an interesting way to say “git has steep learning curve”. Which is true, git takes time to learn and even more to master. You can get there solely by reading the man pages and online docs though, which isn’t something a lot of other complex tools can say (looking at you kubernetes).
Also I don’t know if a package manager really compares in complexity to git, which is not just a version control tool, it’s also a thin interface for manipulating a directed acyclic graph.
So basic, well documented, easily understandable commands like git add, git commit, git push, git branch, and git checkout should have you covered.
You mean: git add -A, git commit -m “xxx”, git push or git push -u origin --set-upstream, etc. etc. etc. I get that there’s probably a reason for it’s complexity, but it doesn’t change the fact that it doesn’t just have a steep learning curve, it’s flat out remarkably user unfriendly sometimes.
git add with no arguments outputs a message telling you to specify a path.
Yes, but a more sensible default would be -A since that is how most developers use it most of the time.
git commit with no arguments drops you into a text editor with instructions on how to write a commit message.
Git commit with no arguments drops you into vim, less a text editor and more a cruel joke of figuring out how to exit it.
Again, I recognize that git has a steep learning curve, but you chose just about the worst possible examples to try and prove that point lol.
Git has a steep learning curve not because it’s necessary but because it chose defaults that made sense to the person programming it, not to the developer using it and interacting with it.
It is great software and obviously better than most other version control systems, but it still has asinine defaults and it’s cli surface is over complicated. When I worked at a MAANG company and had to learn their proprietary version control system my first thought was “this is dumb, why wouldn’t you just use git like everyone else”, then I went back to Git and realized how much easier and more sensible their system was.
No it wouldn’t. You’d have git beginners committing IDE configs and secrets left and right if -A was the default behavior.
vim, less a text editor and more a cruel joke of figuring out how to exit it.
Esc, :, q. Sure it’s a funny internet meme to say vim is impossible to quit out of, but any self-respecting software developer should know how, and if you don’t, you have google. If you think this is hard, no wonder you struggle with git.
it chose defaults that made sense to the person programming it, not to the developer using it and interacting with it.
Just because you don’t like the defaults doesn’t mean they don’t make sense. It just means you don’t understand the (very good) reasons those defaults were chosen.
Git has a steep learning curve not because it’s necessary but because it chose defaults that made sense to the person programming it, not to the developer using it and interacting with it.
Git’s authors were the first users. The team that started the linux kernel project created it and used it because no other version control tool in existence at that time suited their needs. The subtle implication that you, as a user of git, know better than the authors, who were the original users, is laughable.
No it wouldn’t. You’d have git beginners committing IDE configs and secrets left and right if -A was the default behavior.
No, you wouldn’t because no one is a git beginner, they’re a software developer beginner who need to use git. In that scenario, you are almost always using repos that are created by someone else or by some framework with precreated git ignores.
You know what else it could do? Say “hey, youve said add with no files selected, press enter to add all changed files”
Esc, :, q. Sure it’s a funny internet meme to say vim is impossible to quit out of, but any self-respecting software developer should know how, and if you don’t, you have google. If you think this is hard, no wonder you struggle with git.
Dumping people into an archaic cli program that doesn’t follow the universal conventions for exiting a cli program, all for the the goal of entering 150 characters of text that can be captured through the CLI with one prompt, is bad CLI design.
There is no reason to ever dump the user to an external editor unless they specifically request it, yet git does, knowing full well that that means VIM in many cases.
And no, a self respecting software developer wouldn’t tolerate standards breaking, user unfriendly software and would change their default away from VIM.
Git’s authors were the first users. The team that started the linux kernel project created it and used it because no other version control tool in existence at that time suited their needs. The subtle implication that you, as a user of git, know better than the authors, who were the original users, is laughable.
Lmao, the idea that we should hero worship every decision Linus Torvalds ever made is the only thing laughable here.
I think in this case, “depth” was am inferior solution to achieve fast cloning, that they could quickly implement. Sparse checkout (“filter”) is the good solution that only came out recently-ish
Lol if an employer can’t have an intelligent discussion about user friendly interface design I’m happy to not work for them.
Every interview I’ve ever been in there’s been some moment where I say ‘yeah I don’t remember that specific command, but conceptually you need to do this and that, if you want I can look up the command’ and they always say something along the lines of ‘oh no, yeah, that makes conceptual sense don’t worry about it, this isn’t a memory test’.
These things are not related. Git uses the system default editor, which is exactly what a cli program dropping you into an editor should use. If that’s Vim and you don’t like that, you need to configure your system or take it up with your distro maintainers.
No, it should prompt you to enter your one sentence description in the CLI itself, and kick you out to an editor only if you provide a flag saying you like writing paragraph long commit descriptions.
Git is complicated, but then again, it’s a tool with a lot of options. Could it be nicer and less abstract in its use? Sure!
However, if you compare what goes does, and how it does, to it’s competitors, then git is quite amazing. 5-10 years ago it was all svn, the dark times. Simpler tool and an actual headache to use.
What are you smoking? Shallow clones don’t modify commit hashes.
The only thing that you lose is history, but that usually isn’t a big deal.
–filter=blob:none probably also won’t help too much here since the problem with node_modules is more about millions of individual files rather than large files (although both can be annoying).
git clone --depth=1 <url> creates a shallow clone. These clones truncate the commit history to reduce the clone size. This creates some unexpected behavior issues, limiting which Git commands are possible. These clones also put undue stress on later fetches, so they are strongly discouraged for developer use. They are helpful for some build environments where the repository will be deleted after a single build.
Maybe the hashes aren’t different, but the important part is that comparisons beyond the fetched depth don’t work: git can’t know if a shallowly cloned repo has a common ancestor with some given commit outside the range, e.g. a tag.
Blobless clones don’t have that limitation. Git will download a hash+path for each file, but it won’t download the contents, so it still takes much less space and time.
If you want to skip all file data without any limitations, you can do git clone --filter=tree:0 which doesn’t even download the metadata
Yes, if you ask about a tag on a commit that you don’t have git won’t know about it. You would need to download that history. You also can’t in general say “commit A doesn’t contain commit B” as you don’t know all of the parents.
You are completely right that –depth=1 will omit some data. That is sort of the point but it does have some downsides. Filters also omit some data but often the data will be fetched on demand which can be useful. (But will also cause other issues like blame taking ridiculous amounts of time.)
Neither option is wrong, they just have different tradeoffs.
See this is the kind of shit that bothers me with Git and we just sort of accept it, because it’s THE STANDARD. And then we crank attach these shitty LFS solutions on the side because it don’t really work.
What was perforce’s solution to this? If you delete a file in a new revision, it still kept the old data around, right? Otherwise there’d be no way to rollback.
Yes but Perforce is a (broadly) centralised system, so you don’t end up with the whole history on your local computer. Yes, that then has some challenges (local branches etc, which Perforce mitigates with Streams) and local development (which is mitigated in other ways).
For how most teams work, I’d choose Perforce any day. Git is specialised towards very large, often part time, hyper-distributed development (AKA Linux development), but the reality is that most teams do work with a main branch in a central location.
“nothing fancy” that’s the issue, just some jumping won’t impress her; you gotta do the real crazy shit. Friggin “wife not impressed by my cooking? I make a hard boiled egg and she isn’t impressed”
Sat on jury duty. We literally said not guilty because the officer was supposed to follow a process for line ups and they didn’t even do the bare minimum. They were like we got out guy
I once had a friend who was robbed of all kinds of stuff including a PS3, and that the guy was signed into his Netflix changing account profiles the very same day. I told him he can just get a tracking number by calling Playstation and that the active police officer can use it to track them. Thing is, the officer ghosted him for like 8 months despite having everything they needed to immediately find the exact location of the perpetrator actively using the stolen property.
They don’t care really. As has been my experience anyway.
I once had my car window smashed, a mix of gear taken…some was expensive, some was personal to me. I felt violated. Called the police, explained, gave S/Ns to what I could, told them exactly who did it. He didn’t give a shit. Actually made me feel like I was wasting his time. I think Seinfeld covered this…
“We’ll let you know if we find anything” “Do you ever find anything?” “No”
But oh, my reg is out of date and the plate scanner picked it up? Boom, they really kick it into gear. So that’s $130… i could just go take care of the tags immediately with a friendly warning but now don’t even want to. And in the end I end up pretty fucked.
If only they put that effort into other things I just might have gotten my linear power amps back. Props to anyone who knows that product.
what? Which comment? Also there are some other comments below with the original picture and link, I don’t think I need to take down this. Maybe take a chill pill 😄 If the moderators want to delete this it’s their choice. I don’t think I’ll ever post another thing in here again to be honest 😅 bye
It’s mind bending that there are actual humans on the planet, paid a shit tonne more than software developers, who not only believe the parody highlighted by @SwiftOnSecutity, but treat and share it as gospel, acting on it with nutjob metrics to “increase productivity” whilst salivating over the hyperbole around “AI” that is sweeping the globe, dreaming of a better world.
One without those pesky developers with their brains, thoughts and opinions.
But, what do I know, I’ve been in this profession for only 40 years…
You’re probably not the biggest asshole in the room. In my experience, the person making decisions (and the most money) is never the most qualified, most competent, most efficient, or hardest working individual. They are just the biggest asshole in the room. They’re willing to be loud and belligerently wrong, they’re willing to take credit for the accomplishments of others, they’re willing to shift blame onto someone else, they’re willing to demand everyone else work harder than they do, and they’re willing to demand far more than their fair share of the profit.
And they will be mollified by the rest because nobody is a bigger asshole. Most people just want to do their jobs, and don’t want to rock the boat. Competent people see opportunity to ride in the wake of the biggest asshole in the room.
If you ever watch Shark Tank, you’ll see they are masters of the craft.
The problem is that most of us have swallowed the ‘competence uber alles’ ideal that school fed us through exams and scoring, when the game really is mostly politics (as in interpersonal relationships). So we are understandably disappointed when the incompetent get promoted through brown nosing or luck, when we should be reevaluating the rules of the game.
That’s always fun in sales. The vendor that brazenly promises two-and-a-half mirage for half the price will win the bid, and the sales people will move on to a different employer when the real budget for the project becomes clear.
I would take the $500 upfront and just log in to Squarespace or whatever website building service there is, do a simple design, tell him he needs to pay this subscription, argue with him and dad why there must be monthly or annual fees and they could have done this themselves for cheaper, whichever way they chose to pay the subscription or not I still get $500 for 2 hours work and the knowledge my father won’t bother me again with website designs
For $500 I’d slap together some fitting WordPress stuff to suit their subject matter and teach them about domain registry and hosting. Then I’d tell them to come back to me with more if they’re interested in any specific features they’re not interested in implementing themselves later.
$500 is worth a little bit of work and I can give them a product that’s as aimless as their ambition for it. They certainly can’t get more than they’re asking for if they don’t know what to ask for.
Chances are this is a kid or NEET and all his friend wants is a super simple website with basic info for his local business. Dad is either doing him a favor, or giving him some pocket change so he’ll stop bothering him for money for a month. This is what happens when you don’t teach your children to be adults, and give them everything instead. Seen it too many times.
Yeah true, many examples could bee true, like the kid could even be a prick and this could be for his buddy that needs a cancer donation page, Like this one.
I could not know, nor can you, due to the limited information we received, I made up a scenario and you made up a scenario. I think chances, like you mentioned in the start, are neither of us being correct or incorrect, we both are just talking around Schrodinger’s website
Java: “Sorry, but the developers of Peanut didn’t declare it to implement the Crackable interface, even though it has all the relevant methods, so if you want to treat it like a nut your choices are write a wrapper class or call those methods using Reflections”
Ditto, but Rust’s traits. God those are so fun. It’s like duck typing a la Python but you can just slap whatever methods you want on a foreign type without worrying about breaking anything because they’re only visible to the current crate (or other crates that import the Trait)
programmer_humor
Top
This magazine is from a federated server and may be incomplete. Browse more on the original instance.