How to handle frameworks and ready-made technologies?

Asked

Viewed 234 times

6

I’ve been having a question for a while and I think it may even be a common question. I don’t quite know how to put the question, but I’ll try. When I started programming I dealt with languages like PHP, C, C++. What I used most in practice was PHP. Basically I had to develop all, codes for authentication/authorization and security, codes for interaction with Mysql, etc.

After 3 years working with PHP I learned C# and started working with the . NET framework since then. I really like the features of the framework and the language too, which is "more" object-oriented than PHP, besides being strongly typed and etc.

The problem is that all this time I have a very big doubt. As there is a whole framework available, many things are already ready. So, if I need databases, I already have EF or Nhibernate, if I need to use REST services I already have Webapi, if I need authentication/authorization in web applications I already have ASP.NET Identity.

And when I’m going to read about using these technologies, I basically find tutorials and articles saying, "Do it like this," and then it’s always the way things work and that’s it. It all leaves a question like, "having so much ready thing and everything already explained exactly as use, what I have to program actually?"

And this question is very strange, because after all, if I am working on the project I should know what I need to program. Only with so much available I usually get lost and when I see I’m simply replicating codes I’ve read about applying certain technologies.

I know there is a domain model to be developed. But is that all? When we deal with frameworks like . Do we only develop the domain model and integrate it into technology the way it’s applied in tutorials and so on? How do you deal with this kind of situation?

  • Just a caveat C# is Orientado a Objeto (the mais got weird)

  • 4

    The fact that it is difficult to ask may indicate that it is difficult to answer. At least it must be difficult to answer without giving an opinion.

  • @Fccdias, yeah, I figured this one would get weird. But what I meant is that PHP has object-oriented elements, but it’s not totally object-oriented like C#.

  • @user1620696, I agree with this last statement, because, I program in C# and PHP, and I have the same vision!

2 answers

8


I’ve always wondered the same thing throughout my life (I’ve been through Clipper, VB, Assembly, C, C++, Java, C#, HTML and Javascript).

In the past I developed everything by hand, for several reasons, mainly:

  • There was no Internet
  • Everything I did, I did out of curiosity and taste
  • I wanted to learn everything, and since I was not in a company, time was no problem

After I joined the corporate world, I could see that I was no longer in the same scenario as before.

When a system was sold, he had to be delivered on time. If a new component was needed for this system, the decision whether or not to buy a ready one (instead of making one at home "from scratch") was based basically on time and cost. The factor "we are able to do, just give us a little time" didn’t weigh so much.

Like everything else in life, that decision has two sides. Buying/downloading a component/framework and leaving using some tutorial/manual is very practical, and greatly speeds the development process. However, not knowing what’s under the hood is sometimes very dangerous.

For example, if the component malfunctions, despite all the instructions being followed to the letter, what is to be done? You don’t always have access to the source code, and it may be that no one has quick contact with the development team, and may never have.

Of course this is a weighted risk when making the decision, but there is one more detail that, over the years, I have seen consuming hours of development looking for solutions to problems arising from the lack of knowledge about the functioning of a ready component.

A case not so recent, they decided to use a grid component in C#/ASP.Net to display and paginate records from a database. Once the grid was deployed, access to the page became extremely slow. After some work and research, it was discovered that the grid actually carried all the records, and stored them in the ViewState page to no longer need to access the bank, and be able to page everything correctly.

This is not wrong depending on the case, but in that particular scenario, the query returned thousands of records, carrying the page in excess!

That is, it would never be possible to solve the problem of that component, without having the knowledge of the technology on which it was assembled.

I do not believe there is a final answer to this question. It depends very much on the case, and on what objective it is intended to achieve.

Today, years after I started programming, I see how healthy all those hours ago the computer was "reinventing the wheel". I confess over these years, my "final production" was very small compared to the amount of hours I worked, but in this case the gain was not a finished product, but the knowledge itself.

I became a teacher, and I try to make this clear during the classes, since almost all my students already work in the market: doing things from scratch is great if you want to learn a technology, or want to exercise your logic, the same way I did for years (and I still do). However, there are times when time is crucial, and it is at these times that we use frameworks and ready-made components.

But even when using a component/framework ready, it is always good to know that there is no magic, everything it does, we can do (with a few exceptions), and so we should not have any kind of blind devotion for the component, at least a minimum of the technology on which the component works.

  • 1

    I tried to be neutral, although part of the answer expressed a little of my opinion.

  • 1

    I read your answer I believe it is experience and not opinion, congratulations on your reply... I liked it very much

  • 1

    Thanks, @Fccdias! I also share your answer!

3

The great importance of knowing what you’re doing ?

I understand that there are what they know, and there are those that use framework. As reported in the framework comes ready is to use that way, is a way to save time, standardize software, etc.

The market requires software made in less time, categorized and that if one of the team leaves have another that will replace it with very similar knowledge.

PHP, Java, . Net Framework (C#, VB.Net) and etc., all of these today have in the market great framework that helps us to improve our coding and solve problems that would take some time. Of course their implementation you as a developer and knowledgeable can replicate or improve. Example: i created on my MVC ASP.NET Web Systems, my custom user control making Heranças/Implementação in the base classes of the same and putting internally my logic, and many friends of architecture . NET do this.

The Key Point is that you know how to program in a given language and/or development architecture?

I know people who know Laravel (which is an excellent framework for PHP), and are so used to it that when it gives you an error you can not solve by the lack of knowledge of the PHP language, this point of the question is that limits many developers to know a framework and not know the language.

What is Important?

It is important to learn the language and all its ramifications, and then use a framework to speed up its development, so that auxiliary technologies are not stuck, but can solve all problems with language knowledge.

I have a phrase: And I’ll never know everything, but I’ll always study to know everything, hardly you know everything, but, I live studying to absorb more and more, C# for example is always evolving for those who started 1.0 and today has 4.5.1 imagine how much I have studied and how I come across novelties.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.