Competitive Programming vs. Paid Programming Jobs

software development projects

Competitive programming is fun, and could be applied in certain scenarios — mostly in large tech companies building compilers, dealing with humongous databases and analytics programs, dabbling into compression techniques, encryption, and the like.

The vast majority of companies employing developers build projects solving business problems.

It’s a different mindset. In competitive programming, it’s about optimal routes, the complexity of search and sorting, and a bunch of algorithms that get the job done.

Nature of Software Development Projects in Companies

In real-world software development (the majority of the companies):

  1. Your job is constrained in time. You need to deliver, and quality is important, but the completion time is what earns your paycheck.
  2. A team of people works on a project, including designers, QA, PM, and other roles. It’s a collaborative effort, differently from solving an isolated problem yourself.
  3. A business-driven solution relies on context. The fastest solution isn’t always the best one. UI matters. Documentation matters. Code quality is what will help the project survive through the years.
  4. There are different groups of projects, with their own paradigms and best practices. RESTful applications, web software, SaaS solutions. Once you build one or two, you get the gist of the important components you’ll need to develop, how they play together, common security or performance caveats, commonly used libraries that get the job done.
  5. Speaking of libraries, most problems are already solved within frameworks and libraries. You won’t have to build your own data structures or wrappers around simple data types. And performance execution is often a second-class citizen in many cases.

This is why recruiters often look for specific technical stacks, previous employers, portfolio. Overlap with the software stack is an added benefit, and having solved business problems with code in a team environment is an important addition to the set of qualifications.

Your best bet is building a couple of projects yourself.

If you want to work as a web developer, study a web framework in your preferred language. Build the database layer. Scaffold (or better design yourself) the object-relational mapping. Implement MVC with its own corresponding specifics. Dab into some JavaScript for better usability, AJAX interactions on the front-end, seamless transition between screens.

For mobile development, study Java or Kotlin for Android, or Swift/Objective-C for iOS. Take a look at some of the popular apps out there. Try to replicate them with your own framework. Study the different controls, session and memory management, and cross-device compatibility.

Same rules apply for every vertical. Gain some experience there and apply for a relevant job with your portfolio.