Junior Web Developer

Worked for two years at a start-up company. Learned practical problem-solving abilities and delivering software tasks under time pressure.

Frequent exposure familiarized me with the scenario of being new to a very large codebase.

Codebase with a lot of new technologies I did't yet know, and tasks to be delivered sooner, rather than later.

I got better at handling that scenario.

Learned operating within the agile development process. I got better at knowing how to deal effectively with pressures, and problems invovled with, the product releases every two weeks.

Learned effective communication: every work day meant "daily" and talking about software, from which I learned how to form my thoughts about it in a simple, clear and concise manner.

Probably most importantly, I learned how to learn efficiently, in the ever-more dynamically changing, demanding world of IT.

Programming concepts:

  • concept of data types
  • why data types exist

  • values
  • variable

  • control flow

  • loops
  • functions

  • objects (prototype chain in Javascript)
  • classes (as object blueprint) and instances
  • Object Oriented Programming (intermediate level)
  • SOLID principles

  • Imperative / Procedural / Declarative programming
  • Functional paradigm vs Object oriented paradigm

Data structures:

  • Array
  • Linked list
  • Stack
  • Set
  • Binary Search Tree

Aside from work experience, I've trained problem solving by:

  • developing numerous web applications, websites

  • encountering bugs, roadblocks, obstacles in developing, and solving them

  • by practicing solving coding challenges on platforms such as codewars.com

  • by studying and thinking about software concepts and deepening my overall understanding of it

  • by studying problem solving itself, in particular, from the teacher V. Antom Spraul and his book "Think like a programmer"

  • Javascript
  • I can work with, understand, read, write, modify, debug advanced features

  • For example: recursion, function currying, closures, multidimensional arrays and objects, deep vs shallow copy, complex DOM operations

  • Typescript (basic)
  • Managing DOM with Javascript

  • Angular (basic)
  • React
  • Redux

  • Sass
  • Bootstrap

  • HTML
  • CSS
  • SVG

  • Developer tools

  • Git
  • Terminal (basic)
  • VSCode IDE

  • Hosting

I've learned that attacking the problem head-on almost never works, nor is it worth it to skip basic preparation and just go at it.

For what it's worth, I learned to always have a simple roadmap, with a reasonable priority path, tasks and few likely contingencies.

It's either that, or the solution work will be circular, random, repetetive and everything will take 10-20x longer, if that.

This applies to developing any larger-scale thing, even if it's just a feature:

  • it has to be broken into components
  • it has to be clear how the components fit together
  • then I have to make tasks and focus myself on one small priority at a time
  • once that's done, move on to the next, and then next, repeat

That's how I trained myself to work, to improve effectiveness of my efforts.

I keep it as simple as possible but I always de-compose things into smaller components, determine how these fit together, make tasks to push it forward, and then tackle one small priority at a time.