Hacker Newsnew | past | comments | ask | show | jobs | submit | pythonb3sss's commentslogin

Still in India. And I will not learn a single new thing if I go back to university, unless it's a good one, and I'll have to compete with more than 1 million students to get into one of those and there are maybe 15-30k vacancies per year. In the rest of them, the lecturers just dictate what you need to cram into your brain and vomit it out on the answer sheet and that's it. Lecture done.


All that being true, your own post says that's the thing blocking you from getting another job, a better job. So even if you learn nothing (which I doubt) it's still what's holding you back. Check out this HN post, I think it's relevant.

https://news.ycombinator.com/item?id=38317087

You have to look at things from a practical perspective and leave ego aside. Getting a job is selling yourself. Look at all the things sales people do to sell a product. Your the product, the buyers want to see a degree, even if it's from a mediocre university. So, you can remain where you're at and keep looking for the 1 in a million job while those people who did the University thing get there CV's moved higher up the stack.

Otherwise you're looking to move to a place where they don't care, but again you're looking at an entry level non programing job. You will have to prove yourself for at least 7-10 years with no degree, or become well known in the industry for your area. Doing that requires a lot of networking. Attend every users group and conference. Become a presenter, etc...


> And I will not learn a single new thing if I go back to university, unless it's a good one

While I understand the Indian University sentiment here, there are many other opportunities for learning AND promoting yourself at the same time. For example, contributing to open-source software (especially software that is used by corporations) is a classic route for a reason.


What kind of magic advice you want then? You gotta at least put more effort than the rest getting the job you want.


I don't want to lie to get a job. And companies do verify. Maybe not small startups, but everyone else does. And those small startups will start verifying when they grow.


You didn’t state where you are based now. Are you still in India or you moved elsewhere?


Still in India. The layoffs and the recent batch of fresh graduates have really made it impossible to get a job as companies can basically take their pick. Immediate joiners, low salary expectations, work experience from FAANG like companies. And then there's the great vanishing of VC money as interest rates have been raised sharply


In addition to the many suggestions offered above, you could also try your hand creating a portfolio by contributing to open source projects.

If you don’t know where to start, you could start by reviewing COSS (commercial open source software) projects that need help from contributors in exchange for payment (aka bounties) on Algora [1].

Issues typically have a dollar amount attached to them and the dollar amount is often a proxy of how much effort it would take you to complete it.

So, a $20 issue could probably take you a few mins to complete, while a $200 ticket could probably take you a few hours to a few days, if you are not familiar with the codebase/stack.

Note that competition is fierce for the “easy” tasks on Algora and many Algora regulars will open a PR (pull request) within minutes of a bounty being available publicly.

Good luck!

1: https://console.algora.io/events


> huge machine that looked pretty much like a guillotine

My local binding shop actually still operates one of those.


I dislike cheating. I've taken ~50 interviews and in 90% of them cheated:

a) I could hear their keyboard clacking when they googled the answer

b) they'd stall with "umm" and "ooo" while their friend googles the answer and shows it to them

c) (the best one) they'd memorize everything from leetcode style solutions and definitions to mathematics MCQs.

In my country, you're the odd one out if you have an exam or an interview and you don't prepare for cheating. It's a cultural expectation among peers to cheat to get ahead.

To work around this, I follow the advice I've read here on HN:

1) Ask them about their programming experience. Bugs they ran into, solutions they thought of, implementation of those solutions etc.

2) take a problem I faced in my work and present it to them and observe how they navigate the problem to reach a solution. They don't have to solve it, I just see their approach

3) just talk to them while asking basic language syntax and definitions. Again, the goal here is to check if they've memorized the answers or are they speaking from experience. If the answer is a regurgitation of some interview prep website, probe deeper to see if they know what they're saying.

The downside of this approach is, of course, time. It takes 40 minutes to an hour for each of these interviews. Time that sometimes I don't have and I have to move some stuff around to accommodate, work late to cover up or delegate. This approach has worked for me so far. I've hired 5 people in my team and all of them have been good hires.

EDIT: formatting and grammar


> c) (the best one) memorize everything from leetcode style solutions and definitions to mathematics MCQs.

Couldn't it be argued that memorizing leetcode solutions IS NOT cheating? Seems like it would be better to understand things at a fundamental level, but its still proof of ability to master the problem in and takes a lot of effort.

Especially if the person was upfront about the fact they could solve the problem but still didn't understand everything about it.


The problem was that he was terrible at problem solving. He failed at simple logical problems like flattening a nested json array, cleaning data before running operations on it, etc. And probing further on his memorized answers, he couldn't explain anything. He'd just repeat the same thing but change voice of the sentence (active/passive)


