skills & experience the technologies mostly used around here are hibernate, axis2 using soap or...

9
Grace Mukendi SKILLS & EXPERIENCE

Upload: hangoc

Post on 25-May-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

Grace Mukendi

SKILLS & EXPERIENCE

About Grace…In brief… I am:Hard working, studious, responsible, organised, ethical, social with a go-getter attitude!

My hobbies are…Creating my own instrumental music and movie editing.

am working towards writing my java architecture exam before the end of this year, and finally enrol for TOGAF courses.

i am a certified senior java developer, team player with leadership skills.

I love development and the great things that can be accomplished through programming, but my passion lies on the Enterprise Architecture specialisa-tion. i plan to become TOGAF certified very soon.

While on my way to become a recognised, certified enterprise architect, I have developed interest in data science, which I am currently learning with the John Hopkins University through Coursera and Ethical Hacking, which I am currently learning through Udemy.

I literally learn something new everyday, and lately I have been learning how to use the Hadoop Framework, R Programming and am attempting to get certi-fied in EJBs and eventually Java Enterprise Architecture.

A place where such attitude is encouraged is the kind of place I am looking for. I have strongly elaborated on my experience on the last page of my cv. I hope you can take some time to go through it.

I do hope to contribute to your company as much as your company would con-tribute to my personal development.

Kind regards,

My SkillsFor more details, please visit my website 1 - heard about it only;

2 - read about it, understand it; played with it (not professionally)

3 - use it once in a while (professionally);

4 - use it everyday.

CURRENT

SOLID

4 Java SE - Sun certified

4 Java Web - Sun certified

2 Java EJBs - Preparing for certification

4 Hibernate, Spring MVC, Spring Data, Spring Security

4 Ant & Maven

4 Web Services - SOAP, ReST, Axis2

4 MySQL

4 Eclipse

3 Dreamweaver, Netbeans

3 HTML5 & HTML 4, XML, JSON, CSS (960 grid system), Javascript (unobtrusive, JQuery)

4 Tomcat

3 Glassfish

3 Linux (commands), Mac OS X, Windows

4 Strict Object Oriented Programming with extensive use of Design Patterns which significantly reduces the learning curve of any well designed framework (spring, hibernate, etc..)

INTERMEDIATE

3 PHP

2 Objective C

2 WAS, JBOSS

2 RAD (IDE)

2 AngularJS

BASIC

2 JSFs

2 R Programming (Data Science language)

2 Hadoop (Big Data framework)

2 C++, C#, VB

2 ORACLE, PostgreSQL

FUTURE (in the pipeline)

Certified Java Enterprise Architect by end 2016

Solid Skills in the HADOOP Framework and Ecosystem by end 2016

TOGAF certified by mid 2017

ITIL certified by end 2017

My EXPERIENCE - in greater detailAt MFS Africa - senior developer | team leader (2015 - present)

MFS Africa revolves around building applications on the mobile infrastructure, mostly for countries based in Africa - but not SA. We allow people to easily be able to pay for loans, and acquire credits and transfer money through these applications, via their cellphones using mo-bile wallets. So, we do a lot of integration work where we have to implement our Partner’s APIs in order to seamlessly connect to them and accomplish the tasks. Our partners include: MTN, Vodacom, Barclays.. and other MNOs/banks based in other countries..

So, the technologies mostly used around here are Hibernate, AXIS2 using SOAP or Rest De-pending on the partner’s API configuration, as well as Spring when building bigger applica-tions (will elaborate below). We mainly make use of Java 6, 7 or 8, running on Tomcat. The ap-plications interfaces are USSD based, so we also interact with USSD gateways in order to present menus to our clients when they want to make use of our services.

Individual Work

project name: Sandbox (desktop)

technology: java se with java io, java ws, java soap

duration: 2 months

design patterns: coding to interfaces. separation of concerns. high cohesion/low coupling. abstraction. strictly OO.

details:

I was tasked with creating a desktop based ‘Sandbox’. This sandbox was used as a simulator for our clients to call our API. We had developed an API through which our partners could call us, and we needed to isolate all tests done by our partners, and also add some flexibility in terms of how they want to run their tests and so on.. The Sandbox I designed was created using Java SE, making use of Java WS as well, in order for the application to run on a specific port on a local machine. A client would connect to it using a pre-configured URL and send requests and receive responses from it. The data was stored in data files. The objects would be stored with their current state, and retrieved when needed. 

The application was built with an actual User Interface (java.swing) in order for the client to see progress on his tests, results, reasons for errors and so on.. The application also allowed the

client to run a structured User Acceptance Testing. In more technical terms, a thread would be started, waiting for the client to send a request to it (and call a specific method) for about 2 minutes. Once the user has sent the request, it would analyse the request sent and confirm whether the request was correctly formatted for that specific test case. If it was, it would mark the test case as ‘passed’ and would move on to the next. Otherwise, the client wouldn’t be able to move passed it, and had to succeed before moving on to the next test case. The client could also be able to configure things such as ports and the actual UAT tests he was interested in running. Not all methods HAD to be implemented by the client, and so some methods were optional, whereas some were mandatory.

project name: USSD Gateway Integrator (pluggable jar file)

technology: java web, java se.

