screen-shot-2016-11-21-at-10-38-52-am

From Moringa School to Craft Silicon

By Jay Kayitare, Cohort 5 Graduate, Current Craft Silicon Android Developer
I graduated from Moringa School on May 6th this year. I remember it was on a Friday. The next Monday, I had an interview at Craft Silicon. I applied there based on the recommendation I got from MS. The interview went well. I believe being from Moringa was definitely an advantage. The next day I received a call from Craft Silicon telling me I got the position of mobile developer. I was not the only one who was hired. Out of my cohort, two other developers were hired by Craft Silicon. On Wednesday, we all reported to work for our first day.
I admit starting to work as a software developer was very intimidating at first. I had never worked for any tech company and I was not sure how my skills would measure up to the challenges of the real world. There are lots of challenges I faced when I started working that I never faced in Moringa such as dealing with clients and bosses, tight deadlines, etc. It was also hard to stop relying on tutorials and start figuring out things on my own. Moringa felt like a sprint, a race against time. Working can be more like a marathon. The pressure is there and it is constant.
Attending Moringa School is what allowed me to start viewing myself as a software developer. It gave me the grit, resourcefulness, drive and patience to handle the reality of the job. I came out of Moringa with the confidence that I can do anything I am asked to do at work, that given enough time, I can handle any challenge. I have had an easier time facing seemingly impossible deadlines, projects that are slightly above my current skill set, and several other challenges I have met in my workplace.
screen-shot-2016-11-21-at-10-14-37-am
Jay Kayitare, Cohort 5 Graduate, Current Craft Silicon Android Developer

The T-shaped Developer, The New Norm

By Brian Lusina, Cohort 7 Student

Gone are the days of clear definitions of responsibility, at least in terms of technology and developing software. These are not the times when companies and businesses have clearly defined roles for their employees such that everyone is only closed to the skill set that they deem to be the most proficient in. These are the times when one role for an employee is never going to be enough, or rather is never going to be the case, especially not with how the world is evolving.

No more are the days where web developers, designers, application programmers and database administrators stick to one predefined role each sitting in their own little area worrying about only their little part of the puzzle with clear definitions of responsibility. This venerable model heralded the age of web and app development, but it also contained the seeds of its own destruction, creating a world of silos, isolated and closed knowledge – a world of “not my problem”.

As these complex systems have matured the effort, and the risks, to change a product have become significant and difficult to achieve. As this era, and the solutions built around it, draws to an end, something new awaits.

The web developer jobs of today, the trendsetters and game changers, do not push bottlenecks through waterfalls. From tech startup to large-scale enterprise, the skills to succeed and adapt require a different mindset.

The modern developer requires clear methodologies to work with, a supportive organisational culture and tools that automate the simple tasks. This cultural change does not just apply to software developers – business leaders drive this change and provide the tools for their organisation to thrive.

To achieve this way of working you need a more rounded IT professional, or what the industry refers to as a ‘T-shaped developer’. A T-shaped developer has one or more deep skill-sets of knowledge complemented with broad generalist knowledge across an entire solution.

Sometime known as full-stack developers, these rounded individuals are the most in-demand devs – in a modern world that wants staff who can do front end, can make middleware sing and utilise the terminal on their chosen operating system like a ninja, and knows how to test.

This sounds like the perfect developer. I mean they can build anything with anything that solves anything and passes any test. Sounds like coding ‘god’. However unreal this sounds this is becoming the new norm as the world of tech continually evolves demanding more and more developers to up their game and improve their knowledge base.

Why these developers are called T-Shaped is because the vertical line of the T represents the depth of expertise in a field while the horizontal line represents the breadth of knowledge.

In as much as this may sound like being an expert in a particular programming language and knowing a ton of others as well, it actually may have different meanings to others.

It could be a developer who has a specialty (backend, frontend, or a particular technology stack) but is comfortable doing a wide range of development work, product management and design thinking. A backend developer needs to know how their work interacts with a front-end developer’s. Additionally, they need to empathize with designers and end users. Often certain kinds of skills are grouped together and people who are really truly good in a specific niche need to understand how their niche effects things holistically.

This does sound like one heck of a developer to have on your team. The job would be done well as they would be able to pitch in on every aspect of the product being built. However, there is a case against hiring a T-Shaped developer. Some managers would not do this.

The argument.

You don’t want a team of T-shaped developers for two reasons.

  1. They lack creativity. If there is one deep expert on each topic, they have nobody to bounce ideas off and nobody to pull them back on track if they fixate on a bad design.
  1. Communication bottlenecks. The deep expert on each topic has to simplify his communication to his teammates to an extent that he cannot properly articulate his reasoning.

The solution offered is to hire V-shaped developers as they have a peak competency at the tip of the V but have adequate skills in a number of adjacent areas ensuring that there is one expert and a least one sufficiently knowledgeable team member in every area.