Although I'm not sure, this [1] could be the reason. TLDR: A chinese hacker group took the official exe, added a malicious dll in it and distributed it to NGOs and government institutions, most likely through a clone website or phishing email. Purpose was said to be espionage.

[EDIT]

Ofcourse the Indian media reported that the official VideoLAN org was controlled by the said hacker group which leveraged it's position to distribute malware.

[1] https://www.bleepingcomputer.com/news/security/chinese-hacke...


I wouldn't say I'm addicted to them, but when I find myself bored, I open a meme site (which shall remain unnamed) and just look at mildly popular memes. Doesn't matter what they're about. I just like the occasional laugh I get out of them. I also like social topics being turned into dark, twisted humor which is sometimes captured perfectly in memes.

But when I was going through a rough patch of my life (depression, suicidal tendencies), I would doom scroll said website every free second I could. I just didn't have anything in my life that gave me joy, apart from dark, twisted memes. I'm doing much better now and even though I am an extreme introvert with social anxiety, I find that I have replaced my time that I would spend on that site with time I spend with my colleagues. I still don't have friends, but Rome wasn't built in a day.

Why did I waste so much time on the Internet? If I hadn't, I wouldn't be here. It gave me that much needed laughter every once in a while that kept me from going over the edge and I would just keep scrolling, looking for one more laugh that will make my day a bit more bearable.

Just my experience though. IMO, generally speaking, people are spending more and more time on the internet because the products, or rather the content factories, have become so good at capturing and keeping our attention on them, that in comparison the real world seems bleek and bland.

EDIT: Fixed some grammar. English not native language


> Why did I waste so much time on the Internet? If I hadn't, I wouldn't be here. It gave me that much needed laughter every once in a while that kept me from going over the edge and I would just keep scrolling, looking for one more laugh that will make my day a bit more bearable.

Battling long term physical illness here that is an absolute fucking slog. Can very much relate to this sentiment.


Well said. Internet is a very good coping mechanism.


Since Mullvad doesn't have any servers in India, they should be unaffected, right? I confirmed it with their support, they said it will not affect their users.


Wow! Prior to reading this, I was not aware of "Zero Cost" exception handling. While I am only a Python developer, I always assumed that in any programming language, exception handling, regardless of whether an exception is raised or not, cost some CPU cycles. I work at an HFT firm and they test their changes in equations in Python programs on crypto rather than C++. So I resorted to using try-except blocks in Python to reduce "branching" i.e if-elif-else blocks. I would just add all the different conditional functions in a dictionary and manage calls based on keys and handle exceptions. I don't know if that's the best way to improve speed, but I would like to check if this has any impact on it.


For me it isn't about the cost. Modern languages like Go and Rust separate the error handling from the conventional logic, and that makes the code more readable. It's my only complain about Python, (outside of performance of course). In Python when you see a `try`, you don't know if it's because there's error handling going on, or if it's because that's the only way to achieve a certain goal due to Python being designed to mingle logic with error handling. After doing projects in Go and Rust, I can see the value in separating the two, and that makes me sad that Python is old now.

Maybe what they're planning to do with this is allow wrappers to hide the places where exception handling is gratuitous, and therefore try to bring Python forward into the world of more modern languages.


> Modern languages like Go and Rust separate the error handling from the conventional logic, and that makes the code more readable.

The (result, error) pattern in Go or Result<Ok(res), Err(error)> pattern in Rust usually mixes the two. Unless you're doing and_then in Rust, but Go doesn't have anything like that. If anything, I feel like it's exceptions that separate the error handling for the conventional logic. You have your normal code in try, and your error handling in except.


> Modern languages like Go and Rust separate the error handling from the conventional logic, and that makes the code more readable.

This is a very odd claim. Go and Rust are extreme examples of mixing up error handling with conventional logic. There are excellent reasons for doing it that way, but the fact remains that they do. Exceptions, on the other hand, definitely do separate error handling from conventional logic – that's the whole point of them.

I think you just happen to have seen Python code bases where exceptions are caught very close to where they are being thrown, but that's property of the code you read, not the language feature. And presumably you have also seen Rust/Go code bases where errors are often passed back up the stack, which is easy to do but still requires some code (even just a ? in Rust is still an explicit decision) in a way that allowing exceptions to propagate up does not.


You may enjoy programming in Elixir if you like that style. In Elixir, you only program the “happy path” and just let things fail. Then you rely on supervisor processes to handle the exceptions/errors. Well, at least that is the idea. I think people still do tests and function guards and things. but the “let it fail” idea is definitely part of the Erlang/Elixir world.

