Live data from Hacker News

“Don’t Reinvent the Wheel, Use a Framework” They All Say

mogosselin.com

21–30 of 94 posts

Re: “Don’t Reinvent the Wheel, Use a Framework” They All Say

#21

Who cares which language, library, framework, tool etc. are you using? Just get the job done! There is no "ultimate" solution. Software developers tend to attach too much importance to tech stack - in most cases it just doesn't matter, as long as it works.

When working on big applications (> 1 million), this wouldn't work. You need to think about it and you need to know how stuff works.

Re: “Don’t Reinvent the Wheel, Use a Framework” They All Say

#22
post #6

Framework is a development platform which generally contains tools, libraries and architectures etc. So you can't say Wordpress is a development platform. Wordpress is just a CMS, nothing more. > The problem is to always tell beginners (or let them think this is a good idea) to start with a framework / cms because “you shouldn’t reinvent the wheel”. Learning a CMS and Framework are not same. Learning CMS is user stuf…

Well, the goal of the post was to also demonstrate that frameworks, libraries and web development platforms are often called "Frameworks", which they are not.

Re: “Don’t Reinvent the Wheel, Use a Framework” They All Say

#24
I disagree with this article almost completely.

Frameworks are great for getting stuff done, which is exactly why I do recommend them to beginners. Beginners are learning code/a new language for a reason. Usually that reason is to get stuff done. They don't need to know how the insides of these frameworks work to do that.

As these beginners progress, as they start getting curious or need, for example, to know why getting your ORM to count the records in the database is faster than getting your ORM to pull all the records and counting the number of records in the array, this is when these beginners need to think about re-inventing the wheel.

I'm a firm believer in 'you should re-invent the wheel once and once only', but never ever ever use the wheel you just built. That way you should understand what a framework or any lower layer of abstraction is doing for you. Whomever wrote the framework will also most likely have a better solution that has tested more edge cases than you did, you have less code to maintain (yay less teechnical debt!) which is why you never use your own wheel. Re-invent the wheel so you have a better understanding but that's it.

If we keep expecting beginners to understand every level of abstraction that we have created for them they'd be writing a web-server in assembler, not solving any of the problems they have, become disinterested and giving up or never ever ever shipping any of their code ever.

Re: “Don’t Reinvent the Wheel, Use a Framework” They All Say

#25
What I think is missing from most of these discussions is an acknowledgement that people, in general (including developers), learn differently.

In this context : you're either comfortable not knowing, or you're not.

What I mean by this : some of us are comfortable not knowing how X system works (temporarily, of course). Some of us can start building things with a web framework and gradually gain understanding from the top down. This is OK.

However, others (and I include myself in this camp), are completionists. Abstraction is an annoyance, and not knowing is like an itch that needs to be scratched. For such people, having significant gaps in understanding a system model is a real problem. Super duper high levels of abstraction is a real problem.

Different people, different learning styles. For any beginner in any field, it's important to acknowledge how you learn best and then pick a learning strategy that's compatible.

Re: “Don’t Reinvent the Wheel, Use a Framework” They All Say

#26

Who cares which language, library, framework, tool etc. are you using? Just get the job done! There is no "ultimate" solution. Software developers tend to attach too much importance to tech stack - in most cases it just doesn't matter, as long as it works.

When working on big applications (> 1 million), this wouldn't work. You need to think about it and you need to know how stuff works.

But then again, a big application has to start off as a small application. Once you get to the large state, you are simply just swapping out bad components for good.

Re: “Don’t Reinvent the Wheel, Use a Framework” They All Say

#27

I disagree with this article almost completely. Frameworks are great for getting stuff done, which is exactly why I do recommend them to beginners. Beginners are learning code/a new language for a reason. Usually that reason is to get stuff done. They don't need to know how the insides of these frameworks work to do that. As these beginners progress, as they start getting curious or need, for example, to know why get…

[deleted]

Re: “Don’t Reinvent the Wheel, Use a Framework” They All Say

#28
I look at this in 2 ways. One is "Learning how something really works and understanding the core" and the other is "Creating production ready applications with a tested abstract magical tool". Frameworks are great to create production ready apps in no time even for a novice. But on the other hand, they have too much magic at times. Take for example, this code in Python/Django:

    user = User.objects.create_user('name', 'email', 'pwd')
    user.save()
In 2 lines of magical code, we are able to create a user object and make sure we are able to save it in the database without worrying about a lot of things. This is great for rapid app building. But what is really happening behind the scenes ? Do you really understand the flow for user.save(). How would you do it without this abstraction ? If you don't understand the core, you will never be able to become a great developer.

So my advice overall is to learn the core by writing stuff from scratch as much as possible and really understand how things work. Then, pick a framework and do the same. So even though you will write crappy bad quality code, you don't need to release that in production. Win-Win here.

Re: “Don’t Reinvent the Wheel, Use a Framework” They All Say

#29
Why is web development is full to bursting with frameworks? It is not because web applications are inherently flawed. I have been doing web dev for over a dozen years and understand the basics (semantic HTML/CSS, vanilla JavaScript and Ajax, the HTTP protocol and SQL) and know first hand that these are solid, clear and logical tools for building network applications. They don't need Bootstrap, Knockout, Rails or ORMs. In fact, these frameworks are demonstrable bad due to:

1. They remove functionality (developmental power) from their underlying technologies in exchange for making a few types of features slightly easier. 2. Their abstractions are leaky - they cannot be used to their fullest potential without also understanding their underlying technologies. 3. They add overhead to a project both in optimal performance and technical debt.

So why does everyone flock to frameworks? My best guess is because of a failure to have resources available to teach web development beginners the basic technologies and how they work together to create simple, clear, powerful network applications.

Re: “Don’t Reinvent the Wheel, Use a Framework” They All Say

#30
post #25

What I think is missing from most of these discussions is an acknowledgement that people, in general (including developers), learn differently . In this context : you're either comfortable not knowing, or you're not. What I mean by this : some of us are comfortable not knowing how X system works (temporarily, of course). Some of us can start building things with a web framework and gradually gain understanding from t…

This is a very important point.

I found it very true that different people learn in different way from my effort on sharing the details of programming and math with fellow co-worker and interns too.

Try make 30 people grab the same details (programming/details) and you will learn a lot about what you teach about and also on how people learn.

When i understand that, i ultimately understand the reason why there is so much debate and on going discussion about some particular details: much of our confusion were caused by lost of context in communication.

[edit: typo]

Post reply on HN