DEV Community

Back to Square One

Joe Zack on January 19, 2019

I recently published a website that was built with technologies I was unfamiliar with. I accomplished my goals for the side-project and I learned...
Collapse
 
theinfradev profile image
TheInfraDev • Edited

Thanks for this JZ. I have been a bit behind on my blogging recently, mainly due to time constraints, but I have resisted just cutting the quality to satisfy my arbitrary time constraint and to 'finish the thing'. This kind of reframes the struggle in a way that makes me feel less guilty, while also making me think, maybe it is too high a bar. :)

Collapse
 
lepinekong profile image
lepinekong • Edited

The advantage of side projets is that you can take the time and make errors because experiments lead inevitably to errors. Unfortunately some people do that on real strategic business projects that's why we have so many technical debts in real world so these guys should rather practice on side projects that's what sportmen do: they do not practive only on championship they do their training mostly elsewhere ;)

Collapse
 
thejoezack profile image
Joe Zack

Definitely! I think forcing myself to complete the project was a good idea. The hard-earned experience you gain finishing up the last few things at the end of a project is much different than the fun/fast experience you get in the beginning.

Collapse
 
dallgoot profile image
dallgoot

the question about "quality" is "how do YOU define it ?"
Are you talking about :

  • making a method in 3 lines instead of 20 ?
  • the separation in well-thought modules?
  • some principles : SOLID, DRY, KISS, etc ?
  • best practices for that language ? are they universall accepted ?

I used to think about all these topics at once leading to constant refactoring and failing at self-imposed deadlines.
Now i think as the deadline (for side project) as the estimated point of "robust code".
How to know when a code is robust ? with units tests.
So now refactoring is only made to pass the tests, assuring that the code has the more important quality : the lesser bugs possible.
Then with free time and motivation i can, later, try to optimize and the tests make it sure that i don't blow everything up.
Actually i blow things up often, but i'm at least aware of it and can fix it :)
So for side project deadline is not really set.
why ? because theres a billions side project made to learn a technology, rarely they are useful for anything else.
I, personnally, choose to take more time, and build something that - i think - can be of use.

I got plenty of technology/languages tests, i don't call them "projects" though.
To me a project is an idea, something useful that you can make in that new tech or that other one you are already expert at.
Just another point of view ;)

Collapse
 
thejoezack profile image
Joe Zack

I appreciate it!

My abstractions were weak, and I decided to tack things on rather than refactoring to accommodate. Also, 0% test coverage.

I definitely focused more on my vision for the project instead of the technologies but now I'm going back and rolling up my sleeves to learn more about Gatsby, React, and GraphQL.

Collapse
 
askeroff profile image
Javid Asgarov

I have mainly one side-project, and I started doing it to learn the tech at that time to get a job. And I think it's contributed to getting hired, cause they were looking it over a bit when interviewing me.

But I'm not sure what done is for that project, I use it mainly to do some coding, I'm the only user of it, and I still mention it on the portfolio, and also it is a playground to learn to code some things.

So, I don't know what my philosophy would be, maybe get it working and then do small improvements each time. I also keep track of things, I would like to add, things to refactor, things to explore or learn within that side project.

That's like what I can say based on my little experience with side projects.

Collapse
 
thejoezack profile image
Joe Zack

Sounds like we agree on philosophy!

I feel like every side-project makes me stronger, I just want to be careful to balance my rushed experimentation with focus on best practices. :)