Despite these two reasons (and possibly more), there are companies that have grown rapidly due to T-Shaped developers. Some even don’t focus on finding someone who is an expert in a particular subject (an iOS or Android developer for example) but rather a full-stack developer that can be successful in contributing to a project end to end. This allows creation of small product teams with high responsibility and the flexibility to remain technologically agnostic. It also tends to naturally let the developer grow in different areas while still maintaining certain expertise.

This may be one of the main reasons that the T-shaped developer will be the new norm and standard. After all, aren’t programming languages, frameworks and technologies here to create solutions? It will not matter whether you solve a problem in one language and someone solves it using some framework and creates a new business with some other new piece of technology. It is even better if you can do all three, or rather be able to have a wide knowledge base that lets you cut across and learn.

Tips for Balancing a Successful Life with an Enjoyable One

By David Olago, Cohort 7 student

Life has a lot to offer; there’s so much to look forward to. It’s important, however, to balance successes with enjoyment.

The life well-lived is attained when these two characteristics meet, when you enjoy your successes and thrive off of what you do. If you’re able to find what you’re made to do, something that brings you joy and a living, you have achieved a rare feat indeed. So many people today are successful but do not enjoy their lives; there are an equally large amount of individuals who enjoy their lives but are not successful.

After reading the tips in this article, you will have a better capacity to attain success while loving being alive.

Tip #1: Don’t Hoard Your Money

When you start making money, you may be inclined to save almost all of it and hardly spend a dime. It is important, though, to use your money both on yourself and on others to enjoy a life that’s both satisfying and meaningful. Don’t be afraid to be spontaneous with your money or too worried to occasionally spend it on yourself.

There is so much happiness to be found in the world; using your money on yourself at times can help make your life easier, more memorable, and even more productive. It is also vital to use what you have on others, as well. Generosity goes a long way. Extending a financial hand to those in need is one way to bring fulfillment to your time here on earth; it can be a first step to a relationship with someone that others have written off.

Occasionally using your money on yourself and other people will help you live a successful life that’s more valuable than how much you have in your bank account.

Tip #2: Designate Days Off

It is easy to become ambitious, striving to climb up the ladder of status and success in any way possible. It is perhaps even more tempting to work all the time when you are your own boss with access to your work wherever you are.

To balance this tendency, designating days off at least once a week will allow you times of rest, relaxation, and recharge. Whether you’d like to go out for a fun event or stay home and recuperate, taking days off for yourself will help you better enjoy your life and be more productive on your working days.

Tip #3: Make What You Love Profitable

Start with what you love to do, and then find a way to make it profitable.

Using your creativity, work ethic, and passion, you can strategize a way to make what you love make money. What better way to live than discovering how to make a living that you enjoy? It is also important to find areas of enjoyment that make life worth living even when days are hard and you question the job you love. If you press on, find what you love doing, and discover how to make it make money, you will enjoy a balanced life lived by few.

Tip #4: Dream Big and Persevere

To have a successful life, you must have dreams, goals, and aims to strive for. These goals should be both short term and long term.

What do you want to accomplish this week? Where do you want to be in five years?

If you work hard now, you can enjoy life even more later on. Sure, find things in life to enjoy now, but also dream of what you can do later on with the money you earn today.

Sometimes it won’t always be easy. There will be days you wonder where your passion went, weeks you’ll question whether your job is worth it. Failure will be a reality at times, but it can also be one of the best teachers. Learn from your own mistakes, but more importantly, learn from the ones of others. If you take to heart the lessons others have learned through failure, you can determine to not make those same mistakes.

So dream big, persevere, and have a good attitude through the highs and lows of whatever life throws your way.

Tip #5: Work on Side Projects

Working on side projects outside of what’s required at work is another way to bring productivity and fulfillment into your life. Whether it’s wood working or working towards starting your own business, having something to pursue outside of your required job is one approach to living a balanced life. Having a hobby such as golfing or fishing is also a good tactic for balanced living. Setting realistic, attainable goals and being able to juggle side projects outside of everyday work can bring an increased sense of productivity and meaning into your life.

Tip #6: Don’t Lose Sight of What’s Important

Throughout all of this, keep your priorities straight and remember the people who matter most. Having a lot of money is not a bad goal to strive for, but it should not be the utmost aim of your life. Use the money you’ve gained from doing what you love towards the people and things that are most important to you. Care for your family, show generosity towards your friends, and extend a kind hand to those in need.

In addition to using your finances for people who matter, don’t neglect to spend time with them. It may be easy to spend more time at work than necessary, convincing yourself that you are merely caring for your family by making extra money. Don’t forget that your family needs your presence, too, not just your money. Remember the friends who helped you along the way, the ones who believed in you, supported you, and cheered you on through each moment. Working hard is important, and doing what you love while making money is a wonderful aim indeed.

Keep all things in moderation, however; work smart, live well, and love much, for these are the steps to having a successful, enjoyable life.

Learning Multiple Programming Languages At The Same Time

By John Ngugi, Cohort 7 student

One of the most important skills for a software developer is the ability to pick up new programming languages and frameworks quickly. The tech world is constantly changing, therefore It is important to be able to learn fast and incorporate your newfound knowledge with your current one.

