1

I have been in web developement for 6 years. I am facing one big problem and i want to know how can i get rid of it.

There are many personal projects like web application which i want o build.

As an example 4 years ago

  1. I was working in joomla and i started my web application also in joomla on shared hoisting

  2. Then i chnaged my job where i need to build site in Symfony. After few months i thought symfony is better and then it started by application to be done in symfony.

  3. I was in midway and then my company got project in python django on own server. After working on django i thought that to be cool idea because after working on django for few months i forgot about symfony stuff. i got new VPS and started web application there.

  4. Then i chnaged my job where there were big teams and proper procedure for django applications . what i did was very bad as compared to new companies. so thought to redo that way

5.At that time i reached 70% doing that way. Then my contract finished and i joined new company where there were proper coding standards, design patterns and TDD. so i again started it from scratch to be like that.

  1. Now i joined new company where everyone is using angular and REST and again i am thinking to redo in REST way.

I am totally confused what to do. There is endless loop there. I find that applying newly learn techniques greatly help in learning those things but my personal project is never going to complete this way.

The otehr thing is if we know that good of way of writing code then its very hard to keep a maintain the old code and adding new features loks nighmare when you know what u r doing is not maintainable.

I want to know what to do.

  1. Suppose if i start one project then should i finish it that way even though i did find new things or i need to refactor.

marked as duplicate by gnat, Neil, user40980, JeffO, Dan Pichelman Feb 13 '15 at 16:53

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

  • 2
    Not an answer, but just a brief comment: what you are doing here is not refactoring. Refactoring is a technique for making small changes to improve design incrementally, it does not involve throwing code out and starting again. – Jules Feb 13 '15 at 8:19
  • What is the goal of your personal projects? Implementing something that you know and are comfortable with is a good way of learning a new language or framework. In that way your reimplementation of your personal projects helps you get proficient with new technologies. – Pieter B Feb 13 '15 at 8:37
  • REST and TDD are just marketing buzz-words. You don't need them for quality modern development. – Den Feb 13 '15 at 9:16
  • They are techniques, not buzzwords. REST is a valid solution to some of the problems faced in software development today. And as far as TDD goes, you could not be more wrong. There are some incarnations of TDD that go way out of the realm of anything pratical, but the principles are very, very valid. – JDT Feb 13 '15 at 10:31
2

It's not you. It is something that a lot of developers struggle with and it is something you learn to live with as a developer. As soon as your code is typed it will probably be outdated.

Here's a few tips on how to deal with that...

Building something in a new framework/library/language is the best way to learn

A lot of developers have projects 'on the side', either serious projects that are done in their spare time and published or throwaways that just serve to learn a particular framework or library or language. I can't count the times I've started a very simple application just to get the feel for a specific language or framework. If you want to get up to speed with some language or framework, build an application that you plan to throw away first to get a feel for it before committing to it. There is nothing wrong with rebuilding the same application over and over if you want to learn a new thing. Ever wondered why there are so many 'lets build a blogging application' tutorials out there for frameworks?

Picking a framework/library/language means picking and sticking with its paradigms

If you pick an OO language, you know you will need to develop using OO techniques. If you pick Joomla, you know you will need to follow the development guidelines for Joomla. There will always be new techniques and new frameworks, but unless there is a VERY good reason you should not constantly rework your application in these new languages or frameworks. You simply can't win because there will always be new things going on. 'Good enough' beats 'perfect' in software development any day as 'good enough' software is out there being used (and potentially making money) and 'perfect' software is constantly being reworked but never used.

There are no bad frameworks/libraries/languages

Every framework has its advantages and disadvantages. In that sense there are no bad frameworks, only frameworks that are not to your liking. I'm a big fan of TDD/BDD/DDD and I much prefer the tools and the structure that Symfony gives me which allows me to write the kind of code I like the way I like it. Your tastes will grow and evolve and there is nothing wrong with rewriting an old application to a new framework, but only if you can afford to stop developing new features for a while.

Ultimately, it's up to you

Personally, I have a number of projects where, if I were to start over, I would probably pick a different framework. Even things that are only two years old sometimes. But they are actively being used, there are no problems that are related to the framework or language I picked, I can still add features pretty quickly and I've got enough other things to do so it's not something I think about.

1

Yes, and its a hindrance to the industry. This continual churn of technologies only serves to help people who create them and those who sell training courses. So Microsoft is happy as it gets to sell new tools every few years and we all have to buy them because we've been indoctrinated to "stay current".

Whilst some change is necessary, IT seems to be the only industry where its so continual.

What you can do to mitigate this is to learn fundamental skills. Understand how computers, networks and databases work and then treat all implementations, whether it be using Sympony, PHP, Joomla or javascript or whatever as just different wrappers to the same underlying things. Forget technology as a thing in itself, and focus on using these different technologies as just another tool to produce products. IMHO once you start to concentrate on what you're building and not the bricks you're using to build then you get a lot more satisfaction from the job.

This attitude also helps you build better products. Once you know the tools don't really matter you start choosing the right one for each job. A lot of people who learn some technology today think that's the only one to use regardless of the task in hand.

  • I like this post, except for the opening rant. – MetaFight Feb 13 '15 at 10:18
  • @MetaFight but that's the best bit! :-) – gbjbaanb Feb 13 '15 at 10:19
  • meh. I dislike the churn of tech in the web world as well... though I consider it a necessary evil. It's a kind of rite of passage for a (relatively) young technology. So there's no point in getting ranty about it. – MetaFight Feb 13 '15 at 10:27
  • You could remove the cynical Microsoft bit and simply challenge the idea of "staying current" just for the sake of staying current. – MetaFight Feb 13 '15 at 10:29
  • I agree some change is necessary, but a IT takes it to extremes, and some dev shops take it even further to crazy levels (I know a couple of shops that rely on revenue from their legacy product only as replacements are never shipped because the tech used to develop it simply kept on changing). As for Microsoft, I wasn't picking them out as worse than the others just that they are the most popular dev tool supplier. – gbjbaanb Feb 13 '15 at 10:33

Not the answer you're looking for? Browse other questions tagged or ask your own question.