The sad thing is that there really isn’t any “learn elixir” book that teaches this idiomatic design. A student of Elixir should set up an umbrella application from the very first hello world, in my opinion.


Well, I don't enjoy the "happy path" programming. Admittedly, this implementation to improve speed feels a bit hacky. I only did it because it had a measurable impact on the computational performance of my program. In my other grunt worker scripts, I actually prefer if-elif-else statements because they make code readability better for other programmers who are not Python "natives", but use the scripts or modify them to suit their use cases.


There are some weird performance optimizations in Python, e.g.,

    item = some_dict.get(key)
    if item is None:
        # key does not exist
Versus

    try:
        item = some_dict[key]
    except KeyError:
        # key does not exist
When I tested these (admittedly, a while ago), which one was faster depended on how often the key was missing. If “missing key” was an expected case, the first one was faster. If “missing key” was uncommon, the second was faster. It sounds like the fast path in the second case is getting faster, so this performance gap may be increasing.


Fun fact: all those approaches use multiple dict lookups, just of different dicts.

First approach is looking for `get` in `type(some_dict).__dict__` and then for `key` in `some_dict`. Second approach is looking for `key` in `some_dict`, and then (only if missing) for `KeyError` in the module globals/builtins.

If the performance of hash lookups matters, Python is the wrong language for you.


> If the performance of hash lookups matters, Python is the wrong language for you.

Announcement to Python programmers: “Don’t bother trying to improve the performance of your Python code! If performance matters, just completely rewrite your code in a different language!”

I don’t know how to respond to that, except to disagree with the underlying assumptions that (1) there is a “right language”, (2) if performance matters, Python is not a suitable language, or (3) people are generally in a position to choose which language a project is written in.

Even if performance matters, it is not the only thing that matters. When you choose a language, there are necessarily tradeoffs... everything from the skillset of your team, to the ecosystem of libraries available affects that decision. Finally, there are projects already written in Python.


I am going to speculate here, so if I'm wrong please point it out.

Here, the number of steps directly affect the time.

In the first approach, the ".get()" method first analyses the type of "some_dict" and then uses an internal variable (the ones surrounded by double underscores) to try and fetch the value by using the provided key. If the key is present, then the value is returned, if not then a default value is returned. So if the key does not exist, the returning the default value saves 1 step (that of fetching the value from the map)

In the second approach, the exception raises the number of steps because the type of error has to be determined and the stack is traced every time an exception is raised. So the more exceptions are raised, the slower the code gets.

I tested this with 3.9.7 right now and in my testing, the runtime of first approach was virtually unchanged, while the second one was faster if exceptions were raised ~12% of the time or less. (I ran both 10 million times)


Hi. I realize you're not looking for answers, but I would like to give my 2 cents. Now, this is just my opinion and I welcome constructive criticism.

> are these people even real? Do they live somewhere I'm just unfamiliar with? Or did the internet give them some loud voice that otherwise doesn't exist in person?

Yes. Most, but not all, of these "loud" influencers are real. Social media has become their platform to voice their opinions extremely loudly. And it has given them a reach that wasn't possible before. One public tweet on Twitter is instantly available to all the users and "lurkers". The algorithm pushes it based on engagement and it propagates through the filter bubble it "fits" in. Now they know that there are others who agree with them, but the only way to reach them is through social media. So most of them just keep their opinion online.

> Why are these voices the loudest - does controversy really sell this well? Is social media purposefully putting controversial things on the forefront because it increases engagement?

Yes. The main goal of Big Social (is that even a real term?) is to increase engagement and then sell ads. Fixing this "most engaged content goes to the top" approach will cut into their profits which will spook investors.

P.S This is my first comment outside of my own post (yes, only one post). I am a lurker


I can handle interviews easily. Even non-technical ones. More often than not, I am able to come up with a rough architecture for the program while my boss is still describing it and adjust it as he adds more and more constraints or conditions. So I have that part covered. But what should I do if I want to change my technology (not that I want to, Python has plenty of openings for now)? I live in India where companies generally don't even shortlist candidates of interviews if they don't have a degree but I have never applied for jobs after gett6some experience


> in India where companies generally don't even shortlist candidates of interviews if they don't have a degree...

That happens because there are so many applicants! The companies then decide to set initial filtering criteria to reduce their workload by setting arbitrary constraints for e.g. whether you have a degree, whether you have distinction etc. The same happens with larger US companies who get so many applicants that they try to set automated filter in the form of online coding tests to reduce their workload. You will get this everywhere. It is not specific to one country or company.


Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: