JavaScriptを有効にしてください

[Algorithms] The way to be a savvy Software Engineer

 ·  ☕ 3 分で読めます  ·  🐙 subaru

What is demanded by the Big Techs

Big Tech companies are admired targets for every engineer, and I am one of them.

I often find myself dreaming about how I can evolve into a savvy software developer capable of solving complex systems and architecting robust, non-fragile systems.

Thus, I explored the criteria set by Big Tech companies.

AWS, renowned for its cloud services, has published its interview processes and provided tips for passing. It became clear to me that to enhance my skills, I might need to address all the questions provided on their page.

For instance, the role of a Software Development Engineer requires skills as listed below:

BASIC QUALIFICATIONS

  • 3+ years of non-internship professional software development experience
  • 2+ years of experience in design or architecture (design patterns, reliability, and scaling) of new and existing systems
  • Experience programming with at least one software programming language

It appears to me that the Software Development Engineer role requires not only a high level of programming skills but also the ability to structure durable, reliable systems.

Moreover, it seems to demand collaboration akin to that of a software architect, especially in roles involving ML scientists to create new AI-based machines.

Key Job Responsibilities

As an SDE, you will be responsible for designing, developing, testing, and deploying distributed machine learning systems and large-scale solutions for our global customer base.

A successful candidate will have an established background in engineering large-scale software systems, a strong technical ability, excellent communication skills, and a motivation to achieve results in a fast-paced environment.

Oh, Algorithms

From this information, I realized I wanted to acquire AI skills to improve my career opportunities.

Initially, I thought my knowledge of algorithms was inadequate, so I developed an interest in computer science, particularly in programming algorithms such as:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
clustering
count inversions
Dijkstra's algorithm
Floyd-Warshall algorithm
Huffman coding
Karatsuba multiplication
Karger's min cut
knapsack problem solutions
median maintenance
Prim's minimum spanning tree
quicksort
strongly connected components
job scheduling
traveling salesman problem heuristics and solutions
2-SAT problem solutions
two-sum problem
weighted independent sets

I discovered that the Stanford algorithm classes, famous for their free accessibility, cover these algorithms:

  • clustering,
  • count inversions,
  • Dijkstra’s algorithm,
  • Floyd-Warshall algorithm,
  • Huffman coding,
  • Karatsuba multiplication,
  • Karger’s min cut,
  • knapsack problem solutions,
  • median maintenance,
  • Prim’s minimum spanning tree,
  • quicksort,
  • strongly connected components,
  • job scheduling,
  • traveling salesman problem heuristics and solutions,
  • 2-SAT problem solutions,
  • two-sum problem,
  • weighted independent sets.

Then, I decided to take the classes on Youtube!

While Coursera offers a structured way to take these classes, I found the same content on YouTube and opted for that instead (technically, just watching recorded content).

There are many published GitHub repositories with course task assessments. If you’re interested in coding the algorithms taught in these classes, you’ll find solutions there. Some use Python, and others use Rust, but I decided to use Go due to its growing ecosystem and its prevalence in job requirements.

https://github.com/kevininder/Stanford-Algorithms-Specialization

https://github.com/ds17f/coursera-stanford-algorithms-divide-conquer

In my next blog, I will delve into Stanford’s first-week assessment on Karatsuba multiplication, so stay tuned. Bye.

References:

‘Stanford-Algorithms-Specialization’

https://github.com/kevininder/Stanford-Algorithms-Specialization

https://github.com/ds17f/coursera-stanford-algorithms-divide-conquer

https://www.coursera.org/specializations/algorithms

「Mathematics for Computer Science」

https://people.csail.mit.edu/meyer/mcs.pdf


octpsubaru
著者
subaru
Web Developer