Unlike other professions, a software developer can quickly become irrelevant if they are not able to keep up with the fast pace of the tech world, more so if they specialize in languages and technologies that are often updated (JavaScript, Android).

However, It is a good idea to become well grounded in one programming language. Once you have good foundations, then picking up other languages is quite easy. As a beginner, learning your first language requires a huge investment of time and energy, and you may simply not have the time to take on another big project during this process.

If you’re thinking about starting another language because you’re sick of ‘Java’ or ‘Python’ or….. don’t! It will encourage you to procrastinate. If you’re thinking about starting another language because you keep seeing mentions of projects written in (say) Java and you’re frustrated that you can’t easily read and analyze the code – do! This is a great reason to learn another language at any time.

It takes about a year for the first language to solidify in the mind. Once you have good foundations, you can pick up as many languages as you want. Learning multiple languages is actually a good thing. Over time as you accumulate languages you’ll form your own internal abstract pseudo code language that will help you translate between the languages you know. This internal language is the framework you’ll use to learn new languages quickly.

What Silicon Savannah Needs To Be In The Next 10 Years

By Rodgers Gitau, Cohort 7 student

The local developer’s community in Kenya is changing rapidly. For a long time, it has been a secluded few active developers while the majority (mostly students and new developers) lurked in the background feeling left-out. This divided community would only meet during hackathons and other such events. Such meetings would be dominated by the most vocal attendees and after lots of speeches plus the refreshments catered, the rest would leave having achieved nothing. This would often beg the question, was silicon Savannah really a community? So what does the community need to do in the next 10 years?

Less hackathons, more meetups

It seems almost every event organized by the community is an attempt for already existing startups to find investors. Agreed hackathons inspire and motivate developers to come up with some pretty interesting innovations. However, as a community, if that’s all members always meet for then the gap between the skilled and the novice will remain. The community should meet without the constrains of competition to share experiences and build mentor-mentee relationships.

Less paper-degrees, more projects

I think as a nation, we suffer from the poor assumption that if you land that HELB loan and join some university for a couple of years then you’re skilled. While getting a degree is a must for other industries, you could be a great developer without having to squander 4+ years being a comrade. Given that most of these ‘computer’ courses are decades old, most university graduates are just as unskilled as those who spent their time gallivanting around hustling. The continued growth of coding only schools such as Moringa School is a highly encouraged idea for the community.

Less employers, more mentors

While it is common to assume that once you land your first gig as a developer, the sky is the limit in your endeavors. It is more common to find that once a junior developer joins a reputable organization, they spend most of their time running errands and struggling to hold on to their wage-paying job. Senior developers and startups CTOs should instead nurture these bunch of energetic fellows who are the future of the community. They in turn will guide the next generation of developers. Don’t misunderstand, jobs are important but as the saying goes:

“Tell me and I forget, teach me and I may remember, involve me and I learn.”- Benjamin Franklin

Less restrictions, more innovations

There is nothing as common in African countries as poor governance. As a community, Silicon Savannah suffers from some really foolish policies set by ignorant leaders.

Technology is fast moving and having defunct and outdated government agencies set the rules is crippling innovation. It’s time to get input from the community before passing some very ridiculous laws that only form barriers for the community.

WHY DEVELOPERS SHOULD LEARN ETHICAL HACKING

By John Wasike, Cohort 7 Student

Ethical Hacking is the ability to bypass system security and search for any weak points that could be exploited by malicious hackers. This information is then used by a Developer to improve the system security, in an effort to minimize or eliminate any potential attacks.

Learning how to hack helps developers implement the strongest possible security practices. It’s as much about finding and fixing security vulnerabilities as it is anticipating them. As you learn more about the methods hackers use to infiltrate systems, you’ll be able to preemptively resolve issues; if you don’t understand how black hat hackers could get into your systems, you’re going to have a hard time securing them.

Think of it this way: a computer network is like a yard with a fence to keep people out. If you’ve put something valuable inside the yard, someone may want to hop the fence and steal it. Ethical hacking is like regularly checking for vulnerabilities in and around the fence, so you can reinforce weak areas before anyone tries to get in.

Above everything else, successful ethical hacking requires being a master of problem solving. An understanding of how computer systems and programming languages work is also essential, because if you understand how the system works, it’s easier to think of ways to exploit the system.

For example, a website may use a complicated, sturdy JavaScript-based authentication system to prevent spammers from submitting thousands of bogus support emails. An ethical hacking approach to testing may be attempting to disable the JavaScript language in the web browser (a widely available feature) and submitting a support email while ignoring the authentication process. Unless the programmers have designed the site to ignore non-JavaScript enabled systems, the spam email will bypass security. After identifying the security hole, the programmers can make the necessary adjustments.

According to PC WORLD, hiring managers look for individuals who have ethical hacking experience and/or degrees in information security and information technology, as well as IT certifications. It’s possible to start your career in ethical hacking, or steer your career toward the field as your experience grows. Hack training sites such as hacksite.org can help you sharpen your hacking skills regardless of your experience level.

So, It is important to learn how to build and understand your app runs.