Mine: I nearly took down production by joining multiple large tables on non-indexed columns. Every time a product was updated on the site, MySQL would run my query and join across millions of records.
Infrastructure folks couldn’t figure out why the DB servers kept rubbing out of memory, and I very nervously made the fix. Thankfully the team was understanding (and appreciated that the person reviewing my code had messed up), but it was a terrible day.
So: If you ever think things might not turn out as well as you hoped, move on. There is so much else going on in the world that is at least as interesting as what you are doing, where you have a much better chance of making a difference, that spending time on things that you might not end up proud of is a terrible waste of your short time on Earth.
We hosted on BSDi, a proprietary BSD and every domain customer had their own sub-directory with user and group ownership.
As an aside, BSDi would happily let you run `rm -rf .` and would walk up to root and back down through every sub-directory deleting everything on its way.
One day, probably a month or two into working at what was my dream job, I accidentally ran `chown -r zelphyr .` in the parent directory where we had all our domain customers instead of my personal domain directory. (I can’t remember why I was doing that.)
Instant panic. I just knew I was going to be fired. I sheepishly went to my boss, Todd, and told him what happened. He grinned and exclaimed, “Cool! A challenge!” and had me sit next to him while we wrote a Perl script to look at the paths in /etc/passwd and chown that directory back to its original user.
I’m eternally grateful to Todd for being such a great boss.
Edit to add: in reality, my biggest mistake early on was not learning fundamentals. How binary and processors work, how machine language works and how higher level languages compile down to machine language. I would be a much better programmer had I done so sooner.
Years passed, experience and nuance decayed the strength of my opinions, and it was fascinating to realize -- even where I was perfectly right, I was mostly only right accidentally, my arguments were just a story to fit the narrative, never really fully internalized.
The sysadmin was gone for the day, so I was asked for help.
I saw the root filesystem was full, partly due to a bunch of junk files in `/tmp/`, including some files/directories that started with `.`...
You might guess where this is going, when someone hadn't yet developed good intuition for what was safe and not. At some point in cleaning up (and not having filename completion in that shell), I cavalierly typed:
rm -rf .*
When the command was taking too long, I got a sinking feeling, and hammered Ctrl-C, while in parallel realizing exactly why it was taking so long. (Spoiler: `.*` matches `..`, so `rm` went up the filesystem tree, to `/`, and then tried to go depth-first traversal through the entire tree.)It gets worse. This wasn't just a workstation -- this was a Sun Workstation, in the era of "the plethora of NFS dependencies is the computer". IIRC, either `rm -rf` started following the NFS automounter symlinks, to delete files from servers that it could, or an ad hoc NFS server had been set up on that workstation for some team purpose. Either way, `rm` hit files shared by multiple people, who were already working into the evening on a project.
It was the fault of the intern, who was both inexperienced and overconfident, and my team was really nice about it. Maybe they knew I regretted it so hard that, if I survived the next few minutes, I'd still regret it many years later.
The story goes that software engineering is about knowing how to design a system a build it.
The truth is: you also have to know how to _sell_ your design, how to document your decisions, how to push forward with your agenda. You won't go anywhere without a team that values you. This means that interpersonal and communication skills should be valued much more than what I thought they'd had to be.
The most important part of a person is their relationships (you're not convinced? Try this exercise: describe yourself without mentioning any single relationship or its effect on you. What remains?). This is true both outside and inside your job. Value building strong and good relationships.
I thought for sure at minimum I was at least going to end up in a high pressure meeting about root cause and so on... no doctors complained, no ticket was ever created, the only mention that was ever made to me was "heh, was it you that broke things?" as the SAN guy was heading to his car and I ran past him.
Apparently 4:25 PM is a better time to break everything in a hospital system than the 2:00 AM change windows they schedule and nobody is going to bother calling support when things are working again by 4:30 and they just want to end the day. Service desk guy laughed at me when I apologized and he said he had 0 calls about it by 5:00.
I changed careers and did a 4-month “boot camp”. All the real learning was after that, the hard way.
My first job, I was left to work on a government project by myself. Everyday was mild panic. My only interaction with my boss was a weekly email saying what percentage of the project was complete. No one ever looked at my work, or cared to look. So I bumped it up a few percentage points every week. I declined a permanent position after the contract was over to spare the embarrassment of the state of the project I was building.
After that, I got hired by a consulting company. Over and over again, my total lack of experience was causing issues with clients, and I was in a daily state of stress and anxiety for 2 years until I was let go.
Finally, I got a job building enterprise software, with a well-defined lifecycle, and got my career on track. Eventually I became team lead. Now I work on the Standards and Framework team, building foundational components, libraries and templates for the other teams.
You will make mistakes. They are valuable to you.
I could see my company struggle and fall behind, and I desperately wanted to help turn things around (after all, this company was part of who I was). I overextended myself, made bad engineering and interpersonal decisions, and burned out. Worse, I stayed at the company for far too long, thinking that I could really make a difference in the trajectory.
Reading the article about "keeping your identity small" helped me greatly in not making the same mistakes.
The advice I've learned and that I hope someone could use is this:
only do a PhD if you can't NOT do a PhD, or if you know some specific job that needs it.
Unless your curiosity and desires line up with a great research group, you put yourself in precarious situations, e.g. it's easy to just bounce from one crappy job to another, but trying to go from one advisor to another (especially at a different institution) is incredibly difficult and usually looked upon with suspicion (e.g. whether the original prof is unloading a crappy student).
Don't do a PhD for some external recognition, because it probably won't come unless you are near the top end of consistently top-tier publications every year (e.g. those mad men and women who publish multiple papers at OSDI / SOSP in a given year!). Far more likely you'll find yourself toiling on something to appease your advisor, and in those cases the end result is very underwhelming. Some institutions literally just ask you to hand in your office keys when you turn in your thesis to get your diploma and basically say "thanks for the years have a nice life!".
It turns out that my colleague had an appetite for money beyond his paycheck as a starting engineer, and was talking to certain third-parties that sold peripherals and such out of Silicon Valley; not massive money by today's standards, but not nothing either. My colleague it turns out was somehow providing inside information to whomever. I was not interested in all this sort of stealing and whatnot, but I showed my 'rebel' flag as a cultural thing at that young age and was viewed with suspicion by the security people for sure.
So the Senior Engineers of the department figured out that there was a serious leak one day, and my clean-cut colleague and I both had access to it. The engineering management literally stormed my office, but I happened to be out. I was called to the main office later and it was serious. I denied involvement (TRUE) but they could see I was not telling them everything. My clean cut colleague .. no idea, but I think he worked there for more than a decade after that, with raises. I was put on a secret black list and didnt last much longer.
I never told on my colleague, and he has a house in Marin now. I am certainly unhappy telling this story. Reflecting on it - that story is probably part of why I chose this nick on YNews.
It's a mistake I'm still making, I guess, which is to assume that it could never "be me". It can be anyone. Just ship the damn thing.
Very late did I realize that putting simple php scripting to good and right use is enough to make the same money as trendy job and skill hopping. (on average ... i.e. ignoring outliers)
Biggest whopsie as a 15 year old building servers was starting a server with case covers off to check whether it boots, then dropping a screw on the exposed hard drive board. It left a neat trail of sparks and smoke as it bounced down. 200mb full drive of insurance company data burned in front of my boss watching.
Later in career, different place different times, my colleague and best friend ran a mistyped grep on prod server that tried to suck up all of the files content redirected into a single file. AIX in my limited experience is an unbelievably robust system - but it does Not handle root disk out of space well. Or at all.
Whoops! Oh, and there's that multi-year non-compete agreement… in the only thing I have experience in…
Fifteen years and several retry cycles later, someone who graduated twelve years after me now has the three solid years of full-time experience that I never got (in significant part because once you have a Résumé of Nothing, it stays that way), and just landed a job making about twice as much as I'm potentially going to be able to start making a month or two from now if I drive my context-switching ability and energy output right up to the limit.
Did I mention that getting access to healthcare to fix relevant issues was almost impossible for almost the entire time? At least I have a potential path to it now—and there's only a decade of backlog…
Don't do what I did and waste your life. You need a fucking real job. Do whatever it takes to keep it for long enough. Otherwise you lose.
(In fact I am not entirely coherent in my opinions on the matter, though—and the rule of equal and opposite advice applies…)
Totally stagnant, backwards industry, were the platform suppliers basically make a living, handing in advances from 20 years ago to the industries suppliers in the walled garden.
Its stressful, every machine developed is a unicum, software reuse is widely not used and often not possible, due to the "lowest common denominator" setting up what can work for a team.
All good programmers leave the field as fast as they can. The others, who cant and are worth the salt, are in eternal fear of the A-day or G-day. The day one of the large valley software companies turns around and says "boo".
They could easily replace the whole infrastructure of used software for all machines involved and install a steam like software market place for industrial controller components. No more "laptop-guy" sitting next to the machine for half a year and "thats normal".
The only thing keeping this industry "alive" is the phobia of the great ones from anything "physical".
I tried to leave, but this job is like a taint on your resume. People will not touch you with a stick, cause normal software companies have usually made bad experiences with the "programmers" leaving industrial automation. There are actually companies who try to lock there programmers in, by teaching them a "unique" bad software development style. I had people explaining git to me as a hot, new thing in 2018, at a company were we suggested it 8 years earlier. Yes, that resistant to change.
In every company you come, you are viewed as a sort of union-busting freak of nature, because that is the only way one could be that "good" at making software. Obviously i must be possible to memorize a million globals, instead of packing them into objects and systematically develop my stuff.
And you have that moment over and over again.
In dubio pro rubicon.
An angry customer was breathing down my neck, making idiotic suggestions. I was rattled.
He wanted me to try swapping out some component. I said no, I was 100% sure that was not the problem. I was laser focused on fixing this problem.
Turned out I was wrong. Customer complained to my management and I got a sound bollocking and took a couple of steps backwards in my career.
I learned that day to always remember that, no matter how unlikely, you might be wrong.
As a sidenote, this is one of the 25 points of advice in John Perry Barlows "adult principles" which I discovered late in life. It is the only written work I have on my wall, with items 1, 3 and 10 marked with highlight pen by my wife as areas for personal development for me.
Co-founding a company without really understanding my personal exposure. Had a small consultancy that had some early success, I was personally billing and leading projects, hiring folks and managing them. CEO just stopped actually cutting checks to IRS for a few years in a row. This snowballed into a major issue that I was personally liable for. Unfucking that took 5-6 years of my life. Yes yes yes I'm sure some of you out there would have been auditing financials every quarter...I didn't. Maybe that's the second half of the mistake.
Getting comfortable. After the above, I was running the show and just got comfortable. No real growth but a good salary for myself and a few other folks. Turns our there are parts of running a company that I'm just not wired for and never got good at. Decided I should let someone else do that and shut the company down (long explanation as to why selling it wasn't a good option). Worked at a FAANG for a bit then took another job. Doubled my TC in about three years and think I should have probably done this a long time ago.
- Not being aggressive about trying to get better salaries. This was mostly due to the previous point.
- Not leaving shitty managers and teams ASAP (“trying” is the biggest mistake in such situations).
But when I look real close then the single biggest mistake is:
- Having not identified early that Software/CS simply doesn’t interest me. It’s just a skill because I happened to study it and then started working. For me there’s just zero passion in it. And not trying to find an alternative career path early.
I chose the wrong school because they accepted me, and my high school counselor thought I had zero chance. I couldn't afford it, and dropped out. I would have gone much farther studying computer science at Purdue Calumet, and could have had it all paid for.
Once I had the Windows NT 3.51 server drive mapped as D:, and got confused thinking it was a local drive. Had to drive 25 miles and rebuild things in the middle of the night, sweating bullets. We were a small ISP with 200 customers, I was the tech staff.
My next to last big mistake was staying at a system administrator job far longer than I should have.... they really didn't need someone full time, and it zapped my drive to get things done.
Then I took a job making gears... the pay and commute sucked, but I liked doing it. 5 years away from technology, then Covid hit, I got sick... and I've been tired ever since.
Similarly, I knew that I needed to do some therapy work, and deliberately did not do it so as not to end up with a diagnosis that could affect my potential admittance as a Peace Corps volunteer. (This was deeply misguided; the volunteers that did their work were both admitted and frankly more effective.)
Both of these mistakes were arguably the same mistake: I did not take care of myself. As a result, the first half-decade of my career was basically a wash. I burned out of the industry I went to school for, and a large chunk of time I could have spent deliberately learning and building was instead spent essentially coping and surviving.
I wrote the operating procedures for performing a backhaul upgrade in preparation for the launch of LTE. The upgrade was being performed on our primary routers which all traffic traversed. The operation had been performed several times successfully, but after the last implementation before the issue, I was informed that a couple of the lines were wrong (they had extra arguments). I did a find and replace all, shot the document off to the next team, and went about my day. The technician who was doing the upgrade called me on the afternoon of the upgrade (it was a Sunday) and asked if any of the initial steps were disruptive as he wanted to get started on the prep work ahead of the maintenance window. I said no and he proceeded. Mind you, this was also during the World Cup so I was out at a bar with my friends and not paying attention to my phone. About two hours later I looked at my phone and had multiple missed calls and voicemails from him, so I immediately ran to the MTSO. Turns out my find and replace changed some commands - the end result was that instead of adding additional VLANs to in-use interfaces, it replaced all of them with the new ones, which weren't carrying any traffic.
The fix was simple, we had failover routers and at some point after he couldn't get in touch with me the technician reached out to one of my peers who quickly told him to failover. He should have known to do that but he was also panicking. I called my boss and told him what happened and that it was my fault (and I genuinely believed it was. I wrote the bad procedure AND I approved activities outside of the maintenance window), and he told me to be at the office with the technician first thing in the morning the next day.
I couldn't sleep that night, this was early on in my career and I thought it was over. But that meeting ended up being one of the most transformative moments of my career. My boss's boss, a director, quoted the FAA's ethos of how a good system should have checks and balances, and if a mistake happens, the system is at fault, not any individual. We walked through the play by play and identified multiple opportunities to both avoid the issue that arose and to resolve the issue more quickly. We came up with an action plan as to how to make sure our "system" was more mistake proof for next time, and that was that.
That meeting has always stuck with me, and I always remind myself of that conversation whenever things at work don't go as planned. There is almost always something in the system that can be improved to account for human error, which should be expected.
I don't recall the specifics, but one fateful patch had a very large compound boolean expression that included an invalid condition. For whatever reason, that expression didn't or couldn't receive 100% test coverage.
When applied, this patch took down the entire phone service (including emergency 911) for the island of Newfoundland Canada and all its residents (maybe 300-500k people).
The immediate fix was simply a new patch that reverted the bad patch. Unfortunately, it took several hours from the point we learned of the issue to writing, delivering and applying the fix.
I've heard that Newfoundlanders have a reputation for being very friendly, so I like to believe that all has been forgiven and forgotten and that I may one day visit the island in peace.
I resisted and became that guy. I would be far richer by now if I had put on a suit and gone into consulting. It's not like I didn't have offers
Keep an eye on your pension / savings when you are younger. It gets much harder to top them up the older you get. My pension options scare me now and I can't see retirement as a realistic path
Take money seriously!
As it happened, 1 month before I graduated, a job opened up in my ideal group, one I had interned in before and gotten a strong review, but by then I had already accepted the QA position (at the same company) and it was impossible to transfer. Took me nine years to transition to being a dev, studying nights and weekends.
At least in the U.S., your first job out of school tends to become your "career"
sync && reboot
Connection closed by remote host.
Mild panic sets in... Oh, lets up-arrow and see what customer server I just rebooted. Reboot on Solaris did not do a graceful shutdown of anything, it just sig-kills everything. Veritas clustering in it's early years did not like this one bit.
2) Becoming too comfy with the position and not pushing the bar as hard as I could could.
3) Staying too long with the company.
4) thinking too well of how the rest of the business perceives my position.
I picked up so many bad habits and it took a while to figure out how to collaborate with others on code. If I had to take that same path again, I would get involved with an open-source project to solidify the fundamentals.
Otherwise, I spent too much of my early career focusing on learning application development tooling, and ignored database systems. Often, a fantastic distributed, networked application is right there in your stack. A lot of good information comes from getting to know how these pieces work, instead of treating them as "magic black boxes".
I learned early to not be an architect unless you have the support of company leadership. If you do your job too well you are disruptive, people get sad, and then you are on your way out once the crying gets loud. If you aren’t doing that then you aren’t effective and the position should be eliminated. You can reasonably determine this during job interviews if you ask the right questions in the right ways.
Maybe this advice is helpful to someone. Let's divide people into those who don't realize that they don't understand something and those who realize that they don't understand something. And into those who ask questions and those who like hearing themself talking/explaining.
Out of the four the combination of 'don't realize that they don't understand' and 'likes hearing themself talking/explaining' is horrible. Run away as fast as you can! You cannot do anything. If you ignore it: then, it leads to a bad project outcome. If you try to fix them: your relationship will deteriorate which again leads to a bad outcome and more.
It went into production without any load testing, and it struggled to keep up with even a few dozen time series.
I suppose the good news was that the product it was developed for never got many users, so it just hobbled along after applying some caching hacks. And of course I learned an important lesson about considering database access patterns.
There are hundreds (thousands? It’s been a long time) of high end bicycle components in this world laser etched with overlapping serial numbers because of me.
I got lots of feedback from the remaining stakeholder that the other 2 strongly disagreed with.
Don’t do this, kids!
(Though many of you still will. I knew about this beforehand and still got myself into this mess. Never again!)
Thankfully my boss was understanding. I intercepted the on-call notice and took care of it before filing a report about how it happened which was probably helpful. I had pushed back previously against passwordless sudo as well and been overridden, so maybe they took that into account too. Still, I thought I was going to be fired for the mistake either way and am very thankful they didn't.
1) I failed to realize the importance of face time/asses in seats time. I was spending tons of ime working late nights and weekends solving hard problems outside of trading hours where nobody could see the hard work I was putting in. Also, being the only hourly, all of my coworkers would disappear early Friday afternoon and everyone else senior in the department would ask me to do weekend work that would effectively have me working 2 days of overtime without going home. Essentially on Fridays I worked for 3 straight days without going home every weekend for 9 months.
2) I accidentally exposed an embarassing mistake made by several seniors in the department. A simple question that I asked in a meeting when I saw how two pieces of network gear were hooked up identified that if either went down we would end up with a network loop and a minor catastrophy for a very expensive trading system. Two of the network engineers in particular were really angry at me for this and would no longer speak to me afterwards. Apparently correcting the mistake took several weekends of off-hours work.
3) I let an absolute snake in the department "mentor" me when I was new. I failed to realize she was using me as an opportunity to reassign her work. When I got sick for three days with a sinus infection, she reassigned hundreds of her outstanding tickets she was delaying on to me and then started calling me out in department emails asking where I was and why I wasn't handling the tickets. Nobody bothered to look at the history before forming their opinions about me. Luckily, she's no longer in the industry and works as a baker.
4) I let the traders physically abuse me. One asshole spilt a cola on his Bloomberg keyboard and I was at his desk with a replacement within 5 minutes. Apparently I wasn't fast enough for his liking and he spent that few minutes kicking me in the ribs as hard as he could while I was under his desk hooking up the new keyboard.
5) I was addicted to World of Warcraft. Despite the long hours I spent at work, I unfortunately filled my free time with video games instead of finding a better job.
I paid little to no attention to how my engineering efforts benefited the business.
I spent few years doing frontend while i hated it.
I was young, and super excited to have a job in software while still in school, building things. Only much later did I realize that multi-level marketing (pyramid schemes), pay day loans and companies selling bath salts to smoke, all hurt people.
I was removed enough from the problem that I didn’t see it at the time, and it all seemed so exciting, but I certainly have lots of regrets from that time.
I lost potential to earn a few millions from continuity of my career.
I also discovered I like coding and don't really enjoy traveling.
Traveling is romanticized too much in our culture.
I'm relatively new (2 years experience), but haven't really had a chance to learn how to do many things properly in many cases due to a lack of more experienced people to learn from/business priorities meaning it gets waved away.
This won't get me fired in my current job, but the lack of knowledge might get me fired in future ones.
A SAN firmware update (forcibly installed by a technician onto our hsg80) silently prevented my filesystem from mounting, so the rm ran from the root directory.
I got everything back.
My brother short-circuited $25k worth of test equiment (at a time when salaries were around $30k/yr) on his first day at work at one job.
Boss threw his blackberry out of a high rise window shouting profanities in German while I shrunk into my chair experiencing waves of hot flushes.
My excuse to.myself was "its not the right time" over and over again.
I am no longer able to travel to mainland China out of concern for my safety. I work closely with hardware and the inability to visit Chinese factories is becoming a career limitation.
I then wrote some code like:
if (channel == AgentChannel.sales) {
emailSales()
} else {
emailRentalOrCommercial()
}
So when parsing the JSON, the field name silently failed and all emails got sent to rental or commercial channels.Sales is obviously the most lucrative channel with the biggest contingent of, shall I say, "pushy" people and so when this was discovered I had quite an upsetting day.
In the end, I realized I need to be doing interview prep pretty much all the time. Maybe give it up just before you start the next job and while you’re ramping up but it should just be routine once you hit 6 months or a year. There’s no reason to not do it because in all likelihood, you’ll be switching jobs.
I’m going into my sixth job in about 8 years now. I shouldn’t expect to stay at my next place longer than 2 years and thus should be prepping well before my planned time of exit.
So now I'm in my mid twenties and I've only just managed to get an (unpaid, remote) internship thanks to a sympathetic small business owner whose pet technical project is falling behind schedule. Every time I open the project management tool, I feel a vague sense of unease because I'm socially tone deaf and I can't tell if I'm breaking some unspoken rule about "don't word this message this way because you'll sound too confident for an intern speaking to the senior developer," or "don't make a comment on this task because it's assigned to an intern on a different team and you're not supposed to go out of your lane."
I've been writing code of some sort for 11 years, and using Linux daily for 8. Every day I wake up in my childhood bedroom and send my one remaining friend a message. Sometimes she even replies. Then I have the pleasure of spending most of the day fighting with some stupid self-inflicted issue, like why Ethernet broadcast breaks every week on OpenWrt, or why Pulseaudio uses 200% CPU when I try to get it to communicate with a certain cgroup, or what I'm going to use when Fedora 33 hits end of life and I have to get some other DE set up to replace GNOME.
I've dug myself into a labyrinthine, unsatisfying, inescapable hole. So if I could do it all over again... I wouldn't, because, like a ball on a hill, I'd end up right back in here.
I ended up working there for 4 years and eventually managed the backend engineering team. I haven’t dropped a production database since.
Buying into any zeitgeist at any level. Related: underappreciating the pervasiveness of financially-motivated thinking.
Joking
It was a story about my last manager. 2 years ago, I transferred to Cloud team internally from blockchain. Yeah, both of them were so hot and even today. I had to make this transfer because I have to relocated to another city where my family resides. And my mom was so sick, I had to consider to take care of her. This is the background.
At the first few weeks, I tried to learn the new knowgede of cloud native and it was so depressed. I was so new and I was not an open man. Because my mother's health condition always makes me so gloomy. I could not be open. So it was not efficient. Well, I love opensource and I have some experiences. So I was assigned to do some open source projects for our products. Now here we have the them:
1. My manager called me to out of the opensource team for something else that I did not listened and not interested at that time. 2. He said this was his team and he was the only man can decide that no one could change.
I was a little shocked at first. And hated this then. But I could not change this. I knew the only way I changed this that I argued with him or leave. I knew at that time every body in our team had quarrelled with him. But I felt down at that time I could spare the energy to fight.
I made my mistakes. Not sure this was a mistake. I have no idea who things would went if I had a different choice. I chose to accept it even though I felt so bad. I could have choosen another blockchan startups.
So I had a bad 1.5 years work experience in my career. One interesting story:
My manager wants us to show our minds about team. Guys had their voices out and the summary sent to him, which were all agaist him. Can you image what he looked like?
He denied all the comments from guys. And continued to do as his will. Then 8 months later, our team was laid off, all but me. I had a health condition at that time.
It was a bad experience. I should not have hesitated. I should have called out my thoughts. Or just leave.
Life is short. Please stay happy and focus on the lovable things.
I had a senior co-worker tell me some documentation I had written was terrible, when I asked what was wrong with it he replied “everything”.
Months later I found much the same document (as in 90% of it was copy pasted from mine) in our company wiki, under his name.
I /think/ (thankfully such a situation has n out come up since) I should have raised this with him and more senior managment immediately instead of just sighing and moving on from it.
I also echo sentiments about not leaving early enough - if the ship is on fire, be with the rats, not the captain.
* Applied wrong Cron job string for a mailer job to renew an IT asset. Instead of mailing at a specific time, mails went every second. A Senior exec(boss's boss) called and asked me to take it down. I was mortified for a moment since this was an unapproved use of company's resources. Thankfully nothing bad happened.
And it actually depends more hugely on exactly particular goals which are always going to change over a career anyway.
Especially if you allow for this in advance, the very same actions or inactions of the past can turn out to be a great advantage in case an unforseen future comes along.
Where you can respond to a moving goalpost or even help place it in the path of your most applicable strengths, when you need it most.
You certainly won't be able to change those early career actions or inactions regardless.
This is when I learned TC sent SIGKILL on a stop and not SIGTERM, which my scripts were expecting.
I recall this particular intern used GUIs for everything and suspect their file manager wouldn't have displayed dot files by default.
We thought it was cute, but none of us followed up on it. And that’s how I didn’t (try to) go to work for the startup Electronic Arts.
Other than that, I still don't really know how to hold a programming job for longer than 6 months, so I'm sure there's a lot of mistakes I'm making.
Later it become a meme in that company, that every webdev need to break client's e-mails at least once, because it happened to other devs 2 or 3 times :)
If you're working at a place where you'll be punished or "get fired" for mistakes such as the ones you exemplified, and you have the chance (most of us are fortunate enough to have more plenty of options) - avoid that early career mistake and change jobs (-:
I quit to learn new things. Now in this company I learnt and learning, made lots of automations but I always look back and feel why did I leave for that reason.
Like I have automated most my work, I have subordinates who report well, my lead DBA, managers are good, colleagues are good. I just didn't have patient to enjoy that.
When doing so I would typically run "TRUNCATE items;" on my local and repopulate it with the content from the not-yet-live production copy. This worked great until the afternoon where I was doing a demo for my boss in the office, realized my local datastore was in a bad state, and then got my tabs for "production" and "local" mixed up in my terminal. I truncated the entire dataset on production while my boss was standing behind me.
I got to learn a lot about how to export from Microsoft Access and import to MySQL that month. Lol.
Don't be shy about asking what the near future of a role is.
As a good technician, I moved up to being a junior officer in the Navy and completely missed the point that I was to work through the enlisted sailors, not join them.
I found myself staring East all night wondering why I was struggling. Suddenly, it dawned on me.
And I wanted to work there so badly that I jumped on their first offer. The classic.
Also in the 90's, knocked west coast offline by null routing the /24 that contained peer router addresses. Broke DNS for a few thousand domains by corrupting named.db on our primary NS before going to lunch, editing the sendmail.cf on the primary mail server in production for an ISP without revision control. I worked for the kind of people who could debug a sendmail.cf cold, so they could afford to have someone as dumb as me around, but still, I meddled in the afairs of wizards.
My advice is keep things professional and even ruthless long into your career at a given company. Clock in and clock out and always take challenges impersonally. Be the impeccable toy model your boss wants you to be and nothing more.
- The boss stole it and got all the upper-company accolades.
Put another way, it's a relationship. The opportunity is relationship with your employer; a career is a relationship with yourself.
Don't get stuck in bad relationships.
To that point, when in doubt update your CV and look for work. When you eel helpless (i.e., you don't like your current work situation) looking for sonething else is empowering.
It had always been in the back of my mind to move to the US for work but I never did due to not being confident enough.
I realized in my mid-30's that I was approaching a "now or never" scenario and finally made the move to the Bay Area. I really wish I had done it right away at the start of my career rather than spending time at small companies working on small projects.
I know it's better late than never but I know I would have been so much further along in my career by now had I followed my instincts.
Time and again I learned harsh lessons that shouted "Why didn't you listen? He/they/she said that would happen."
DELETE FROM TABLE WHERE ID = something
And the table had a million records. Guess what!
In SSMS, the DELETE FROM TABLE was selected.
It took an hour to restore from backup, it stopped a lot of people from working, many new records was lost, they had to keep pile of papers to enter into syatem again.
Perseverance is everything.
2. Not trying to make money from day 1 for something slightly non-profit because we were afraid it would drive people away. I think it would have been more honest, closer to where we wanted to get and ultimately it could have funded us to continue our work.
Still, I don't regret my career, and I get to do a lot of programming.
Not quite what you're asking, so sorry about that, but it's my answer to the general question
“They have backups”, they said.
I encourage the reader to guess what they said next :)
Ho-hum.
You learn and earn more by jumping ship after a year or two.
In production.
That didn't stay up for very long :)
It turns out that I just can't work on software that other people built. I have too strong of opinions, which could also be considered a mistake.
I'm still early in my career, so I haven't made many.
(1) By accident, I had a relatively good career going around DC in applied math and computing for US national security. I thought it would help my career to know more math so got a high quality Ph.D. in applied math. I WAS then better qualified, but I also had broken my career continuity. My brother saw that early on: "After your four years in graduate school, you will be four years behind in your career."
And, I didn't realize that the opportunities in DC were unique or nearly so. I would, could, should have (A) not assumed my career would work away from DC and (B) stayed in DC.
Lesson: If you have a good career going in DC, NYC, Silicon Valley, wherever, don't assume without good evidence that that career will also work in another location.
(2) Near the end of my Ph.D. work, I had a part-time job and did some good things. Then occasionally a person never seen before was in the office for a few hours one or two days a week and wanted to chat with me about whatever, even sports. Eventually he got my opinion on what the US did in Viet Nam. In retrospect I was being recruited for some high end highly secure slot but violated a rule Mom gave me -- never talk about politics, sex, or religion. I had talked about politics. Don't do that. So, being frank and honest about Viet Nam cost me a good career step.
(3) Dad's idea about a career was to get a good education and, then, a good job based on that education. Eventually I concluded that, nope, instead, with or without a good education, it is from important to crucial to own a business and to make it successful, and early in a career near the top of the TODO list is to find a way to own and run a successful business.
(4) I didn't understand an important point about career dynamics: (A) It is tempting to guess that academics is good preparation, maybe the best, for a non-academic career. (B) Instead, for a successful non-academic career, it's important to ride the waves of the hot topics, and, bluntly, academics is largely out of touch with what the hot topics are. (C) While some academics can help, possibly a lot, there is a special way to know what the hot topics are in a non-academic career -- see what work and topics people are getting hired for.
Net, be reluctant to let academics tell you what will be important in a non-academic career and, instead, let a non-academic career tell you what topics are important for you in academics. And if have a good ugrad education, then pursue those topics while on the job by independent study evenings and weekends, maybe partly on the job -- to pursue those topics, don't leave the job to become a full time student.
E.g., when I was in my Ph.D. program, there was a prof, soon famous, who apparently had been hired as a consultant to work on a topic, call it, X. Well topic X was in practical computing, a bit tricky, not at all a topic in academics, and from my non-academic work a topic I knew well. With resentment the prof asked me: "I suppose you know X?" I had a one word answer: "Sure". Really it was a collection of topics such as X that had my career going well, e.g., annual salary six times the cost of a new high end Camaro. For that summer job working on topic X, the prof was about to have a tough time!
(5) One possibly good career direction is to get a job in a startup in its early days and get stock. For the stock, before joining (A) get the stock deal in WRITING, (B) study the details of the stock deal (e.g., vesting), and (C) have the deal reviewed by an appropriate lawyer. Handshake deal? Don't do that.
(6) Applied math and, usually, computing work or don't independent of human emotions. People, however, commonly are driven more by their emotions than what is true in math or computing. It is crucial, then, to pay close attention to the emotions of people.
As a special case, one way to get people to hate you and work against you is to present some work in math or computing that (A) has power important for the organization, (B) is understood only by you, and (C) looks rock solidly correct and, thus, not easily ignored. Then the people who hate you maybe cannot find fault with your work but might be able to arrange to get you fired.
Part of one way to get you fired is gossip -- be aware that you may have to defend yourself proactively, guess what you are secretly accused of and then defend yourself against the accusations.
More generally, whenever you start to be especially successful, you will attract attacks like some piles attract flies.
(7) There is discrimination in the US. Not often mentioned is that there are some cases of severe discrimination in the US against native born Christian males of European descent. So, it can be important to realize that fact.
(8) Try to keep confidential and not to report on work in progress: If your work looks good, your enemies will try to kill off your work before it starts to show its power or arrange to take credit.
(9) There can be corruption, e.g., people getting quite secret financial kickbacks. So, you can get a bitter enemy if, even without realizing it, you threaten their corrupt money. So, at least try to guess who might be corrupt and how, and then try to avoid that person or their source of corruption.
Of course, if there is someone corrupt in the part of the organization chart you manage, you will likely want to get this person moved out. Of course if the corrupt person has some close, say, family, connection with, say, a member of your BoD, then you have to be careful!
Point: Be aware that corruption exists.
Take heed.
Not pushing for promotions/more responsibilities
Getting attached to my original team.
Thinking other people had my career as their concerns
Tolerating some bosses disrespect
Attaching my visa to my job <- Modern slavery
I lost potential to earn millions from continuity of my career. It was the early days of many startups
I also discovered I like coding and don't really enjoy traveling.
Traveling is romanticized too much in our culture.