Or, to put it a bit more optimistically - usable now is better than perfect later. I've found that, if I disappear behind a curtain and spend a long time trying to make something really well-polished and feature rich, that just gives the user a lot of time to build up their expectations, and also to get frustrated by the delay. By the time you ship, they'll be actively looking for ways to find fault. When I YAGNI my way into a 80% or 90% solution and turn it around quickly, though, more often than not, they'll initially just be impressed at how quickly I was able to help them. Requests for changes will come, but they're generally small, so it's usually relatively easy to turn those around quickly as well.
This is the same principle of Minimum Viable Product. In MVP you launch the first version of your product with sufficient features, but not all, to early adopters so that you can get feedback from them.
MVP and the "Build Measure Learn" feedback loop, gives you important tools to leverage your product.
The language around MVPs tends to be couched in terms that pretty directly implies designing a product for external customers, though, so it tends to be harder to internalize for people who are doing in-house work, and even people who are somewhat removed from the product design process, such as many junior developers. What I've seen in is that it's common for people who are eager to impress their clients or teammates to want to say "yes" to everything. So, even if they like the idea of building MVPs in principle, in practice, their MVPs end up being pretty maximal.
Which is why I think there's value in framing the principle in terms of human-human relationships, and not just in terms of stuff like finding product-market fit. It's a more personal, relatable way of thinking about it.
The magic insight for me was when I finally realized that I could give people less than what they asked for, and they'd actually be happier than if I tried to give them everything they wanted.
I consider that a form of art/skill that we learn through multiple experiences (and errors too).
I work closely with developers and I observed that the majority try to implement always the perfect solution that normally comes with a high cost and time to develop. Clients normally prefer a solution that is quicker to implement but that responds to 80% of what he wants.
1. As a younger man I done a business deal on a handshake and then got ripped off after putting in a year of work - always get it in writing!
2. Companies are not loyal to people, people may be loyal to people, but never think an organisation will be
3. I ran up some debt as a student until I figured out personal finances, which boils down to; increase income, reduce expenditure, save and invest the rest, avoid liabilities as far as possible (e.g. do you really need a car on finance)
4. Avoid getting drunk! Get tipsy, not drunk
5. You'll always get over a breakup, no matter how difficult it seems at the time
6. Sometimes you have to leave a group of friends, a partner, or even family behind, to grow into who you want to be
7. Don't wait for other people to help you in your career or life, any help you get it a bonus and be grateful, but you're the captain of the ship - push yourself forward
8. Be yourself
9. You're better and more capable than you think
10. Tell those you care about you how you feel, you never know when you might lose that chance
We live and learn!
I agree with but I'll be careful. When you are young (20-30), you are better off investing the money in yourself. So I say do spend reasonably but on things that might grow you. I learned the hard way that renting an expensive duplex with a garden did wonders to my mood and productivity. You might spend more but you get in returns.
Also don't be a cheap jerk with yourself. Nowadays, I value experiences more than gadgets (like I'd go on a trip to a close city than put 12 hundreds on an iphone) but do these things. When you are old, you can still do them but being young was different. Even when in budget.
So I say be careful but don't be greedy and while interest can pile up on money you save, that trip you have done or that money you spent to go to a conference might pay up x1000.
This one very much! Never skip an opportunity to tell people they matter to you. Time and life is very fleeting
Anyway, I reached a point where my colocation fees were about 1.2k per month, I had been with my supplier from the very beginning, so from 1 server... At the peak I was grossing about 4-5k per month but generally monthly lows were about 2k, and everything had been organic, so I had no debts, and was just pumping everything back into the business. What happened was my provider offered to sell me his business for about 12k. You gotta keep in mind I was 18 at this time.
I took out a loan (my Dad was guarantor) and purchased his business. The aim was to, acquire his contracts for colocation with the datacenter and I was expecting to inherit an operating business which was turning in about 2-3k per month in normal "web hosting" businesses. All the sites were spread across about 30 servers, all of them really really old.
So, things went sour literally from day one. It turns out that he either fudged all of the sites on the billing software or they decided to just exodus on day one of me taking over. I ended up going from having healthy profit each month to operating at a deficit. Long story short it destroyed my business and nearly caused me to lose my degree at Uni from the stress of hacking away trying to save a failing business and continue with my degree.
Anyway, what did I learn?
Due diligence. Don't rush things. Don't trust people. You can really summarise this as a life lesson where I essentially ended up gifting someone 12k for "my patronage". It quickly became apparent I was his only customer and my success kept him just about ticking over, so I ended up "buying myself". I was pretty bitter about it for a long time, but I think I was just angry at myself for being so childishly naive to think someone I trusted wouldn't screw me over cause it suited him.
I don't really understand the issue. Didn't you buy a bunch of prepaid servers and server administration software for just 12k?
I bought him with the intention of moving into "web hosting", since at that time my business was entirely focused ONLY on providing services such as "teamspeak", "battlefield 2" hosting, GMod, Call of Duty etc, I thought I needed to diversify, because when I started "1 slot" was about 1.50-2.00 per user. Then it just started being cut throat and I ended up overselling to keep up with the competition's lower prices.
I ended up inheritting bills I could not pay at the datacenter. Old servers that weren't worth the scrap metal and obviously a loan... I started to struggle to cover the loan and ran into huge/unbearable stress from my mistakes. It was just a series of rushed decisions, head down, plough through a purchase because I thought it would help me grow, when it was the complete opposite.
I can't even remember what the billing software was, but it was something off the shelf... and was for an industry (web hosting) I really didn't know much about. Not that that mattered since I never had to support any of the customers...
: I researched it for my curiosity.. It was called TCAdmin. Was pretty critical to my early success, without it I wouldn't have had a clue what I was doing.
Now I help run a vacation rental/holiday rental software company -- so instead we help host people. We provide management/distribution for agencies. The original product was to just focus on a web marketing front-end software (so I suppose a little bit of "hosting" through our SaaS product). I started that business a few years after the above story.
The surprise is not the fact that there is suffering around the world, but how we managed to achieve the level of prolonged peaceful co-existence that we have today.
We should act in such a way that suffering or chaos is reduced---however small such reduction may be.
Suppose you had a choice between watching T.V. and washing the dishes. Watching T.V. means, perhaps, that your spouse will need to do the dishes. You can reduce overall suffering by choosing to do the dishes instead of watching T.V.
Given that the default path of most processes is chaos, we should always act in a way that prevents this.
Lesson: when in Rome, do like the Romans.
And P.S: no, you can't argue with the Romans and make 'em wash their dishes after eating.
When do we get _that_ story.
One of the most interesting things to me in the past few years is that this core idea seems to exist in hundreds of different places and forms, and every culture and person has a slightly different set of abstractions for it. But there's an awesome universality to it.
A lot of times the people I know who live by the bible and the people I know who live by stoic principles are building roads to the same place, each thinking they're on a journey that only their path can provide.
I think a lot of people forget about the random act of kindness, and how it can go a long way towards making people much happier. It can be as simple as stopping to let someone cross the road, making your partner a sandwich, tidying the house, or even leaving a nice reply to a tweet.
In the startup world, the default is to move as fast as you can, and it's often easy to mistake a maxim for product development as a maxim for life. The problem is that it's not good advice for many things in life. Examples:
1. Shopping. Especially big ticket items like cars and places to live. Urgency favors the seller because you don't do diligence well and you don't shop around for better deals when you're in a rush.
2. In a similar vein, negotiating. I got screwed on deals because I felt too much in a hurry to bring up issues I had. The important point here is that I could afford to wait, but I didn't want to, and that worked against me.
3. Job searching. Taking the time to line up offers will pay returns on your salary and happiness, even if in the moment you really just want the job search over with.
4. Managing people. I've had people who work for me ask "how am I doing", and in my urge to avoid the awkwardness of the conversation, I would answer some variation of "fine" even if in my mind I knew there were problems. The problem is that answers like those are very hard to take back once you give them (and especially hard to take back during performance reviews). So instead of trying to get rid of the problem fast, I eventually learned to step back and say "let me think about this, and let's talk about it tomorrow."
5. Relationships. If your goal is to find a life partner, you have a lot of diligence to do. Enjoy the honeymoon period, but don't mistake that for deeper compatibility. That comes from spending time together and requires getting through rough patches together as well.
6. Professional relationships too: on the one hand, you can't be passive in developing your professional relationships, but you can't rush them either. Respect is earned over time, so you have to play the long game.
When it comes to building products, then yeah, moving fast is an asset, but many things in life and career are marathons, not sprints, and you're just hurting your future self if you outrun your own pace.
I assume you mean urgency favors the seller (unless you're urgently trying to sell, of course).
Or, in general: (s)he who has the greater time constraint has the disadvantage.
1) People's words are like deep water. Pay careful attention to what people say--it's profoundly revealing (more than they realize). By listening, I've been able to identify people who intended to trouble me in some way. It's incredible, they just can't keep it inside even when pretending to be nice.
2) Actions speak louder than words (given #1, this is really saying something). Don't look for people to be who you want them to be; wait long enough for them to show themselves. And they will. ETA: You may occasionally encounter someone who is able to fool you for extended periods of time, like years. But even then they often leave useful clues as to their agenda.
3) If the product is free, the product is me!
Another red flag is if you put something in email and they call you to respond on the phone. I treat email almost entirely defensively now. It's simply a record of things I'm comfortable being read aloud in court and a memorialization of what was agreed to in conversation. If I'm not comfortable with it being read in court it's discussed on the phone or in person.
Decades ago, a friend of mine at the time (female) met a guy. She was really beautiful and a genuinely nice person, so lots of guys would ask her out. She told me about a date with this one guy, and he didn't call her again. Even though she hid some of the details, I was able to ascertain the general contours of what happened and was able to figure out his agenda. How? Because of something he said to her.
She told me that he picked her up and they went out for diner, but when he dropped her off at home he became concerned about parking, wondering if a garbage truck might pin him in the next morning. At the time, she thought nothing of that. But she explained to me that she hadn't planned for him to stay overnight.
But what he said was a pretty BIG siren. It was obvious he already intended to stay the night, otherwise why would parking the next morning matter? My guess is that if she had known his agenda she would have viewed him differently and maybe been more wary.
End of story? He never called her again. She was mystified as to why. I thought: well of course he didn't call--got what he wanted!
In response to your question, wouldn't say that there are telling signs, it's more about the content of what people say as the story above illustrates.
A few other loose thoughts about understanding people:
1) It's dangerous to assume that other people think as you do. In fact, people come from a range of contexts and backgrounds which are not obvious when you meet them. They are perfectly happy to smile and nod with you while completely disagreeing.
2) People are heavily self-interested. Unless it's your mother (and sometimes even then), expect people to look out for themselves first. Someone making a show of sacrificing for you? Hmm.
3) People enjoy feeling superior to others, even in very minor things. Shrewd people know this and use that information to their advantage. (Not advising this, just saying what people do).
4) Chinese proverb: the dog that can bite doesn't bark. When people have the capability to get you, they don't have to talk about it--they do it. The big talkers generally don't have the ability (though there is the occasional outlier).
You may want to look into some books on this topic. A useful one is 48 Laws of Power by Robert Greene. Not saying that you should follow his advice, but it is useful in understanding games that people play at work.
Book link (not affiliate) - https://amzn.to/2dzBqXD
However, I think by far the most of "people understanding" happens in the not consciously accessible parts. So I think that the best way simply is... experience and time. What really helps is if you actually want to understand other people, if you are curious. If it's like "work", like studying for an exam, something you were told is necessary but deep inside you'd rather do something else, your (unconscious) brain won't cooperate.
There's a lot of circuitry taking input from the visual and also from the auditory areas of the brain that do a lot of subconscious processing, and they "train themselves". Book knowledge is of little help, it can aid indirectly at most. The good news is, pretty much every one of us already has quite high abilities in this area, the main problem may actually be that you suppress what your deeper brain is trying to tell you. You probably already have those magical people-understanding abilities in a pretty advanced form!
Deep inside I knew perfectly well I was being screwed over during my first trip to the US in one of those New York electronics stores - but I suppressed it and spent a huge amount (for a poor Ex-East German student) on electronics I didn't need and that were 500% overpriced :) Just make sure that your losses are small, like mine (I think I gained a lot more during that simple encounter than I lost), don't try to avoid it or fret over it when you make such kinds of mistakes due to not understanding other people (or suppressing it without realizing it). Imagine that you just paid tuition for the best university there is to understand other humans.
Another issue related to and responsible for suppressing those instincts is that actually acting on them often is more work (at the immediate point in time) than just going with the flow (and suffering later). Example in your case, but same with any relationship: You actually know it's over, and much later, in retrospect, you will know that you already knew, but actually taking the step and ending it right now is really hard. But here again no external advice to your conscious self can be of much help. Especially since only you have all the information about the specific information, so asking others who don't have all that context for advise seems to me to be a form of procrastination - you did something (ask others) so that feels good, but it should be you yourself who makes that decision since only you know what's going on and the people involved.
I never took a budgeting class in high school and college, my parents lived paycheck to paycheck (still do), when I earned my first internship I was making over $1000 per pay period, that was a lot of money for someone who had only worked part time jobs for $10/hr before hand.
By the time I got my second internship I earned more than my mother, who was the breadwinner. Once I was converted to full time I had more money than I knew what to do with. It took a few months to stop making stupid purchases, learn how to budget, save, and invest. Painful lesson.
Most of the foodstuffs offered on discount end up being fresh prepared salads w/ salmon, whole chicken, roasted vegetables, etc. The time cost for preparing all of these properly at home is substantial.
Given that I don't buy groceries anymore, I don't have food available at home to snack on. If I want food I need to prepare rice or some other primary grain. These dishes have a significant lag-time between the impulse to eat and the dish's completion, so this prompts me to ask "am I really hungry or just bored with what I'm doing?". Often, I'm bored. I'll pop open a new book or change up what I'm doing instead of downing 400cals. Even if I do give in and prepare a bit extra, I'm still under my daily limit by a substantial amount.
The alternative, grocerywise, costs me approximately the same amount when accounting for spoilage and time. I love cooking, but the time cost associated with shopping alone (let alone preparation) puts the expected monthly cost of preparing food at home over 11$/day for me.
Accordingly, it doesn't make sense for me to shop for groceries. I'll keep a few vegetables (cucumbers, cabbage, etc.) or soups available for moments when I'm in a pinch (sick/extra hungry/very active days etc), but otherwise I just wait.
I'll likely look at adding pure-protein home-cooked options when I start hitting the gym hard in a few months, but I've bulk purchased fish and steaks from importers and local meat packers respectively at 1/3rd of their normal retail price anyways, so I'm good to go on that front.
It's irritating to change but after a while you start to appreciate when you can just keep yourself within your daily cycle with work and location you're accustomed to.
I take it as a lesson to know how to soften the next hit.
1) Never assume people will respect the value of your time and the fruits of your labor. Some people in particular are looking for related arbitrage opportunities. It isn't even necessarily malevolent, it can be just a frequent human limitation in how value is perceived. Though sometimes it is predatory to the point of malevolence.
2) Assume any future promised reward is unlikely to materialize when making your decisions (if it is not specified via contract, assume it will outright not happen). If a given course doesn't make 90% sense if a possible upside doesn't happen, then it doesn't make sense.
When I see business people smile at each other and shaking hands, I cannot make sense of this in my mind. What's the point of smiling when both people couldn't care less if the other person dropped dead on the spot.
1. Do not trust “business” guys!
2. If they give you some “sweet” offer, look at the rule No.1
Lumping it all into "business person" isn't very useful because there are a lot of business people. So maybe a few specific examples can help.
Account managers and salespeople: while their stated job is to help you with customer issues, they're actually paid to sell/upsell you, and even if they're not, they're evaluated on selling/upselling you. This means they're likely to stretch the truth about the product they're selling in order to close the deal. So when you're interacting with salespeople, you can never 100% trust what they tell you, because they're not actually trying to help you.
Business development: the company they work for has an agenda. That agenda won't be obvious to you. Maybe they're asking you to come in to do a demo because they want to consider partnering with/acquiring your startup. Actually, they're spinning up a team to just build it themselves, but they want ideas. The problem is you have no way of knowing which is which.
HR: you know the common wisdom, they're there to protect the company, not you, and often that makes a huge difference.
Someone hiring you for contract work: they do want the work done, but they're trying their hardest to avoid paying. That means every ambiguity in the agreement becomes something they might try to leverage against you.
In other words, don't trust someone until you understand their hidden motive. "Business people" just tend to have more of them than your average person.
(Learned the hard way when I worked at a large bank.)
If you walk into any company where different departments get praise more then others it is a sign to walk out. You will always get treated like a second rate employee in those environments.
Don't join a team that's mediocre and/or where you're the only one with your skills. When it comes time to evaluate your performance or assess how long something should take, your manager and your team will be clueless. Useless people survive by playing politics. And when you quit they'll play games you can't win.
Can you elaborate on this? Things to avoid when quitting such a position?
Between those 3, there's a lot of ways they'll try and coerce you into staying without paying you market rates if your bus factor is high enough. It's so bad that I've known people who have hired lawyers to help them quit one firm and join another.
Mandatory developments, impositions of central banks, national vat's, auditings and bussiness as usual is seen as a cost. You must do this developments. These are fixed costs and banks tend to minimize them.
New products that inovate/diferentiate one bank from another are seen as strategic and costs are seen diferently. What banks optimize in the fixed costs, banks spend in the proof of concepts.
It's tempting to explain in minute detail something you are good at, but if you always tell people how to do their job, they will become dependent on you.
Let them figure it out on their own.
When there's a bug in their code, point it out, but don't tell them how to fix it.
If you alwaystell people how to do stuff, they will never learn to think for themselves.
It's funny, I've learned the opposite lesson the hard way.
I used to just point out bugs, like I was a tutor hoping they'd realize the problem on their own and fix it correctly.
Unless it was an obvious brain-o (i.e. the developer knew what they were doing and just flubbed), this resulted unerringly in a "fix" that (a) didn't solve the problem, and (b) created another. I would end up coming off as a nitpicking asshole trying to guide the developer into writing correct code.
So now I just reply, in detail, with exactly what fix to apply, often including code verbatim. Call me jaded, but it works, and I've realized it's not my job to get people to learn to think for themselves. Those that want to already know how.
Related: never post example code you wouldn't want to see copy+pasted verbatim into the codebase. I can't count the number of times I've said "fix it using code like this" only to get a complaint a week later that the fix doesn't work, and seeing my pseudocode complete with foos, bars, and made up meta syntax copy+pasted verbatim.
a) it doesn't scale
(you are now doing the other devs' job)
b) it only works if you are infallible
(if there's a bug in your fix the other dev is going to say "colanderman told me to do it this way")
I know that it is tempting to just tell people what to do, but it's not a long term solution.
It's strictly better than repeatedly pointing out the same, but slightly different, bug, in a series of incorrect fixes, before being forced to spell out the solution upon realization that the dev isn't going to get it on their own. Just skip to the end.
> if there's a bug in your fix the other dev is going to say "colanderman told me to do it this way"
This is how people develop their own problem solving skills. When I was a junior developer, that was one of the skills my team leads / senior developers really focused on. Super important to be able to think / problem solve for yourself.
If you can't honestly answer that with "yes" you are either accommodated, or running risks higher than you realize.
People are incredibly hard to change.
Spent half a year teaching someone programming. They told me they wanted to learn, etc. Ended up doing most of the bootcamp work for them so I could explain it to them, etc. This person had 5 day breaks where they didn't study a single thing. This also goes with "look at what people do, not what they say, or how they present themselves."
That also comes down to "don't waste time on shitty people." I used to spend time with everyone because of naivety, then I realized just how precious that time is and a lot of people just waste it.
In one interpretation, that's a scary thought encouraging selfishness. In my view, it's a pragmatic description of reality, encouraging judiciousness. I still find great joy in helping others, sometimes at some expense to myself, but I now feel a lot less bad about making value judgements before deciding if such a thing is worthwhile, rather than feeling obligated to help everyone that might want it.
Unfortunately, sometimes I find myself surrounded by people who have vastly differing life philosophies than my own (relatives, friends, spouse). In that case, the disagreement in a way pushes me harder to achieve what I want to out of sheer stubbornness than if I actually was surrounded by people who thought the same way as me.
After I first started running and losing some weight, I became enthusiastic about it. Then with the notions of 'more is better' and 'no pain, no gain', I cranked up the mileage and pushed through the pain. But I learned a hard lesson when I tore a calf muscle.
Since then I've learned that form and technique, consistent and gradually harder practice, and getting expert help are necessary to really learn something. Ten years later, and over 18k miles logged, I can say I know how to run.
Consistent, deliberate training and being conscious of form is how runners get faster without destroying their bodies. Then show up to a race and let that ego run wild. Finish strong, high five people and quietly sip your beer.
In the last couple of years I've learned that it's important to really focus on whole body fitness, not just what's necessary for running. Strength and mobility are key.
Running is one of those sports that people tend to think the 1 thing that worked for them is the answer for everyone. It's not that simple. People have hips with different shapes. People have legs of different lengths. People have ankle damage from previous sprains. Good form helps for sure, but if you want to claim that all running issues are related to form - I have a bridge to sell you.
After 4 long, long years drifting around in my job, crumbled self-esteem, some mild-ish depression, I finally found another job and got out.
After a few months I realized that I was just 100% incompatible for the job I was in — not that I was unqualified or any of those other words that could also be true. I was simply incompatible.
I've learned to look at things a little better/clearer since then — evaluating things through the lens of my core values and how I feel rather than through the lens of imposter syndrome.
Maybe this is useful, maybe not :^)
I was working for a company that made lighting equipment for touring bands. One band had decided they wanted the biggest lighting desk in the world (this was in the early 80's). We cobbled together two of the company's latest digital desks as master-slave, and it nearly worked. Two problems remained as we got really close to the band's tour starting: a weird flickering in some of the indicator LEDs in the slave, and the output level (controlling the lights on stage) would sometimes wander around unpredictably.
We had a quick look and decided that the output level thing was a major issue which had to be dealt with first. The LED flickering problem was a) minor, and b) caused by a simple clocking problem which we could deal with later. We spent 48 hours or more with no sleep, trying to fix the output level thing. Got it just about useable, but not perfect.
The tour was due to start the next day so we decided to give up on the output level problem and fix the LED flickering, so that there was only one issue, albeit a bad one. Spent an hour fixing the clocking issue so that the LED's were OK, and lo, the output problem was sorted.
If only we'd dealt with the simple problem first, then we'd have managed to get some sleep!
And before you say that was a one off and bad luck or bad triaging or something, I've used the same heuristic more than once and it's always paid
I hosted the project on some PHP hosting who's owner was a guy I met while playing online games. I edited and worked on the game live through some editor that offered FTP connections.
Because I was 14 I didn't have a card and I had to go to the post office to make a payment I missed it once and the dude shut my site off immediately & deleted everything. No backups. Since I was editing remotely I didn't have recent backup I had some old copy of the codebase. I never manually backed up the database, I didn't even know what backup was probably... So a game died 2 months after it was launched :(
related memory: I didn't know how to configure a cron job so I asked the dude if he can host me 1 machine open Opera on some url, right click and set "Refresh every 60 seconds" (Versions before 12.00 had that)
Not really the hard way because DROP TABLE isn't instantaneous on big tables. So I managed to kill the query before the table was gone.
Always keep records of what you've said and agreed, people will have a different recollection of events down the line, and a written record is very handy at that point.
Give negative feedback in private email, then it gets forwarded to multiple layers of management behind your back, then a single quote from this email out of context is cut-n-pasted into your perf review few months later by management. (Happened in big advertising company that also runs search engine).
Things happen. They aren't who you think they are. Or maybe they suddenly decide they don't want to lift a finger, but they still get 1/2 the profits. And since it is a 50/50 partnership you can't even insist they let you buy them out.
Or maybe they are a great partner but they die in a car wreck and their spouse is a nightmare who just wants the business sold, now. Even if it wrecks your life. Be very wary of 50/50 partnerships without clear escape clauses.
The good thing is that once you get the grip of it you feel invincible. All the fear and the doubt you used to have while building a product disappear because now you know how to approach clients, and if you're smart enough you won't even start building a product without first having some feedback from potential clients.
-Assholes who don't know what it is like to work with mature code bases.
"Our code is self-documenting. If you need documentation then the code isn't written well enough"
-Assholes who don't know what it is like to work with mature code bases.
"Our code is self-documenting. If you need documentation then the code isn't written well enough"
-Assholes who don't know what it is like to work with mature code bases.
- People who don't know how to write clean code
Management thinks he’s brilliant. Everybody else thinks he’s an insane asshole.
Just because you know people who can say this with sincerity and gravitas doesn’t mean there aren’t assholes.
There are always assholes.
Recent example: when you authenticate to OpenSSH running on macOS 10.13 or 10.14, make sure to never attempt keyboard-interactive auth after password auth, or the server will stop responding.
Somewhere you need to write this fact down, so that the next person who comes across your auth code doesn't change the order of authentication methods.
You need to document things like that.
If you have a mature code base, you'll have dozens, or hundreds of these workarounds for all kinds of issues. If you look at the code, it'll seem inefficient. If you don't document why the code looks like it does, then someone will come along (possibly you) a few years in the future and "optimise" that line.
Sure, you could have a unit test that checks whether the workaround is in place. But then you STILL need to document why that unit test is there, or someone will come and consider it pointless and remove it.
1) Why (requirements, decision points)
2) What (use cases, interactions, external APIs)
3) How (internal APIs)
4) Who (SMEs, owners, servers)
And don't waste people's time; don't document things that are obvious.
If it is good, it's great. If it is bad, it is better than nothing.
1) Just having the contract sometimes gives people pause about what boundaries they're willing to cross.
2) A contract can help you salvage things that are not the relationship once the relationship has gone south if you choose too.
A written agreement is only as good as the people who sign it.
Which leads to... drastic change in your personality and that leads to..
2. Being very assertive, dominant, outgoing, life of the party, charisma, worldy wise etc.
I wish I was the same idealistic person I once was. I am definitely enjoying life way better than ever before but I no longer am naive.
I taught my students "You don't need a backup system. You need a _restore_ system." It changes the mindset from "Yes, we make backups every night" to "Yes, we can restore the database in x hours".
I've seen way too many companies take the "we're good; we make backups" only to fail when trying to restore.
Untested backups are worse than no backups.
The fact that it's never too late to make positive change in your life doesn't mitigate that.
(Of course this doesn't apply to everyone, as I'm already a pretty mathematical person, and functional programming just immediately clicked and made sense. YMMV. In contrast, the first time I learned quicksort I spent an entire afternoon before I made sense of all the swapping and increment/decrement of array indices. In a way, I really hoped I hoped I would be introduced to programming with a better textbook, say SICP, which doesn't talk about assignment until one third into the book. It just suits my style so much more.)
Putting hours, effort, and emotion into a person/project won't save it from inevitable collapse if that's the direction it's headed in. Set a timeline, create metrics, and if you aren't on a positive trending track, quit, otherwise you'll just keep chasing something that will lead at best to mediocrity.
Open office plans, culture fits, promotions, etc. are disguised financial terms made by someone in business. Open office means they're trying to save money, culture fit means "how often will you listen to me" and promotion means "up or out"
The quickest way to shut someone up or shut someone down, is to provide them with numbers and facts corroborate by 2+ other people.
2. Don't do premature optimizations / Measure before optimizing
3. Keep your cool when asked for estimates for something with unknown requirements / unknown team. Losing your mind or temper is never worth it.
4. Beware of the silver bullet new framework, right tool for the right job, avoid they hype on one hand and learn to move on when a technology dies out. (Hi Flash/VB/Cobol/Mainframe developers, I know you still have job security for a few years... but not forever...)
I will sometimes use a "pseudo exponential" like 1,3,5,10,25,50,100 and hold there. Of course, if you're trying to avoid collisions on a shared resource, the classic algorithm is pretty good.
Edit: "in favor of" -> "instead of"
I think there is a typo, or this is ambiguous. Are you saying you should use "pattern against pattern type of thinking" (and what is that?) or that you shouldn't? You should use "note against note & note after note" or you shouldn't?
What I meant to say that if you haven't learned the proper classification system that we now have in general music theory (dominant & tonic chords, sus chords, and let's say basic modulation principles), you might walk a long time in the dark looking for "that feeling" or "that continuation".
Kind of like politics and petty concerns are a big thing in academia too.
Go to the dentist. Even if you have great teeth.
From the article: "Although it can boost flexibility, the value of this is unclear, and no other measurable and significant benefit to stretching has ever been proven."
The thing I had to learn the hard way was the value of flexibility. You can pump out squats and go for a jog, but if your knees and ankles hurt when you go down stairs, you have a problem. If you can't sit on the ground with your back straight, you have a flexibility problem. A lot of lower back pain comes from flexibility issues.
What is the value of flexibility? Go visit a nursing home and see people who can barely move. Part of that is lack of strength, part is lack of cardio, and part is lack of flexibility.
Also, you should beware of lessons learned the hard way. A lot of times they are another way expressing a pain point, sometimes with a solution that worked - but that solution may not be optimal.
(Side note: When talking about the benefits of stretching, some people also mention Yoga, but that's a different story and 99.999% of Yoga teachers and practitioner don't have the slightest idea what they are doing.)
(+) That's the reason why you have the impression that you are stiff when you skip stretching for one or two days.
No amount of hard work and usefulness can amount to a beautiful product.
I have strong feelings about Lean Startup who told me to create a MVP, which made me look like an amateur.
So, listen to the marketing people and wait to release a beautiful finished product.
If you're in a domain where aesthetics and "beauty" matter, then your MVP is missing the "V" unless you have, indeed, made the thing beautiful. The Lean Startup approach doesn't tell you not to make things beautiful... it just tells you to make only what you need to validate your hypothesis. If that means making something beautiful, then you make it beautiful.
There are lots of fans currently, but at the time(and to this date), I get people questioning legitimacy due to a having a white shadow in my CSS.
Seen way too may times where stuff was rewritten to look better but usability suffered.
Case in point: Walmart recently redid their self checkouts. The new system looks a lot better and I like it if it did not take 3 times as long to pay. It even took forever compared to the old one to register cash being inserted. And there were several complete lockups.
Recently it seems better so I believe they have been working on the back end but for a while I would not even touch them
Multivariable calculus and differential equations weren’t a part of my undergraduate CS curriculum. Now that I’m doing an MEng in AI, I have to learn the hard math I skirted by before.
I don’t have the time or money to take the proper math classes so I’m learning everything myself. I have to figure out my own structure and timeline.
Without the math, I wouldn’t be much more than a technician when it comes to AI. It’s worth the work.
Released "Version 2" which was an entire newly built system that we worked on for an entire year (we also thought we were "agile" btw). This completely crashed and around 10K users were unable to use the product for almost 2 weeks. We did plenty of things right but we also failed.
Biggest Lessons learned:
1. Release features and changes in manageable incremental chunks
2. Load test, load test, load test - just do it! Yeah, sure, your app worked with your one user when there is 1kb of data in your datastore - what about 5000 users accessing it with 10GB in your data store?
3. Get and use an APM - when it feels like everything is on fire you'll need to know where the fire is coming from
4. One way changes that can't be rolled back are the devil. Take the time needed to make sure you can roll back - manageable incremental changes help with that.
New Relic, AppDynamics, and DynaTrace are a few vendors in this area.
However, I guess how much of your friendship suffer during how much of that?
Now I struggle to get the company back on track (as he « sold » me his shares without leaving me another option), and it’s a bit complicated but on the way.
Also, unless you've been especially good at proving your value to people (either through credentialing or having worked with someone directly or with someone they trust), no one is going to come to you with an offer to hop aboard a rocketship. Assume by default that any offer made to you is unfair and skewed to favor the person making it. Negotiate accordingly.
Take more time to plan up front, save yourself a lot of time and effort wasted if you don't.
I once added a line of code that did not execute in test environments because it involved a request to hosts that were only available on staging and production. So the tests were obviously fine but shit went south in production.
If you're going to go above and beyond, you should seriously question why you are doing so. When in doubt, do it for yourself.
2. You can’t help everyone
3. When you fail, let it go and move on
It took pushing my marriage to nearly the point of breaking to realize that my obsession with work, lack of participation in the house, and aggressive/demanding interpersonal communications was only leading to a dead end.
Because doing the later can give you physical symptoms like real back pain and migraines (collectively known as TMS) and millions of people suffer from it, get surgeries, medicine yet don't know that their persona is the cause of their physical pains.
This is what I learned the hard way after suffering from such aches and pains daily for nearly two decades and geting better quickly by just understanding the most basic thing about how our mind and body works.
It's the clash between id and the super-ego that causes it and there are thousand (if not more) people who got better from this pain.
If you search google for "TMS pain personality" you will find thousands of articles but this seems like a good start as any (2).
Unfortunately it's not for everyone because you really need to have an open mind (it's okay if you're a skeptical though) to unlearn your pain.
Bought Bitcoin worth about $30k over time which turned into $120k after a bull run after a awhile and I put my foot into leverage trading without knowing what I was doing.
Kept losing and got margin called until I emptied myself.
If I had kept it without a single trading, it would've been around $300k today.
That gave me a pretty bad blow when my company went into not so good state and my income took a hit, I no longer had any spare money and I've learned to trade after I know what I'm doing and split your savings instead of going all on your single favorite financial vehicle.
2. trust no one, not even yourself.
3. hard work, is money in the bank.
4. with two paths in the road... take the scarier one.
5. pay off your debts faster than expected.
6. give more than you get.
7. listen more than you speak.
8. always be prepared, to find another job.
9. love unconditionally.
10. try not to think in absolute terms.
11. everyone has a story
We once had a production-only crash inside our Elasticsearch setup (we had written plugins). On preproduction it was fine, development fine, etc. But on production it would crash with NoSuchMethodError coming from the Jackson library (I think it was floatValue()). After several hours and rolling back/forward, I took a shot that there was something clashing with the class in the JVM (which I didn't know was possible at the time as I was a fresh dev). After backtracing for a while, it turned out that our production ES environment had some AWS autodiscovery plugin installed. This plugin depended on the AWS SDK, which depended an AWS common library, which depended on a Jackson version just old enough to not have floatValue(). It appears that this was being loaded first, causing our plugin to crash because we were calling a method which didn't exist in their version.
Turns out that I actually filed a ticket for the SDK to update (https://github.com/aws/aws-sdk-java/issues/411) but I think we ended up just migrating away from floatValue() altogether. As a younger developer, this definitely opened my eyes to the need to ensure parity across test environments (I remember this happened whilst I was on a tz that had me trying to debug this at 4am).
Have you read Stranger in a Strange Land? I suspect someone else has taught you that word and they did it badly. To grok is to understand something at a profound, visceral level.
Community matters. Relationships with other people matter. When I thought strong work would scratch my every itch, it's because I'd yet to discover the contours of other ways of life one might have. I was fine being an antisocial workaholic at 20. As I approached 30, my face went white as some unspoken emotional thing in me began to realize what I'd missed. But you can come back from that, and it's very worth it. If you're willing to suss out the rules of engagement and play it straight, the world is happy to have you.
Western religion and American conservatism (archetypically, not the current implementations) have interesting and important insights about society and conduct, and they're things that off-the-shelf liberal culture suppresses or misunderstands, not from raw malice, but from calcified disinterest.
Revisiting the bible and last-generation conservative ideology with the idea that it might be an imperfect set of abstractions with something to teach rather than a guidebook for cruelty to be read literally led to a lot of personal growth, since the stories are archetypes about different types of conduct and their potential consequences. These stories aren't always right, and aren't always useful, but they were a second voice that, living in a coastal/liberal/progressive filter bubble, I had never heard. Seeing and understanding the "best" of what the right thinks, instead of the most "otherizing", led me to a worldview that feels more balanced, more centrist, and less polarized. It makes me assume positive intent in more people, and pick sides and fight less often.
I credit Jordan Peterson's lecture courses for packing these in a way that my progressive athiest self didn't immediately reject.
Everything @Patio11 says about salary is true. I missed out on gigantic sums of money, but later got them back on the table. The mental models in the article have, on a 5 year timeline, resulted in serious earning growth with absolutely no negative consequences.
My personal hunch is that it mirrors an experience my friends have described about sushi and coffee, neither of which I enjoy. Apparently, bad versions of those things are unpalatable if you don't know what would make them good. If you start there, you wonder "why the hell does anyone consume this". But once you've had the very good versions, you "get it" and know what you should be experiencing when you go back to the lesser versions, and more easily "forgive" their imperfect representations of a thing you enjoy.
I've definitely had that experience with religion. I grew up in a family that was ambivalent to such things, failing to understand why anyone would care at all. Then as an adolescent I saw all the horror, at home and abroad, wrought by religion, and rejected it as superstitious mumbo-jumbo at best, and a pretense for violence, bigotry, and a return to the stone-age at worst. When I finally managed to encounter a packaging that let me see what might be good about it, I was grateful to finally understand what the fuss was about, even if I'm not all the way bought in.
I now have approximately the view that Sam Harris does:
"I still considered the world’s religions to be mere intellectual ruins, maintained at enormous economic and social cost, but I now understood that important psychological truths could be found in the rubble."
I do have a passing interest in Buddhism (but not as an adherent, though I do meditate, read about, and appreciate some of it) though both Buddhism and the better forms of Christianity I still don't think are for me (nor is any organized religion) but I can appreciate parts of them from a distance and those that are still adherents, if their actions follow positive paths from them. I think I've matured since my journey out of the faith began, so it's easier now to be a bit more measured (yet still firm) in my rejection of it.