What I learnt developing my own web project pt. 1

Andris Dénes
4 min readMay 22, 2020

--

This is part 1 of a 3 piece story.

With that out of the way, I think a little introduction is in order:

I’m your friendly neighbourhood developer. I work for a company doing some Python wizardry, but sometimes I’m sidelined/benched because no planning has been done by managemenet.

Being benched can be either good or bad, depending on your mindset.

For me it was bad at first, you know, bills to pay… But then I realized this:

Usually I make money by selling my time. Why not use unsold time, to create a product that may sell later?

At this point my mindset changed and I thought, being benched was great. Yes, the money issue was still there, but you can run out of money actively or passively. I decided to do it actively.

Now, the project is ongoing so I won’t share specifics, but my general observations.

Lesson 1: Do not undervalue planning

my little “drawing board” at miro

So I have had an idea in mind for a year or so… and I sarted with picking technologies that would fit the idea. Not much consideration done: mongo + express + react + node, aka: MERN stack.

I went on developing my back-end idea, and my server functions. This is where we get to (not) planning at all. I was very confused a lot of times like:

What exactly is this? Why do I need this? How do I get this? How do I serve this?

Had I done some proper planning, outlining the base idea of communications, I would not be in this situation.

Plan ahead, and also document that plan!

There are numerous free online whiteboards, UML editors, etc… use them.

Lesson 2: not everything shiny is gold

Photo: Kamran Jebreili, Associated Press

I have no idea if that is a way you should put it, but anyways, don’t get carried away.
There are huge amounts of open-source code out there, that could make your project a little bit more, a little bit better, etc…
You have to ask yourself: Does the implementation of your plan (lesson 1) require this? No? Don’t use it. You can always implement new functionality later.

Lesson 3: code quality

If it is only you coding, the most important should be that you understand your code. You can be flexible with practices.
Example:
Node and javascript were relatively new fields for me. I realise node developers mostly use camelCase naming. I’m not always super comfortable with that. So time and time again I used python_case where I felt like it would produce better readability.

At this point I would like to add that probably 7 out of 10 users will never ever care about the quality of code that runs in the background as long as they get what they need.

Lesson 4: React is fun and easy if you have foundation

React is amazing. The flow is great….once you know the basics.
Learning React may seem complex at first but there are a bunch of videos and texts, covering the material. Despite all this, I feel like the learning curve is huge. Two different React applications can achieve the same functionality in very different ways. The source code of one can be easily readable and understandable, while the other one can be a mess. This comes down to general front-end knowledge, HTML, CSS, JS.
I found that drafting a component tree in the planning phase results in a cleaner application.

React componenet tree
minimal React component tree

Yes, I started documenting my plans later on, so I have this for instance. And clearly I don’t know what the desktop view will look like.

Lesson 5: simplicity and scalability

These 2 words shall be of concern even when developing on your own. Depending on what you do, you should care about being able to add new functionality with ease, or update parts of your code as necessary.

Lesson 6: version control

Version control is a friend. If you work for a company or for yourself, version control can only help you. Also, if you are not working on anything private, you can just keep that repository open for recruiters or just people to see and check out your work. Things like GitHub are essentially where a developer’s portfolio lives.

Now that I have taken a break, I will get back to coding. I will probably expand this article, and start working on the next 2 parts once I’m done with the relevant coding, to tell about my experience.

Thank you for reading! I hope you can utilize my suggestions.

--

--