I have some experience in codding (programming). I have created CMS for myself (jquery, php, mysql). Also created invoicing program. Started codding ~ 5-6 years before. At beginning (~5-6 years) before Initial aim was to change profession and earn with codding.
But “problem” is that codding for me takes very, very long time. For example to get CMS to work, i needed ~ 300 hours. For invoicing program first stage also took ~ 300 hours, now improving the program and spent ~ 200 hours.
And one more “problem” is that at beginning all seems very simple (like, get data, process and record in mysql). But during codding arises many variations, conditions etc. and to process (handle) all these, i code, code, code and it seems never ending… And what i expected to do during 1 month, appears that need for example 4 months.
So my question. Is it objective (“normal”) to spend so much time to create what is necessary? For you the same situation? Or, i just accept that codding is not for me? Anyway for my job (income) i need to code something, so i need to continue to do it…
There is more to programming than coding. The design phase usually takes at least as long as the coding phase. It sounds as though you leapt straight into coding, combining the two stages, in which case as you have discovered you will find yourself re-coding parts you have already written as you discover conditions you didn’t think of in the first place.
I’m not sure there is a “normal”. It’s not usual to write your own CMS, so congratulations on doing that!
Depends on what ‘is necessary’ as to how long it would take.
It may be that you haven’t quite grasped the complexities of what your assignments are, and so you’re underestimating your time.
It may be that you spend an inordinate amount of time correcting typos, like ‘codding’. Which i assume relates to fish.
Thanks for answer. Yes, at beginning i only had approximate / general vision what i needed. And had certain aims (requirements) - what i need from the invoicing program. Latter requirements changed (became wider), so i changed and updated.
Something is a bit clearer.
Not sure if at beginning (before codding) i could write (imagine) step by step what i will do/need (suppose anyway during process i will need to change what i have imagined). Can not foresee everything… Seems it is quite important to foresee…
Thanks for answer.
Not it was not correcting typos. Much time took to think how to get necessary result (behavior). Also sometimes needed to try many, many variations, like code, test, change, try another option/solution, repeat…
Well, you’ve clearly identified your weaknesses and where you can improve, which is the first step.
Very few (if any) people code something perfectly the first time. The idea of testing, debugging, and recoding are certainly normal parts of the software development cycle. You should factor in things like needing to make corrections and testing into your outlook for time.
Never assume it’s going to work right the first time. (And be worried if it does!)
I think it normal to take a long time in coding. Because making your own CMS is a big thing. Congratulations on that.
Thanks. Seems question is answered. My “start” / “first time” lasts already ~ 5-6 years:) But no options, sometimes need to code something, so simply must continue and learn, and take into account that it will take long time …
A lot depends on how much you already know, how well you remember it and how much experience you have with it.
For example, if you discover you need to work with sockets you may need to review transfer protocols, study documentation and try a lot of test code before you get anything that “works”. You will likely discover that “works” is not good enough. So yes, learning something new could take a long time. But after you’ve written socket code several times and different ways, each new use should hopefully take a lot less time.
I agree that planning before you write any code is very important and will save time in the long run. Just the same, even with bug-free mature code don’t be surprised if there is scope creep. Chances are you could be forever “tweaking” the code.
You can benefit from thousands and perhaps even millions of hours of time spent by experts. There are hundreds and maybe thousands of books about system design. I do not know what to recommend though.
Something that the experts consider critical is requirements definitions. A requirements definition should avoid describing how to do something, only what it needs to do. If you were to be programming a game then the game rules explaining how to play the game might be a perfect requirements definition. I think that a requirements definition might be very close to the user documentation for the system.
As you say, you sometimes realize there is something more or something different that needs to be done so you must go back and re-do what you have done. If you read about system development methodologies then you will learn that the experts advise us to go all the way back to the requirements definition and update it with the new information and then go down the hierarchy of system specification and programming specification and coding and all that. The experts know from experience that mistakes in the requirements definition can be very costly later.
It seems to me to you it is not necessary make you own CMS. It will really take a lot of time, and to sense will be a little. Why not to use the existing CMS? Of course each of them is not ideal, but it is more rational way. Besides, with growth of number of projects which you start with use of your CMS you will spend more time for repair of bugs of CMS.
Writing your own CMS takes a long time. It might be a good learning exercise. However, I don’t think it is appropriate for most projects. Not to mention it isn’t a very good exercise these days. Monoliths are rapidly being replaced by cloud driven microservices with Angular/Vue/React front-ends.
I tried to use existing (Wordpress). At first it (and any other i found) was not suitable for me (i needed much more different options etc.). To include these options in existing code, i must understand the code. The code was not understandable for me and for me it would take many, many time to go through and understand. Almost the same time as if i create my own CMS. When i created my own, i more simply can remember and understand what i did and in case of necessity to modify and add some functionality. And hackers do not know my source code (unlike Wordpress and other popular CMS).
I’ve always found debugging tools like xdebug to be invaluable for understanding others code. I would have never been able to complete many tasks without it. Learning to read and modify others code is a critical skill to have.
I believe that Linux is safer because the source code is known.
Have ran any security scan testing tools? How do you know the code is more robust than WordPress. Large financial corps with very strict security requirements use Wordpress. So I don’t think this is a valid argument.
No, have not run In any case CMS ir ready and working for ~ 3-4 years and i do not plan to use other CMS
No doubt the original CMS specification has drastically changed due to the Internet is evolving rapidly on a daily basis. It is not easy to keep abreast of changes and “feature creep” arises or better/safer methods become available.
Software is never, ever finished and hopefully becomes more streamlined, faster, user interface more intuitive, etc…
…the additional feature list goes on forever
I would say the same applies to you as well. I am sure if we could review your code we would find many problems with it.
If you put your app on GitHub I am sure several of us would review it (A very valuable service at no charge). Don’t get caught up in the fallacy that your super secret code needs to be hidden for “security” or so no one “steals” it. There is nothing you have done that most us us here could not write on our own and probably better.
Take advantage of our hundreds of years of combined experience and put it on a repo for review. The worst that will happen is that you will learn something and make your app better.
You can always make the repo private and selectively provide access on an individual basis if your really concerned about the “world” seeing the code.
Yeah, security through obscurity almost never ends well.