cloudresumechallenge / projects

The official home for the Cloud Resume Challenge and other real-world projects that help bridge the gap from cert to cloud job
MIT License
273 stars 70 forks source link

fix: simplify instructions for Kubernetes resume challenge #20

Closed loujaybee closed 8 months ago

loujaybee commented 8 months ago

Raising a PR that generalises some of the steps. I've not removed the helper text, but pushed to the bottom as an appendix. I would argue these even could/should be moved to another page as that's more in the spirit of the cloud resume challenge, to not give explicit instructions. The bulk of the PR is moving steps that are very specific to the KodeKloud example (https://github.com/kodekloudhub/learning-app-ecommerce to the bottom) to the bottom. This gives the reader the opportunity to scroll down to those for reference, but keeps the steps more generic.

Before After
image image

Notable changes:

  1. Add a note before the "deploy to cloud" step about MiniKube based development.
  2. Consolidate some of the rollout/rollback steps (they felt too "pithy" as individual steps to me).
  3. Ensure each step has a clear "outcome" statement.
  4. Add a bit of context to each step about what we've done, and are about to do.

Here's a Loom video talking through the changes, purpose and before/after.

https://www.loom.com/share/f8ad0dfc598a4258973202fca074b8e2

loujaybee commented 8 months ago

CC: @forrestbrazeal / @nimeshmora

loujaybee commented 8 months ago

Thanks for the quick response, @nimeshmora !


Regarding Step 2 and Application Development

However, we have decided not to alter or omit details from step 2, where we focus on containerizing the web app and database. Given these components are application-specific, we believe it's beneficial to provide some detailed guidance, especially concerning aspects unique to PHP web applications and the db-load-script.sql.

If I understand correctly, the intent seems to be to focus the learner mostly on the infrastructure and K8s side? Reading the current instructions it does read that way (as there is only one step on containerisation and about ten steps talking about cluster admin). Kubernetes is a big topic, so for sure choosing what to cut, and what to keep is challenging. I feel that simply omitting implementation-specific details is preferential to providing partial context. My suggestion would be either:

  1. Expand the Docker section(s) - To cover Apache, PHP, directories, and the other topics that are briefly touched on in that section (e.g. what you mention in "provide some detailed guidance, especially concerning aspects unique to PHP web applications and the db-load-script.sql"). For sure if this is kept, I'd think more guidance / specificity is needed.

  2. Provide a reference Dockerfile - Alternatively, we could just provide the entire Dockerfile to the reader, then invite them to focus on other areas, e.g. the infrastructure and Kubernetes side, rather than application development.


pushing it by tomorrow/ please take a look at it as well!

Sure thing, will wait to check it out.

loujaybee commented 8 months ago

There might be a bit of a philosophical teaching approach at play here, too. So, I think it's worth re-iterating some background, as it might explain why I'm pushing for these adjustments, and why I feel they're important.

As you're probably aware, the CRC was created on the idea of self-reliance, debugging, encouraging learners to read documentation over a more "didactic" teaching style where the learner is guided through content. At first, this self-reliant approach can seem odd—I was even very skeptical many years ago when @forrestbrazeal first published about the CRC:

"And I believe that if you can, in good faith, complete the Cloud Resume Challenge, you will already have more useful skills than a lot of people who graduate from university computer science programs. Specifically: you will understand something about full-stack software development, version control, infrastructure as code, automation, continuous integration and delivery, cloud services and "serverless", application security, and networking. And you'll have learned by doing, because I didn't give you enough instructions to figure any of this out without going down some late-night rabbit holes. Most importantly, you will have demonstrated the number-one skill in a cloud engineer's toolbox: the ability to learn fast and google well." https://dev.to/forrestbrazeal/the-cloud-resume-challenge-503g

However, since I've had the chance to speak with many members of the community, and this very essence is what makes CRC so unique as compared with much existing educational content out there. I'm super excited about this new challenge—but I'm also very keen we preserve the essence of the cloud resume challenge which made it so successful in the first place.

This might explain why, I have a bias towards less detail and prescription in the learning, and leaving more up to the interpretation of the person completing the challenge. I'd hope that we end up with Kubernetes challenges completed that are unique, and different with interesting blog posts and stories, and not just folks who cookie-cut and copy/paste their way to completing the challenge (and shortcut their learning in the process). The CRC can be a more "painful" way to learn, but it's certainly a very effective way. That all being said, maybe I'm just being a purist and too dogmatic to this original guiding principle. I'm curious to see your PR and updates, and again, appreciate the reply! 🙏

nimeshmora commented 8 months ago

PR: https://github.com/cloudresumechallenge/projects/pull/21

I'm not entirely sure if it still meets your expectations. @loujaybee

loujaybee commented 8 months ago

Thanks again @nimeshmora ! I replied to the discussion on the other PR.

https://github.com/cloudresumechallenge/projects/pull/21#issuecomment-1963434937

Also, feel free to close this for now if it's more clean/clear/etc.

That said I don't know how many people will find / take a look at this repo 😝