As a newbie to programming today, one might say you came so late to the industry that there’s just so much…probably too much catching up for you to do. In your journey to become a great programmer, these are some of the technologies you may find very challenging to learn, why they are challenging, and steps to take to make them easier.
Of course, the language is not difficult in itself. Enlarging your programming world view to accept that functions are variables and objects are arrays, is what is difficult most of the time.
For newbies, this language is difficult because:
1. As a first language, it seems really boring. All you can do is output dry text to a bland white page. You cant create or read files, create the next facebook (isn’t that why you became a programmer?) nor can you write a desktop or android application-not as a beginner anyway The language just has no spine till its mixed with HTML and css.
2. The language’s error reporting is just weak. When something breaks, you can’t tell what happened. The script just dies on you. There is firebug of course and google chrome console…but these are going to require another tutorial, right?
3. Things work unexpectedly a lot of times: e.g. sorting (1,2,14,51,8) wont yield the desired result.
4. You are a beginner and the entire concept of thinking logically is probably still alien to you.
2. CodeIgniter Framework:
Php is very cool for beginners. There is so much you can do with so very few lines of code that one often begins to think that one has arrived after learning this soft language. However, once you progress to learning a PHP framework, things usually go south. Any php framework would have sufficed here. Codeigniter is just chosen because it is popular in Nigeria. This is why you will find this technology difficult:
1. There is suddenly a lot of talk about architecture…something you probably don’t give a hoot about whose only benefit seems to be making code unnecessarily large.
2. You have to relearn new ways of doing things …even quering the database/validating forms. This sucks, because, it feels like you are learning an entirely new language and yet; at the end, you can’t brag and say “I know two langauges”; rather your bragging rights are restricted still to that one language; PHP.
3. The loudness of php error reporting disappears. When codeigniter script has an error, it shows you a blank page. You then have to tear your hair out for 5 minutes, search the net for 15 minutes, and find an article that says you have to configure error reporting in some file somewhere. I never had to configure jack for this to work!
3. .Java Spring MVC:
This technology is so complex that it’s a framework which has its own framework (Spring boot). There is just too much to wrap your head around. It is hell even for the most confident programmers.
This is why this technology is a hard nut to crack:
1. You have to download and reference external jars for just about everything. You can’t query your database without downloading jdbc jar. You can’t validate without javax validation jar. Now, the biggest problem here is that these external jars are usually updated differently and once you import a jar file that is incompatible with other already imported jar files (and this happens all the time), congrats! You’ve earned yourself a week long bug!
2. You have to learn sub-technologies like Maven and Gradle and xml: Most of us have probably had a brush with these in android programming but for newbies, things go wrong here a lot.
3. Wrapping your head around the monster called dependency injection: how the hell do you create an object in xml and it becomes available to another object? What variables names must match the xml attributes? How many days will it take to get out of the plethora of bugs you are about to enter?
4. There are just too many layers to everything. Creating a simple database entity requires over 5 objects and interfaces. (ObjectDAOInterface, ObjectDAOInterfaceImpl, Object, ObjectDAOServiceInterface, ObjectDAOServiceIMpl). In php… 5 lines of code would have been too many, right?