Tuesday 10 April 2018

Five Dimensions of Competency applied to Web Development

According to the Workforce Skills Qualification initiative in Singapore, there are five dimensions to competency - Task Skills, Task Management Skills, Contingency Management Skills, Job Management Skills and Transfer Skills. And today, I would like to apply this to a web development context.

Why? What's the point?

Because contextualizing stuff helps me learn better. (Yes, this is one of my many, many school projects).  Plus, I like writing listicles. Let's go!

KSA

Before we continue, we've first got to understand what role KSA plays in the Five Dimensions. of Competency. A competency in any field is a measurable set of Knowledge, Skills and Attitudes behind every individual's performance. Therefore, every dimension of competency has its own related KSA.

Knowledge is the theoretical or practical know-how. It's your understanding of the subject matter - namely the why and how.

Skill is the psychomotor capability developed through training and/or experience. It's your ability to perform what you know.

And Attitude is your predilection towards doing it right. It mostly comprises of your values and your outlook. Basically, knowing that you should do something is not the same as being inclined to do it.


1. Task Skills

This is pretty straightforward. It refers to all the little tasks you have to perform while doing your job. It measures your ability to carry out a single task to professional standards.

Take for instance, writing a HTML layout off a wireframe. Is your final product responsive? Is it W3C Compliant? Cross-browser compatible?


Setting up a database.

Or, setting up a database. Are the fields aptly named? Is the schema appropriate? Fully, or at least adequately normalized? Efficient and robust?

Knowledge - Understanding compliance standards, why databases need to be structured a certain way, etc.

Skill - Being able to create code structures, schemas, HTML layouts, etc.

Attitude - Commitment to standards compliance and best practices.


2. Task Management Skills

This one takes it up a notch. It's an assessment of how well you coordinate all the individual tasks into a work activity.

Writing a web application, or even adding a new feature to an existing web application is a work activity that is made up of several individual tasks. Now, when performing that particular work activity, you're expected to architect the solution, cater for existing use cases and anticipate possible edge cases. You may need to leverage off existing data storage and probably write a fair amount of code. How well you do those tasks is not the issue here - what you're assessed on, is how well you prioritize what needs to be done first, and in what sequence. You may decide that the database is more important to you, but users are naturally going to want to look at the interface first. How you resolve these conflicts is also a measure of how aptly you are managing this activity.

Juggling it all.

Let's say you decide to work on the interface first, and manage to set up a fairly workable layout. Do you then spend more time making the layout responsive, or do you decide that displaying data takes priority? Again, it's not how well you perform these individual tasks, but how well you manage doing all this at once.

Knowledge - Understanding how different tasks relate to each other in the overall scheme of things.

Skill - Prioritizing, time management, self-organization.

Attitude - Having the discipline to stick to a plan, as opposed to just "going with the flow".


3. Contingency Management Skills

Things are going to go wrong at some point. It's one of the undisputed and immutable laws of the universe. When things go wrong, or don't perform as expected, how do you handle it? How good are you at dealing with unusual situations that arise?

Handle problems like a pro.

In web development, like any other software development, things can (and will) go wrong. The layout may turn out to totally fail when testing in Internet Explorer. The data might take a little longer to load than expected. The data displayed might even be wrong. How solid are your solutions? How quickly do you find the root of the problem?

Knowledge - Understanding how to root out problem sources, interpreting error logs and generally how to troubleshoot.

Skill - Applying fixes and solving problems.

Attitude - Commitment to solving the problem itself rather than just a surface fix (and of course, knowing the difference!).


4. Job Management Skills

Some things aren't just limited to your role alone. Very few workers function in a vacuum. You have to learn to play well with others, and interact with other cogs (of which you are one) in the entire system.

Is your code easy to read, modify and extend by your team members? Are your comments useful? Do you coordinate and communicate effectively with your teammates?

Are you a team player, or a go-it-alone cowboy?

Are you able to interact with Infrastructure for support when you need to deploy your web app? Or discuss design issues with the Design department to better facilitate the building of the interface?

Pair programming.
These questions are pertinent because the days of one super programmer doing everything by himself, are just about over. No matter how good you are, if you can't work well with others, you're pretty much useless to any organization. I'm not saying people have to like you. But they do have to like working with you. There's a distinction to be made there.

Knowledge - Understanding why your ability to relate to your co-workers, while not technical, is still vital. Use of Code Repositories, Pair Programming and Code Reviews.

Skill - Diplomacy, communication.

Attitude - Respecting the contributions of others in the final product and recognizing that everyone is important.


5. Transfer Skills

This measures your ability to apply your knowledge outside of the usual context. Knowledge and skill are limited in utility if they can't be applied to new situations.

Let's say you can write a web application like a boss. How well can you translate that to writing a mobile application?

If you can make a web app,
can you make a mobile app?

Or perhaps, you can implement stacks, heaps and all manner of cool magic using Java. How effective would you be if you had to use PHP instead? Is your foundation in programming strong enough that any language will do?

Knowledge - Understanding the different components of your knowledge, breaking them down and applying them to fresh scenarios.

Skill - The ability to accomplish different things using the same tools, or accomplish the same things using different tools.

Attitude - Being willing to drive innovation by applying your skills to newer areas. Being willing to learn new tricks, or new tools.


All in all...

There's a lot more to competency than simply being good at something, or being able to do something to a certain standard. If you can't manage your own workload, react and recover from unexpected situations, communicate with others or apply your skills to a different environment, then you're not competent enough to be truly useful. And if you're an actually talented individual otherwise, that would be a huge pity. It's not enough to be good at individual tasks because machines will beat you at this every time. To be truly competent, you have to measure your competency in these five dimensions.

Most competently yours,
T___T

No comments:

Post a Comment