duration: 2 weeks

design patterns: factory pattern. coding to interfaces. separation of concerns. high cohesion/low coupling. abstraction. strictly OO.

Details:

I created a small framework (jar file), which contained the classes we needed in order to be able to interact with USSD gateways. Some USSD gateways were a lot more complicated to implement than others. For instance, the COMVIVA USSD gateway does not keep track of the previous input from the user. And so, we needed to be able to keep track of sessions, and of all the previous menu selections from the user, in order to know the next menu to send back. 

I created a set of classes that took care of all the complexity behind it. Using some custom classes with attributes that would typically be stored in a Session Object, those classes took care of the flow of the menus (the menus were built using XML and were parsed to get the menu flows), storing crucial values in the custom session and exposed abstract methods that were to be implemented with logic depending on what was required. This jar file facilitates creation of any application which requires integration to any USSD gateway. It significantly re-duces the amount of work to be done and the amount of time spent on a single development. 

Team Work

project name: Auto Deduct (ussd and web)

technology: java web, hibernate, spring, maven.

duration: 3 months

design patterns: coding to interfaces. separation of concerns. high cohesion/low coupling. strictly OO.

Details:

Using the Agile methodology, we built, in a team of 3 senior developers and 2 junior develop-ers, an application that was to auto debit a specific client’s mobile wallet, based on the select-ed frequency and the starting date. The application made use of hibernate and java web. We used spring for the second version of this application. I was mostly involved in the backend work and also in ‘coaching’ the junior developers on basic principles of java, and design pat-terns.

This application was built in such a way that various services could be configured on the app, meaning that, regardless of which service the client is subscribed to, the application would simply need to get some parameters configured in the db and the service would be active on the app.

Team Leader

project name: Sandbox (web)

technology: java web, hibernate

duration: 3 months

design patterns: MVC. high cohesion/low coupling. object oriented programming.

Details:

I guided my team in creating a web based version of the Sandbox I had created (see above) using Java web (servlets, JSPs, JavaScript) and hibernate. They made use of a ‘Beans Frame-work’ I had created during my tenure as an intermediate developer. It contained all the need-ed classes to create the foundation of the app.

The web version allowed a client to register in order to use our API, and once he had been ap-proved by an Admin team member, the client would be able to see the methods exposed by our API and would be able to select a method he would like to test and send a request. He

could change the values sent in the request to test how the errors are handled and was also provided with some code sample he could use in his own development environment. We were able to provide code in PHP and Java. The app also had documentation related to the web service method and gave a detailed flow of how to call each method appropriately and suc-cessfully.

project name: Various Integration Projects (web services)

technology: soap. rest. java. hibernate. mysql

duration: 3 months

design patterns: object oriented programming. separation of concerns.

Details:

I have lead various integration projects with each member of my team, giving them all an op-portunity to play around with different technologies and once in a while interact with clients. We have done integrations to Econet, Safaricom, Vodacom, MTN, Airtel, Ericsson, Fundamo, MOOV, Interswitch Nigeria and many other MTOs or Companies.

For each project, an aar file was created as the web service (using axis2 was WS engine) and made calls to the relevant partner’s API. We called the APIs using org.apache.commons.http-client package which made it easy to configure multithreading and timeouts. Our calls were sometimes sent with XML, and sometimes JSON. WE also made use of the java.soap package when simply testing a partner's API.

At MFS Africa - Intermediate developer (2012 - 2014)

When I started working as an intermediate developer, I was given a project to work with a front end developer while I would take care of the backend. In doing so, I learnt how to become more organised, schedule meetings, keep track of work progress, research the technologies and design patterns appropriate for the work at hand.

Team Work

project name: Money Transfer Portal (web)

technology: java web (jstl, expression language, jsp, servlets). html. javascript. ajax. mysql.

duration: 3 months

design patterns: mvc. factory pattern. coding to interfaces. separation of concerns. low coupling/high cohesion. strictly oo.

Details:

I was tasked with creating a portal through which multiple clients would log on and transfer money to recipients who were on a specific MNO (MTN, Orange.. ). This portal had to be built in such a way that regardless of the MNO, the logic would not need to be changed, but simply a configuration would be needed to specify which MNO was using the app. I did not know Spring or Hibernate at the time and had to come up with something of my own.

So, I created a small framework (which I called the beans.jar framework), which contained all needed interfaces that one could use to transfer money, validate a recipient, calculate fees, validate phone numbers and their respective country codes) and plugged onto the app. That was what my Model consisted of. The jar file was extensively using abstraction. Each bean had access to an interface which provided CRUD methods and GET methods in which logic could be implemented. Also, in order to easily switch between different MNOs, I made use of the factory pattern to feed the jar file with different implementations of the beans I had created.

On the front end part, I strictly did not use Java in my JSPs. I had to teach the front end devel-oper guy whom I was working with how to use JSTL and EL in order to keep our MVC neat. I created several custom tags which retrieved data from the backend and fed a variable with the needed data. The variable was named by the developer and the custom tag simply used a ref-erence to it to fill it with data.

We also extensively made use of AJAX which rendered our front end extremely dynamic. We particularly used JQuery, which I also taught the front end developer. I truly enjoyed building this!

hope to hear from you soon :)