DEV Community

Cover image for Do I overestimate my abilities?

Do I overestimate my abilities?

HakimRaissi on April 13, 2022

Hello, everyone. Today I decided to challenge myself and build an entire e-commerce web app with the MERN stack (which is the one I'm the most comf...
Collapse
 
tqbit profile image
tq-bit

You should spend some time writing out what your app looks like, what problems it solves and what not.

And watch the hell out of those tutorials if you must. You're not obliged to reinvent the wheel if there's a method or a library for what you want to do.

I usually fill out a template for my own - and customer - projects. It's never part of any official project docs, but it helps me to stay on track. And to document the crimes I've commited later. Perhaps it'll help you too.


Functional Specification for my projects:

  1. General infos
    1.1. Executive summary of the project
    1.2. Project team
    1.3. Stakeholders
    1.4. Technology Stack

  2. Customer requirements
    2.1. Goal of the customer - fill out the five Ws
    2.2. Business impact - how will the product add value to the customer's business?
    2.3. Detailed description - with user stories, customer journeys, flowcharts. etc
    2.3.1. Features
    2.3.2. Non-features

  3. Time frame
    3.1. Planning phase - from + to
    3.2. Development phase (including tests) - from + to
    3.3. Go-Live phase - from + to

Collapse
 
hakimraissi profile image
HakimRaissi

Thank you for your help, All i did until now is to write all the endpoint i need to code on my notebook and did some data modeling for the users and the products. But i think i'll follow your method too.

Collapse
 
ben profile image
Ben Halpern

I will use as few libraries as possible and bare vanilla CSS (yes, you read it right).

You know what project started out with basically the same premise? This website and what became the Forem codebase.

I was a little further along in my career, and my reasonings were a little different. I found myself getting a little overwhelmed by dependencies and really wanted to focus on fewer of them. So for quite some time this codebase was vanilla CSS and Vanilla JS.

Things eventually evolved, but it was a tremendous learning experience and exercise in focus and care.

Collapse
 
hakimraissi profile image
HakimRaissi

That's kind of motivating me. Thanks

Collapse
 
michlbrmly profile image
Michael Bromley

Hi!
This is extremely ambitious! I've been building an e-commerce framework on a similar stack (vendure.io) and I've been at it for almost 4 years pretty much full-time, and I've got ~15 years dev experience behind me.

You probably don't need to handle the level of complexity that Vendure deals with for a portfolio project - multiple language support, flexible tax handling, shipping & payment integrations etc. But even for what you describe I'd say that is months and months of work.

On the positive side, you will certainly learn a lot. E-commerce apps contain all sorts of challenging details to get right, from the data modelling & workflow design through to the APIs you expose & the design & UX of the admin dashboards.

But if your main goal is to get hired, maybe it is worth scaling back the scope to more of a minimal set of requirements than a fully-fledged platform.

In any case, good luck!

Collapse
 
hakimraissi profile image
HakimRaissi

Thanks for your answer. Do you have any tips or recommendations on how someone without degree can convince companies that he is a "capable" developer? Cause until now I always got rejected with project like todolist and password generator on my github lol

Collapse
 
michlbrmly profile image
Michael Bromley

In my experience (I'm based in Austria), most good companies don't care about a degree. When I was a team lead I did plenty of interviews and hired a few people, and formal education was never of interest to me. I myself have no higher education.

Things that I looked out for were past experience (difficult if you are starting out), and any prior work (even side projects) that I could see to roughly gauge the applicant's ability. For that purpose, having a GitHub profile with some non-trivial projects was really useful. So maybe a password generator may be considered a bit trivial, but there is plenty of middle-ground between that and a full-blown ecommerce platform!

Thread Thread
 
hakimraissi profile image
HakimRaissi • Edited

In my country which is Algeria, companies are kinda "old school" if you don't have a degree you don't even have the chance to get an interview or skill test.
I guess i'll search for easier projects to do while building my ecommerce web app on the side

Anyway thanks for your answer :)

Collapse
 
guitarino profile image
Kirill Shestakov

It took me ~1.5 months to build my solo app for encrypted note-taking. It was frontend only, I was quite experienced and used a bunch of good libraries like prosemirror, preact, and all the webpack setup, etc.

Since you're building both frontend and backend, and you want it to be responsive and (I assume) interactive, don't expect this to be a cakewalk, even if you watch tutorials and use a plenty of libraries. I would also recommend you to focus on code quality and improving your skills rather than rushing and sacrificing quality, otherwise you won't learn a whole lot in terms of excellent programming skills.

So it is doable but it sounds like a huge project (imo, at least 6 full person months for a beta version) and a big opportunity to learn (so I wouldn't restrict tutorials and libraries). I think you would benefit a bit more from making multiple smaller projects that may span similar tech. Whatever you decide, good luck.

Collapse
 
hakimraissi profile image
HakimRaissi

I already did smaller projects like a mern boilerplate with authentication or landing pages for products or shops, but I still can't get a job. I don't want to sacrifice code quality. Don't worry, I have the bad habit of deleting all my messy code, even if it works, and rewriting it in a clean way, even if it takes me hours.

Well, I'm not sure how much time it's going to take, but I'll give it a shot anyway while doing smaller projects on the side.

Thanks for your comment.

Collapse
 
ankush981 profile image
Ankush Thakur

I don't think going vanilla CSS would be considered an overestimation of your abilities. In the end, the effort will be somewhat offset by the time you'd take to learn another library in depth, so you'll find you're not moving even that slowly. Don't think too much and focus on working regularly on your project. All the best! :-)

Collapse
 
hakimraissi profile image
HakimRaissi

Thank you for the support

Collapse
 
svgatorapp profile image
SVGator

Seems like an achievable challenge, but don't see why you would choose this constraint "Does it seem doable considering i will not be watching any tutorial" πŸ€”
Wishing you the best of luck, either way!

Collapse
 
hakimraissi profile image
HakimRaissi

Well its more of a bad habit of mine. I just can follow long tutorial, I become boring after 20 minutes plus learning the hardway is more rewarding for me

Collapse
 
hakimraissi profile image
HakimRaissi

I already made this make once lol. I wanted to create a a blog app but i ended deleting the whole repository out of frustration.
Anyway than you for your advices and support <3

Collapse
 
polterguy profile image
Thomas Hansen • Edited

3 years ago I started creating an open source CRUD automation tool in my spare time. After having worked on it for 2 years, it started becoming "too good to be ignored", and last June I secured funding for it. Today we're 4 full time employees in a real company, and the future seems so bright we're all wearing shades now.

Go for it I'd say :)

However, this is going to sound a bit counterintuitive though, which is that if you want it to become a "real product" somewhere down the line, my belief is that you'll have to create it as open source. It gives you "leverage" few existing players can compete with, resulting in a "blue ocean", where you can compete on your own terms ...

In regards to using vanilla JavaScript in the thing, I'd argue that's madness. Use the best available tools for whatever job is at hand ...

Collapse
 
andrewbaisden profile image
Andrew Baisden

It's possible just break it down into smaller chunks. So approach it like a real project and break it down into sections that you are going to work on. Then eventually it will all come together.