Roy Tang

roytang.net

Programmer, engineer, scientist, critic, gamer, dreamer, and kid-at-heart.

Blog Notes Photos Links Archives About

Subscribe: RSS JSON

2018 September

  • Someone on quora asked:

    I tried out for a sports team at my school and didn't make it. How can you still fail when you try so hard?

    There is a quote I’m fond of from Star Trek: The Next Generation, when Data (an android) loses at a game despite having what he thought was a flawless strategy. Picard tells him “It is possible to commit no mistakes and still lose. That is not a weakness. That is life.”

    Fundamentally, life isn’t fair. Just because you put in all the work doesn’t mean you are guaranteed to get what you want. It may improve your chances, but chances are just that - chances. Sometimes other people simply work harder than you. Or maybe they have more advantages. Or maybe you got unlucky and the judges were having a bad day. There are a million other factors that could have affected the outcome other than how hard you worked.

    But don’t be discouraged! Hard work is still important, much more so than talent. Because hard work and practice and muscle memory will push you past unfamiliar situations that talent cannot. And hard work overall contributes to improving your chances.

    Want to improve your chances even more? There’s two things:

    • Learn from your mistakes. Figure out where you went wrong last time, and apply that to succeeding attempts. This increases the chance that life will go your way next time!
    • Make more attempts. Try and try until you succeed. The laws of probability state that flipping a coin once only has a 50% chance of coming up heads, but flipping a coin twice gives you a 75% chance of heads, flipping three times ups the odds to 87.5%. The more attempts you make, the greater your odds of getting there. Combined with learning from your mistakes, this is the easiest path to success.

    Posted by under notes at #answers

    Also on: quora /

2018 August

2018 March

2018 February

  • Someone on quora asked:

    Can one become a “software savant” mid-career, where they become brilliant after years of experience, or are the best of the best always superior from the start?

    I don’t believe there’s such a state as “software savant” where you click a switch and you’re suddenly this perfect all-knowing super brilliant guru. I think software development (like many careers) is a continuous journey of self-improvement.

    What differentiates better developers isn’t being brilliant or some advantage that makes them “superior” from the start. It’s the attitude of knowing how to apply experience from past mistakes, knowing not to let ego drive your decisions, knowing that you need to approach problems systematically, knowing how to communicate well with your peers etc. None of these are inherently out of reach of anyone.

    Years of experience gives you exactly that - experience. The experience by itself is meaningless if you don’t learn from it and apply that learning properly.

    Posted by under notes at #answers

    Also on: quora /

2017 December

2017 March

  • Someone on quora asked:

    How do I get over the fact that people might betray you suddenly?

    Try this: at the end of every day, count how many people didn’t betray you that day. Not only friends or family, but also people like:

    • the uber driver who got you to your destination on time and didnt kidnap you
    • the cashier at the grocery who didnt try to short-change you so she could pocket some extra cash
    • the pizza delivery guy who didnt try to break int your house
    • etc

    Ok, there’s a chance that this exercise might actually make you more paranoid lol. But the point of it is to realize that people implicitly trust each other every day, even strangers. Society is held together by the simple fact that most of the time people aren’t looking out to betray other people (they have their own problems to worry about). Sure there’s always the possibility that your best friend of 10 years suddenly decides to sell you out somehow, but there’s also a possibility of a meteor crashing into your house tomorrow. Worrying about such things is pointless. It’s okay to maintain a healthy level of skepticism about other people’s intentions, but most of the time everybody is else is too busy trying to get by.

    Posted by under notes at #answers

    Also on: quora /

