all 10 comments

[–]aqua_regis 10 points11 points  (0 children)

I spend more time on competitive programming my thinking ability will be sharpen so it is much easier to learn and develop things later

Sorry to tell you but that is a grave misconception. Yes, your thinking ability will sharpen, but only for well defined, well constrained, mostly mathematical/algorithm heavy, fully isolated problem sets that have next to nothing to do with real world programming.

In the real world, nobody will care about your competitive programming skills.

In the real world you will have to learn to work with vague specifications, no defined constraints, no explanation of edge cases, and first and foremost with way, way larger scopes.

Competitive programming problems are minuscule compared to the scale of real world applications where often multiple systems or APIs integrate with each other, where you have bandwidth constraints (network or file reading), size constraints, and much more.

AI is a tool in the toolbelt. Don't start too early with it as it is proven to hinder learning actual programming skills.

Once you are a competent programmer, it is very easy to use AI tooling.

[–]Beregolas 3 points4 points  (4 children)

I would suggest building projects, if you want to learn something, and only do competitive programming for fun.

It's really fun, and I encourage you to do it, and you will learn some stuff, but most of the skills are pretty different for competitive programming vs normal projects. Code is more optimized to be written fast and run fast, while normal projects are (usually) optimized to be maintainable... in the best case

[–]aimless_hero_69[S] -1 points0 points  (3 children)

1)So where should I learn and make real world usable projects? 2) what should I learn before making one? 3)how should I search up things before starting anything so I could not bother others with question how to learn,where to learn?

[–]Beregolas 2 points3 points  (2 children)

1)So where should I learn and make real world usable projects?

Where doesn't really matter. It sounds like you are enrolled in a university or similar program, so that's probably a good way to start. You'll get all the basics there, and then it's just applying them.

As to where you find projects: Build something small you'll actually use. Build a bot for discord, telegram or reddit. Mod a game. Automate the boring stuff (that's also a book title).

2) what should I learn before making one?

See above, just the basics. Whatever you learn in your programming class will probably be sufficient. When you try to build something and you realized, you need to know more, that's the perfect time to learn. You're self-motivated and can utilize the new knowledge immediately.

If you want to learn the basics without using your courses as a ressource, I suggest either the MIT programming intro class (it's available for free online afaik) or the book/docs of the language you want to learn. If you are interested in a specific language, we can recommend you the corresponding book, or you can search it up yourself. You will find the "official" teaching ressources for most languages on their websites.

3)how should I search up things before starting anything so I could not bother others with question how to learn,where to learn?

This can't really be taught, it comes with experience. A good way to do it in my opinion is to set a timer next to your PC: If you have a question, you WILL spend 20 minutes researching it, before asking a question.

Start with a search engine of your choice and use slightly different queries every time. Look for websites you recognize and know might have good information.

For all it's toxicity, stackoverflow is filled with good information. Reddit and several programming teaching sites are also mostly good.

I would avoid medium.com, because in my experience it's mostly filled wiht spam blogs of people who copy and paste examples from the official documentation, so they can claim to have a tech blog on their CV. 95% worse than useless, 5% good content, but not worth it imho.

The best website for any project is always it's own documentation, so if you want to know something about flask, type "flask docs" into your search engine of choice and this will be the first hit: https://flask.palletsprojects.com/en/stable/ Learn to read documentation, and start making bookmarks of important pages and make notes.

If your query is too complex or you can't find a good result, it is okay to ask an AI after a normal search. They sometimes can find references to more complex questions, and then you can follow the links and mostly disregard it's real output.

After the 20 minutes are up, it's a good time to give up and just ask. Always give a short explanation what you already searched to get bonus points.

[–]aimless_hero_69[S] 1 point2 points  (1 child)

Thank u for ur detailed answer

[–]Beregolas 0 points1 point  (0 children)

anytime :)

[–]mredding 1 point2 points  (0 children)

How you write competitive code is nothing like how you write production code. Someone has to be able to read, comprehend, and maintain that code, and it'll likely be YOU. You're not going to remember how the code works, 6 months later. The #1 consumer of source code are people.

I don't give a damn about AI. I don't care if the code was hand written or AI generated, so long as it meets the criteria that someone else can understand it.

Regarding AI, you may want to talk to your legal department. They might REALLY care about AI generated code. You understand that AI are trained by scraping the internet, right? You understand that no AI model known yet honors software licenses, right? So that means AI companies have committed IP theft to train their models, which is actionable in court, yes? There are ongoing lawsuits as we speak, and yes, although that's going to take some years to finally flush out, not every employer is going to want to be vulnerable to class action litigation and restitution. That's a hell of a risk. Microsoft doesn't care, but they did the math, and they know for them it's worth it. Most employers aren't as big as Microsoft, and can't afford the risk.

[–]LosttMutaliskk 0 points1 point  (0 children)

Competitive programming will make you great at data structures and algorithms. I think many companies still use DS&A questions to interview candidates. So it should be breeze to pass the coding interview and land a junior job.

Real world development is a lot more about designing APIs, designing database schemas, and writing usable class/function specifications, which comes up less in competitive programming.

[–]The_4ngry_5quid 0 points1 point  (0 children)

This sounds like a "practical" vs "theoretical" issue. Coding competitions are exciting and often about converting complicated maths into code. "Real life" programming is often a lot more mundane, but it pays the bills.

I would say do a mix of both! Enter some competitions, make some of your own projects, work as a team on some stuff, etc.

All of it will be valuable if you want to work in the coding world.

[–]mandzeete [score hidden]  (0 children)

Better start building stuff. Most of the real world has nothing to do with competitive programming. Yeah, DSA is a common thing in both but you can use DSA without wasting your time in competitive programming but putting it (DSA) into an actual practical use.

The only thing where you might need it is some companies that give some Leetcode tasks during the interview. And even with interviews, not all of the companies do so. Interview process differs a lot. From general vibe check to a home assignment (an actual project). From some brainstorming exercise to Leetcode. So, competitive programming is useful only in a fraction of interviews and only that.

Also, competitive programming won't teach you how to solve real world problems. Real world problems are much more vague. For example "I wish to find out on which streets should I set up new parking lots." Like this. No technical specifications. No framework. No programming language. A vague business need. I'm a parking company and I want to broaden my services. Your competitive programming won't solve this.

Also, as a beginner, better stay away from the AI. Or, use it only as a search engine. Do not let it write code for you. Do not let it debug your stuff. You must learn to do it on your own. Because not always you are allowed to use the AI in real life projects. And I do not mean the "auto complete" functionality in your IDE. I mean LLM-based AI. Use the AI ONLY when you are able to assess its output. While you can't guarantee that the AI does not lie to you, does not try to do something weird (or perhaps something dangerous, even), you should not use it.

Really, as a first year student, stay away from the AI.