<p>Here is a simple kata:</p>
<ul>
<li>Write a program that does nothing</li>
<li>Test</li>
<li>Extend program to accepts a web-request</li>
<li>Test</li>
<li>Extend program to return a redirect to a specific page</li>
<li>Test</li>
<li>Extend program to return a redirect to one of two pages</li>
<li>Test</li>
<li>Extend program to return a redirect to one of many pages (probably want to use a key:value store (hash map).</li>
<li>Test</li>
</ul>
<p>You will probably break it up into smaller steps, with more testing.</p>
<ul>
<li>The next day do it again, this time write unit tests.</li>
<li>The next day do it again, this time write the unit test before you write the code (test driven). Write one test, run it, fail, fix code under test, test, pass, repeat.</li>
</ul>
<p>Next, do it a different way: if you used a HTTP library, then do it without (just use the socket library).</p>
<p>Repeat this kata at least 5 times. On separate days. Then choose a new kata. But this time (and all future times) do test driven from the start.</p>

CC BY-SA 4.0
2022-10-08T13:33:30.950Z
2022-10-08T13:33:30.950Z
ctrl-alt-delor
<p>I think you shouldn't be reaching for a tutorial for this project at all. Tutorials are great for learning a new language, tool or approach, but they aren't that relevant when you want to build a project in a stack you're already familiar with.</p>
<p>So then I would recommend you to go through two phases here:</p>
<ol>
<li><p>If you don't feel comfortable with the stack yet, or with full stack development in general, keep doing tutorials / courses, without worrying about what the example project is. The projects are there just as examples of how to apply the tool/technique.</p>
</li>
<li><p>Once you feel you're ready to tackle a particular project that you're personally interested in, such as the URL shortener, put the tutorials aside, and start from a blank project. Follow @ggorlen's suggestion and try to break the problem apart and tackle each part/component with the tools you're now familiar with.</p>
</li>
</ol>
<p>You can refer back in phase 2 to the tutorials you've done in phase 1, but try to avoid looking for new tutorials specific to the problem at hand, since that could rob you of the learning experience. I would suggest only looking at tutorials, or Stack Overflow, if you feel you're really stuck with a particular technical issue, and even then, I would advise that you try to look for something that has nothing to do with the particular project.</p>
<p>And the most important thing - have fun :)</p>

CC BY-SA 4.0
2022-09-21T17:34:32.987Z
2022-09-22T13:46:25.100Z
2022-09-22T13:46:25.100Z
yoniLavi
<p>I'm a CS graduate from poor and underdeveloped country so my education might not be upto the standard so pardon me for that.</p>
<p>I'm planning to learn full stack web development for job. Be it MEAN, MERN, python django sqlite etc</p>
<p>I want a &quot;URL shortener&quot;, it's built already. That too in form of tutorials. There are codes around the internet telling how to do each part of this system. Most actually only write codes in their tutorials and not make tutorials independent of code.</p>
<p>How do I build something without looking at other's code? For eg: I want to build a &quot;URL shortner&quot;, where can I learn about &quot;URL Shortener&quot; system independent of code.</p>
<p>&quot;URL Shortner&quot; is just an example. The software could be anything.</p>

CC BY-SA 4.0
2022-09-18T01:13:13.717Z
What components would you imagine go into the URL shortener? How is it similar to other apps you've made? How can you use the general-purpose tools you are familiar with to solve an unknown problem?
ggorlen
<self-learning><programming><active-learning>
How to actually learn while building dummy applications that have already been built?
# How to actually learn while building dummy applications that have already been built?

(Asked by: username_0 on 2022-09-17)

I'm a CS graduate from poor and underdeveloped country so my education might not be upto the standard so pardon me for that.

I'm planning to learn full stack web development for job. Be it MEAN, MERN, python django sqlite etc

I want a "URL shortener", it's built already. That too in form of tutorials. There are codes around the internet telling how to do each part of this system. Most actually only write codes in their tutorials and not make tutorials independent of code.

How do I build something without looking at other's code? For eg: I want to build a "URL shortner", where can I learn about "URL Shortener" system independent of code.

"URL Shortner" is just an example. The software could be anything.

**Tags:** self-learning, programming, active-learning

> **Comments:**
> **username_1**: What components would you imagine go into the URL shortener? How is it similar to other apps you've made? How can you use the general-purpose tools you are familiar with to solve an unknown problem?  

---

## 2 answers

### Answer by username_3 on 2022-09-21. Score: 6 | Accepted answer

I think you shouldn't be reaching for a tutorial for this project at all. Tutorials are great for learning a new language, tool or approach, but they aren't that relevant when you want to build a project in a stack you're already familiar with.

So then I would recommend you to go through two phases here:

1. If you don't feel comfortable with the stack yet, or with full stack development in general, keep doing tutorials / courses, without worrying about what the example project is. The projects are there just as examples of how to apply the tool/technique.
2. Once you feel you're ready to tackle a particular project that you're personally interested in, such as the URL shortener, put the tutorials aside, and start from a blank project. Follow @username_1's suggestion and try to break the problem apart and tackle each part/component with the tools you're now familiar with.

You can refer back in phase 2 to the tutorials you've done in phase 1, but try to avoid looking for new tutorials specific to the problem at hand, since that could rob you of the learning experience. I would suggest only looking at tutorials, or Stack Overflow, if you feel you're really stuck with a particular technical issue, and even then, I would advise that you try to look for something that has nothing to do with the particular project.

And the most important thing - have fun :)


---

### Answer by username_2 on 2022-10-08. Score: 2

Here is a simple kata:

* Write a program that does nothing
* Test
* Extend program to accepts a web-request
* Test
* Extend program to return a redirect to a specific page
* Test
* Extend program to return a redirect to one of two pages
* Test
* Extend program to return a redirect to one of many pages (probably want to use a key:value store (hash map).
* Test

You will probably break it up into smaller steps, with more testing.

* The next day do it again, this time write unit tests.
* The next day do it again, this time write the unit test before you write the code (test driven). Write one test, run it, fail, fix code under test, test, pass, repeat.

Next, do it a different way: if you used a HTTP library, then do it without (just use the socket library).

Repeat this kata at least 5 times. On separate days. Then choose a new kata. But this time (and all future times) do test driven from the start.


---