2017 January

  • Someone on quora asked:

    When I work on a new software project using unfamiliar technologies, it's extremely difficult to get start, what should I do?

    The activity of building software is fundamentally about breaking things down into smaller tasks until they are small enough for you to write them in code. Look at your entire system. Study your requirements. Figure out the steps that have to be executed, the things that the system needs to do. Then iterate on each step and break it down further until you feel that you understand it well enough to implement it.

    I find it’s often easy to follow the flow of data as it travels through your system. (Your mileage may vary - or maybe you favor a different approach.) Don’t think about analyzing millions of emails. Think about analyzing one email. Where does it come in? Where is it stored? How does the system process it? Where is the processed data stored? Where is it sent to afterwards.

    If you still find yourself struggling to move forward, try building a prototype. Just a small proof-of-concept. Implement a small part first. Maybe get the email from somewhere? Don’t worry about authentication or security or anything, just get that data flowing from one end to the next. You’ll discover things you hadn’t considered and you’ll learn some things you did right and some things you did wrong.

    Then prototype the next step.

    Now you have two prototypes. Link them together. Integrate them. Then prototype the next step. And the next.

    Now you have all these prototypes linked together and moving data and processing it from end to end.

    Throw out all the prototypes.

    Go over the lessons learned and do another iteration.

    Repeat until satisfied.

    Posted by under notes at #answers

    Also on: quora /

  • Someone on quora asked:

    My old coworkers keep calling me everyday. I got a new job and left due to the stress. What should I do?

    Tell them. “Hey you know, I really enjoy our chats, but to be honest I don’t really want to talk about the old job anymore. That part of my life is done, you know? I don’t want to think about it anymore and move on professionally. So I’d appreciate if we keep work out of our chats, I’m sure you’ll understand, right?”

    Posted by under notes at #answers

    Also on: quora /

  • Someone on quora asked:

    How can I deal with problem of choice? I find it extremely difficult to make choices for myself in all aspect?

    If you’re having trouble choosing between some options, that means they are mostly within an acceptable range for you (if any of the options was flat out unacceptable you would have rejected them on the spot). In that case, just choose one at random (literally roll a dice if you can’t decide) and go. If it turns out later that it wasn’t the best choice, figure out if there was any information that would have helped you, take note of it for next time.

    I realize just saying it doesn’t mean it will be easy for you. It won’t. But just practice until you get better at it. Next time you’re making a choice, just choose one option at random or whatever your heart says you want or whatever. Some choices will be good and some will be bad, but that’s true whether you overthink or not.

    Posted by under notes at #answers

    Also on: quora /

  • Someone on quora asked:

    Why are there some genius like Carlos Matias La Borde who can learn programming easily while I have lots of time and still sucks at algorithms?

    Sometimes simply putting in time and effort may not be enough. You have to make sure your time and effort are being spent wisely. This can only be done by thinking and analysing your own learning process. Think about how you are studying algorithms and try to figure out why you are having difficulty remembering or learning. Try to identify specific problems you have instead of a general “I am really weak”.

    Algorithms are primarily a function of problem solving skill and the ability to break down a problem into a series of logical steps. When studying algorithms, make sure you’re not just doing rote memorization of the steps involved - instead try to get a basic understanding of why those steps work. Compare the algorithm to how you would solve the problem manually, using only your human brain. Think about it from different angles.

    Since you said you have already put much time I assume that you have already implemented those algorithms you are studying, as in you wrote the code yourself and you understand what each line does and you can step through the code as it executes and see where the program flows. If not, that’s something you should definitely be doing.

    Posted by under notes at #answers

    Also on: quora /

  • Someone on quora asked:

    How important is being able to teach/mentor in software development?

    If I were looking at a resume that had a TA/mentoring position on it, what it would tell me is not only that the applicant knows enough to be able to help other developers but also that the applicant has at least some skill in communicating his ideas to other developers, particularly to ones that may be less experienced.

    The ability for software developers to communicate well is seldom mentioned in job ads or whatnot, but I would consider it a vital skill especially as team and project sizes scale up. Obviously not everyone who evaluates a resume may consider this important, but it probably wouldn’t hurt to put it there.

    Posted by under notes at #answers

    Also on: quora /