5 ways to get to the top of your field

Have you just got the basics of a new skill and are now interested in ramping it up to professional level? Great then this article is for you!

All seasoned developers know that a key to thriving in our industry is to develop the skill to properly process new information. This skills has four steps ie:

    - Recieve information
    - Understand it
    - Process it
    - Apply it

On this entry we will only talk of the first step, you may want to look at this entry So you want to become a master developer? for the other steps.

Fire up the hose

In the sea of information that we live in, it is easy to loose track of what is important, however the following key sources always deliver.

Top blogs

Identify key players in your industry and follow their blogs. Most will send you newsletters, signup for that, if that is not available you can leverage Google Now or any other content aggregator.

Due to my busy schedule, I find Readability to be an especially potent tool to manage my reading schedule, may also work for you.

Follow key people

Unless you are in the music industry, the likes of Beyonce should not be in your list of key people. I am talking about influencers in your field. This maybe Taylor Otwell in the PHP community or Obie Fernandez in the Rails world.

By following them both on twitter, github or any other platform that they choose to express themselves, you will get the latest on what is happening in the domain.

Forums

I am willing to bet my last shilling that you have at one point or another found the solution to your problem on http://stackoverflow.com/, but I would not hazard the same that you have contributed to it.

By keeping an eye on new questions coming in to such forums you not only quickly gain knowledge on your field, you also establish yourself as an expert in the domain.

If you are unable to spent as much time on this task, check out CodeTriage, this guys will send you an issue a day to solve on your inbox, pretty cool right?

Local user groups

Don’t let the position of this entry fool you, this is one of the important tasks you can do. User groups present to you a unique opportunity to interact with people in your field who also operate under the same business environment as you do. This means that in addition to knowledge and skills you can also get tangible benefits like a job or contract.

Start from http://www.meetup.com/ look for your target group and join join join!

Conferences

In your next review, consider requesting your employer to sponsor you to go to a conference in your domain. The costs are usually neglegible and the benefits gained both for you and your employer massive. I will let Chris Marr expound further Why attend industry conferences, seminars and events?

If however you can not make it to attend such conferences, you can probably find slides of it from sites such as Slideshare or SpeakerDeck. Video recordings are also usually available in YouTube or Vimeo.

MOOCs

Courses valued at thousands of dollars are available for absolutely free from organizations like Coursera, MIT, Harvard etc. It is insane not to aggressively cash in on all this freebies!

Commit yourself to at least one course every half year or so, the fruits will be worth it.

Turn down the hose

While all this new information is fun and exciting, it will eventually start eating into your professional and personal life. To get some work done you eventually need to down the hose of information down to a manageable level.

Remember your clients pay you to build them software, not to attend conferences.

How do you manage your own flow of information? Talk to us in the comment section below.

Facebooktwittergoogle_plusredditpinterestlinkedinmail

So you want to become a master developer?

Done with your first two projects? Great! What we are going to discuss today is the one fundamental skill that is guaranteed to take your skills to the next level.

I am sure you already guessed it, that is practise.

Before proceeding its important to clarify what practise is NOT working on a project for a client is not practise, that is work. In fact if thats what you do, please open up a new tab and quickly fire an apology to all the clients whose money you have been wasting!

Practise is an entirely different beast, Geoff Colvin in his book Talent is overrated talks of the following characteristics of practise or deliberate practise as he calls it.

Its designed specifically to improve performance.

Keyword here is designed, this requires knowledge about how performance is developed and improved.

This means that you likely need a teacher to help you in your practise sessions. However it is essential that with time you become good enough to design your own practise.

If you are looking for a nice school to join try Moringa (Disclaimer: I train at this school)

It can be repeated a lot

Unfortunately humans are not Write Once. To get better at any task you need to repeat it a lot. This means that the tasks carried out in the practise routine must be inherently repeatable safely.

It is highly demanding

If you find yourself in flow, you are probably not practising. In fact it is physically impossible to carry out practise for more than 5 hours a day and for more that 1 hour a time. This can act as a useful guideline to know if what you are doing really is practise.

It is not fun

Unfortunately practise is no going to be a pleasurable activity. I will let Emeka Mbadiwe explain the concept

Practising like a chess master

It’s not always possible to get a teacher, but thats no excuse to not practise, we can borrow a leaf from the world of chess.

Professional chess players practise by studying positions of pieces for different games played in the past.

The positions are organized by various themes including

  • Openings
  • Attacks
  • End games
  • Defenses

They then compare the move that they would make in this position vs the move that the master made.

We can modify the process to use in our own profession.

Steps

  1. Look into requirements specification, an implemented RFC or popular algorithm. Check this book by Dr. Sedgewick Algorithms for inspiration
  2. Write out your own implementation of the algorithm
  3. Look for an implementation of the algorithm, if you are using Sedgewick’s book, you will find code samples.
  4. Evaluate the proposed solution against your own
  5. Note the differences between what you did and what the authors did
  6. Rinse and repeat

You can use this method to analyze other aspects of software development as well including:

  • Design patterns
  • Specification drafting
  • Scheduling
  • Deployment
  • etc

Point is to identify gaps in your existing skillset and subject them to the rigors of practise.

How have you designed your own practise? Talk to us in the comment section.

Facebooktwittergoogle_plusredditpinterestlinkedinmail

Checklist of what to measure in APIs

You have gone through the trouble of building your API, testing it and then deploying it and now you are wondering what next? Well next is to measure it of course!

Tom DeMarco wisely stated “You can’t control what you can’t measure”, this is true even in API development but to expound further, good metrics help you:

  • Identify bottlenecks in your API
  • Better manage spikes in connection
  • Setup a better plan to manage capacity
  • Troubleshoot issues as they arise

Non technical issues also benefit from good metrics, it is far better to tell your boss “Our traffic currently averages at 1000/sec with about 25% of our users still consuming v1” rather that “We are ok”

Hopefully I have convinced you of the merits of recording numbers for anything and everything you can imagine.

Below is a list of things that you can measure, this is not meant to be comprehensive but more of a checklist just to make sure you have the basics covered.

  • HTTP Status Codes: You need to know if your clients are getting the data they need
    - 100s Informational requests
    - 200s Successful requests served
    - 300s Redirects 
    - 400s Client made a bad request
    - 500s Something is wrong with your application
  • Signed requests: The number of requests to protected resources
    - Tokens issued
    - Token refreshes
    - Auth successes
    - Auth failures
    - Auth grants
    - Auth rejections
  • Client data: Number of requests related to managing data of users
    - Clients created
    - Client usage
    - Client type
    - Client location
    - Version used
  • Resource usage: so that you can know when its time to upgrade
    - DB Queries
    - Memory usage
    - CPU usage
  • Response times: we all want a snappy system
    - Response time for authorization requests
    - Response time for general requests
    - Response time for different versions

Tools

Thankfully a whole host of tools exist for helping you to measure this information

There are a lot of them in the market choose what best works for you, personally I use New relic

How do you measure your own metrics? Tell us in the comment section below

Facebooktwittergoogle_plusredditpinterestlinkedinmail