trainerherp's blog

By trainerherp, history, 12 months ago, In English

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?

  • Vote: I like it
  • +17
  • Vote: I do not like it

| Write comment?
»
12 months ago, # |
  Vote: I like it -17 Vote: I do not like it

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

  • »
    »
    12 months ago, # ^ |
      Vote: I like it +22 Vote: I do not like it

    life-changing advice , thanks

    • »
      »
      »
      12 months ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      Thanks,take love from Chittagong

      • »
        »
        »
        »
        12 months ago, # ^ |
          Vote: I like it +1 Vote: I do not like it

        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

        • »
          »
          »
          »
          »
          12 months ago, # ^ |
          Rev. 2   Vote: I like it +6 Vote: I do not like it

          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.

          • »
            »
            »
            »
            »
            »
            12 months ago, # ^ |
              Vote: I like it 0 Vote: I do not like it

            no bro you are a ferocious tiger ,

            Don't take it otherwise , Take love from Dhaka , you have a great career ahead

»
12 months ago, # |
  Vote: I like it 0 Vote: I do not like it

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

»
12 months ago, # |
  Vote: I like it -34 Vote: I do not like it

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.

  • »
    »
    12 months ago, # ^ |
    Rev. 3   Vote: I like it +65 Vote: I do not like it

    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.

»
12 months ago, # |
  Vote: I like it +29 Vote: I do not like it

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.

»
12 months ago, # |
  Vote: I like it 0 Vote: I do not like it

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.