My Andela-21 Experience

Andela-21 ended today, after a 3-week rigorous learning experience. I will describe the whole process as ‘learning programming the hard way’. I have come to realise that at times if you are not forced to learn, you wouldn’t learn new things. Andela-21 was fun, and at the same time a very tedious one. I have learnt a lot of technologies through this program, which would have been quite impossible for me to learn outside Andela, even in months. The fact that i couldn’t make it into the fellowship after my 2-week bootcamp brought me to Andela-21, and i think it would serve as an opportunity for me to get better as a programmer before getting into the fellowship.

Immediately after my 3-week bootcamp, as i couldn’t make it in, i was invited for andela-21 where we were required to build an API(Application Programming Interface) in es6 with a lot of dependencies. The task was to develop an inverted-index-api which is an implementation of efficient search functionality for software applications. Some of technologies integrated with the project are stated below:

i. Jasmine-node: This is a node test framework that enables developers to test every part of their codes before deployment. I used jasmine-node to test my InvertedIndex class in order to make sure the methods are working as expected.
ii. Supertest: Supertest allows us to write tests for endpoints(routes) and check if correct responses are actually given for each route depending on the supplied payloads. Supertest can be used alone, and also with both jasmine and mocha. I integrated supertest with jasmine to test both my /api/create and /api/search/ endpoints.
iii. Gulp: This is called a task runner. If probably there are many test files in an application, gulp enables us to run all the tasks at once. Apart from running tests, other tasks can also be created using gulp. I used gulp to run my tests using gulp-jasmine, also to start the server using gulp-nodemon and to get my coverage report using gulb-istanbul and gulp-coveralls.
iv. Eslint: I integrated eslint in my visual studio editor to guide me in following the correct javascript coding style, and also to write in pure javascript es6. This called me to attention whenever i was going wrong.
v. Codacy and Travis: These are called continous integration (CI) tools that help monitor codes once they are connected to a github repository. I integrated these tools in the project to show how reliable or good my project is, with different badges on my README file showing the results.

Due to my determination, and desires to become a great developer, i was forced to learn all these technologies within this short time, and that has made me a better developer. I was able to meet the project’s expectations, and i pray that i get a good result from my defence as i am patiently waiting for the outcome.