Winner's Excogitations

A chronicle of the thoughts, learning experiences, ideas and actions of a tech junkie, .NET, JS and Mobile dev, aspiring entrepreneur, devout Christian and travel enthusiast.

Andela Bootcamp - What I learnt (Part 2)
7 years ago · 4 minutes read

e8ofo54o62lhuk20zcbj

As promised in my first post, this is the second and hopefully last part of the recounting of my Andela boot-camp days. To give a recap of my first post, the boot-camp lasted two weeks and covered a broad range of disciplines. In the first post, I covered Git, Programming Logic, Relationship Building, Questions, OOP (Object Oriented Programming), TDD (Test Driven Development), Writing Proficiency, Agile Programming and Feedback. This post aims to give a short synopsis on the second set of nine skills. Without further ado, let’s dive in.

  1. Motivation and Commitment: It is common knowledge that for you to give your best to any task, you have to be first motivated and then committed to seeing it through. So we weren’t belabored with those during boot-camp. Instead what was discussed were the factors that affect our consistent motivation and commitment. As we discussed steps that could be taken to ensure we stay motivated for the entirety of any given project.

  2. Speaking to be understood: Prior to boot-camp, I had always fancied myself as a pretty good public speaker, but some things I came across at boot-camp really challenged my concept of good public speaking. One of such concept challenges was that good public speaking is not about how well you feel you have delivered your message but how well your audience got the message you were trying to pass across. Also, converse to conventional wisdom, good public speaking is passing as much information in as few words as possible; the less you say, the more people remember.

  3. Teams: There is a big chasm between knowing something, believing it and then acting it out. I have always that working in teams more often than not was better than working alone, but that knowledge had not translated into a belief for me as I prefer working on my own till boot-camp. In boot-camp, I was placed in a team and we were given a task involving git, and for the first time, I had to do my part and trust everyone else to do theirs. Since then, I have worked in teams and I’m still working in one and I have come to believe in and act out team dynamics.

  4. HTTP and Web Services: This was about the most magical thing I discovered at boot-camp. Apart from the meaning of HTTP and knowledge that it was the protocol by which HTML pages are served, I have virtually no knowledge about the power of HTTP. During boot-camp, we were introduced to RESTful APIs and how they differ from SOAP. We were also taught how REST is powered by HTTP verbs (GET, POST, PUT, DELETE, and PATCH) [I might make a tutorial on this in the future, place a comment if you want one. I could do it in JavaScript or C#]. One of the given tasks was to design a simple website that consumes a web service of your choice. I chose open weather, got an API key and made what I considered then the most amazing app. The app displayed the weather data for any location entered.

  5. Adaptability: Well, this was especially difficult for me and let me explain why. I have taught myself C# ( a statically typed language) and have made use of the language to solve nigh on every software problem I have encountered. Admittedly I used python for the home study curriculum, but at boot-camp, it was a JavaScript storm. For those who still don’t know what my beef could be, let me break it down. First, JavaScript is a dynamically typed language which means you don’t tell the interpreter what the type of data you’re is. Let me give an example; To define an integer in C#: int num = 12; To define the same number in JavaScript: var num = 12; To define a name in C#: string name = “Julius”; To do the same in JavaScript: var name = “Julius”;. For me, JavaScripts’ lack of order was very disturbing. And you bet IntelliSense cannot work properly with a dynamic language. Also, all errors were discovered when I was running the program. Finally, the stack trace for JavaScript is just the worst. Now that I am done venting my spleen, I first learned to tolerate JavaScript, then I made my peace with it and now, I am actually not against it anymore. For a world-class developer, being able to adapt to any and every situation is crucial.

  6. Front-end: During boot camp, we were only taught front end design briefly and theoretically but I got a first-hand experience with front end design when working on my final project. I learned that trying to reinvent the wheel especially regarding CSS is a very bad and time intensive choice. My advice for anyone is this,  look for a CSS framework that will meet your basic needs and tweak it to meet your other needs.

  7. Stack Specific Proficiency: I was so glad that I finally got to understand what the MEAN I had been hearing meant. MEAN is an alphabetism of MongoDB as the database, ExpressJS for routeing, AngularJS for front-end data-binding and manipulation and finally NodeJS for the back-end. This is known in programmer-speak as a full stack because knowledge of all elements of the stack means (pun intended) that you can build a website completely. MEAN is not the only JavaScript stack. There is the PREN stack which is an alphabetism of PostgreSQL as the database, ReactJS as the front-end framework, ExpressJS for routing and NodeJS as the back-end. Other languages also have their stacks and ASP.NET with SQL server is a full stack for a C# developer.

  8. Growth: For a world-class developer, a constant desire to grow is a basic requirement. At boot camp, we were taught about the various mindsets and how they affect our growth and achieving our potentials.

Thanks for taking the time to read through this. If you are going for the boot-camp, don’t be afraid, don’t be cocky, be proactive in every activity. Just as a side note, I got in.

Andela Bootcamp - What I learnt (Part 1)
7 years ago · 5 minutes read

e8ofo54o62lhuk20zcbj

I recently went through Andela boot camp cycle XVIII from the 16th of May to the 27th of May this year. I mentioned in a previous post that my experience at the boot camp was extremely informative and educative. I promised to give a synopsis of the boot camp and I aim to deliver in this post. The boot camp lasted two weeks, and we covered eighteen topics in the course of those two weeks. I will not go exhaustively into every detail of what we did, but I’ll show the broad range of disciplines we had to absorb knowledge from. All in all, I came to understand that software development was much more than writing code.

  1. Git: During boot camp, I was first introduced to the concept of version control, the root idea which spawned version control systems like Git, SVN, and TFS. I’ll do a tutorial on command line git itself in the near future.

  2. Programming Logic: We first discussed the various programming paradigms that exist and how they differ. Next, we how and why code is sub divided and grouped. We also learned the principles that help software developers decide when to group code.

  3. Relationship Building: this dealt with our ability to relate or interact with (if tautology isn’t your thing) not just co-boot campers but fellows and Andelans as well. It dealt with breaking the barriers that exist when different people from different places are brought into close proximity with and need to work with one another. To be sincere, this was the most uncomfortable part for me as I find it a bit difficult to strike up conversations with strangers, but as the trainer pointed out, you only need one thing in common with the stranger and he/she is not really a stranger anymore.

  4. Questions: a person’s ability to ask questions, not random questions, but questions that elicit thoughtful and informative answers, is an art that only practice can teach. But to in that art lie some fundamental principles that I was exposed to. I was also taught the different broad categories of questions, and when each is necessary.

  5. OOP (Object Oriented Programming): I was quite happy when we got to this topic because I had been developing in C# which has OOP principles at its core, but I tell you, OOP in JavaScript is a different beast altogether. I had to create a class, constructor and member methods in a language that until ES6, didn’t have any special syntax for any of the three and which used camel case for everything, variable names, method (function) declarations, etc. It was a grueling transition, but it was worth it in the sense that I broke me out of the shell I was casting myself into.

  6. TDD (Test Driven Development): this was arguably the most absurd thing I had to learn. Let me try and explain to non-programmers, imagine you want to cast a reinforced concrete pillar. You create the wooden cast for the pillar and set it up. But instead of putting the iron rods in, pouring the concrete and then waiting for it to set before testing for strength, you are told by your supervisor to first push the empty cast to ‘see’ if it falls. You that, and of course it falls, then your supervisor allows you to add the rods, pour the concrete and allow it to set. Then you try pushing it again and surprise-surprise, it doesn’t tip over again. That’s exactly how test-driven development works. You have a set of requirements given by the clients, based on those requirements, you the developer writes out tests. These tests are blocks of code that make sure your program delivers what it is supposed to. You run those tests and as is expected, they fail (you’ve not written the program you’re testing yet). It is only after they fail that you are free to write code to implement your requirements and handle all test cases. This process is known as the red-green-refactor cycle. If it still sounds like gibberish to you after my valiant attempt at an explanation, don’t be dismayed, if you continue down the software development path, you’ll definitely meet soon.

  7. Writing Proficiency: as a human being, you might not get to travel to every place in the world but your writings can. And you as a person would be judged based on the quality of your writing. This was the idea being hammered into us in this topic. I was taught to make my writing concise, coherent and absorbing. And trust Andela, we were tested on it.

  8. Agile Programming: In programming circles, ‘agile’ is probably the buzzword most thrown around. It is mostly used by douche programmers trying to show their self-importance (this is the opinion of the author and should not be taken as the word of the gods or Morgan Freeman). Despite this, agile is a very important software development methodology that like our fast-food age, seeks to get quality work done in as little time as possible by removing the elaborate planning and documentation processes of earlier methodologies. This allows development teams to be nimble and very adaptable to changing software requirements. This here author is very proud to say that he is a signatory to the agile manifesto (yes, it’s a thing. Google it).

  9. Feedback: I studied Electrical and Electronics Engineering at the Federal University of Technology, Akure and in the course of my studies I took several control engineering courses. One of the first things that became apparent to me was that the most robust control systems had feedback loops. This holds true for life as well, if we would develop as humans, feedback is indispensable. In software development, feedback is what makes you a world class developer. Feedback from the community (developer community, not your local government) in the case of an open source project, feedback from your colleagues and boss help you become a better programmer because they’ll open your eyes to things you may not have considered on your own. But receiving feedback requires humility because feedback won’t always come the way you like, but receive the good and the bad alike.

The post was getting kind of long and in keeping with the rules of concision, I’ll write the second set of nine topics in a subsequent post. Thanks.

Chronicles of My Andela Bootcamp Days: Intro
7 years ago · 1 minute read

e8ofo54o62lhuk20zcbj

For the past week, I have been privileged to be at the Andela boot camp LOS XVIII holding at the Andela training facility, Sabo. Prior to this experience, I considered myself a hardcore programmer who had tried ‘all’ the frameworks, used ‘all’ the libraries, used ‘all’ the tools and written ‘all’ the code, but this boot camp has been an eye opener for me. I fancy myself a smart person but the volume of information I’ve had to consume this week has been nothing short of ginormous.

Don’t get me wrong, it has been an awesome experience which has motivated me to be better and be more. So using this humble blog of mine, I intend to chronicle the knowledge I gain during this boot camp in several blog posts.

As is said on numerous radio stations, stay tuned!