Блог пользователя trainerherp

Автор trainerherp, история, 6 месяцев назад, По-английски

Hi Codeforces! What steps should I take to pursue a career as a software engineer, and how can engaging in competitive programming contribute to my journey in becoming a software engineer?

  • Проголосовать: нравится
  • +17
  • Проголосовать: не нравится

»
6 месяцев назад, # |
  Проголосовать: нравится -17 Проголосовать: не нравится

Be consistent,focus on DSA and DP.Try to solve problem without any help.

  • »
    »
    6 месяцев назад, # ^ |
      Проголосовать: нравится +22 Проголосовать: не нравится

    life-changing advice , thanks

    • »
      »
      »
      6 месяцев назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Thanks,take love from Chittagong

      • »
        »
        »
        »
        6 месяцев назад, # ^ |
          Проголосовать: нравится +1 Проголосовать: не нравится

        Btw asking from Dhaka , why do you think that without being consistent , focusing on dp and dsa , solving problems without help he became >=2100R

        Take love from Dhaka

        • »
          »
          »
          »
          »
          6 месяцев назад, # ^ |
          Rev. 2   Проголосовать: нравится +6 Проголосовать: не нравится

          Bro, Assalamu ali kum, First, I'm not looking at her profile,but after I complete my comment, I'm shocked lightly for a moment to see her profile and your profile as well. Btw, it's advice only from a little ant. Don't take it otherwise.

»
6 месяцев назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

I am also figuring it out and looking for jobs(noone offered me till now) , I am in my final year computer science engineering:)

»
6 месяцев назад, # |
  Проголосовать: нравится -34 Проголосовать: не нравится

Competitive programming has nearly-zero correlation to industry. In industry, programming is about readability and maintainability. Competitive programming teaches you the opposite of that, along with premature optimization, terrible hacks and shortcuts that would make any Stack Overflow regular vomit, and data processing algorithms you will never use in the vast majority of programming jobs.

In other words, it's entirely useless for a software engineer career.

  • »
    »
    6 месяцев назад, # ^ |
      Проголосовать: нравится -10 Проголосовать: не нравится

    Even chatgpt disagrees. L.

  • »
    »
    6 месяцев назад, # ^ |
    Rev. 3   Проголосовать: нравится +65 Проголосовать: не нравится

    I am writing this comment from the perspective of a university student who did CP in high-school.

    I think that the statement of "entirely useless for a softdev career" is exaggerated. Sure, there are probably CP-ers who got the bad habits from CP (ugly code, etc.) and who do not benefit from it. In my personal case, CP has really helped my coding and problem-solving skills: not the algorithms themselves were really important, but rather the sort of algorithmic thinking that allows you to write complex, bug-free code. The internship experience I had so far also showed me that this algorithmic thinking can help you approach and find systematic solutions to hard-to-define problems arising in projects. I would argue that these skills outweigh the potential tendency of writing messy code, which can be at least alleviated pretty quickly.

    For the reasons above, I think CP can give students a huge headstart in their careers. Indeed, I personally got a really good internship because of the CP I did in high-school.

    I expect that a significant number of people can find my argument relatable, in which case the statement of CP being "completely useless" is false. It is probably not useful for all people, but for some (and, probably many) it is.

»
6 месяцев назад, # |
  Проголосовать: нравится +29 Проголосовать: не нравится

What steps should I take to pursue a career as a software engineer?

Best way is to take as many experience as you can either through project or getting work (maybe intern / part-time if you are still a student), and don't forget to make connections with some people particularly those with good software engineering career.

How can competitive programming contribute to the journey as a software engineer?

In terms of getting exposure to some tech companies, I think there are several companies that is biased towards Competitive Programming (either through they hiring test or what they see in the CV), so I think having doing Competitive Programming would make it easier for you to ace out those types of CP interview and make you stand out in some other candidates.

In terms of the software engineering itself, on the bad side, some people say the "bad practices" in Competitive Programming effect how we code, some things like using global variables too much, overkill implementing, not using the best design pattern, or some bad variable naming. Although, I would say it's easier to avoid this bad practice since you probably code differently in software engineering.

On the good side, I would say Competitive Programming contributes to some great skills like how fast we can implement a code solution in our mind, finding bugs more effectively, understanding how to make an efficient program (speed and memory), and probably some useful techniques that might look trivial in competitive programming but not to the norm.

What I would say the biggest contribution from competitive programming is definitely having a great problem solving skill (how to think about a problem, how to approach a problem, finding patterns, how to think of getting a solution, etc), and that's something very useful to have in software engineer, maybe even more in day to day basis.

There are probably some other nice things that Competitive Programming contributes in software engineering.

I particularly like this quote:

Everything you learn will compound throughout your life. Our brains naturally pick up patterns and make connections with new information without us even realizing it.

»
6 месяцев назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Focus on readability and maintainability of the code, because it (hopefully) will be used for years and read by many people. Then think/learn principles of intent-revealing naming, decomposing the problem and organising code to minimize the maintenance effort.