The Adventures of a New Developer

By James Muriuki, Moringa Core Student

Oh my goodness! What the heck did I get myself into?”

Its two weeks into Moringa core – a 15 week Intensive to say the least program that is trying to turn me, a complete noob into a software engineer. The Moringa prep starter class held a few weeks back did help, but doesn’t come close to the intensity of what is being covered right now. But where would I be without Moringa?

The Discovery

 Let me tell you a little about myself. Straight out of high school I had no intention of going to university I was hell bent on making it on my own in life. So I went from being a student, to becoming a waiter at a local restaurant, to starting a jam business, to learning Chinese, well only for a month all in a period of 7 months.

Then a high school friend mentioned to me about a tech school called Moringa. I honestly thought it was a tree that had come for career day a year earlier. The program runs for a short period so I thought, wait school for 6 months and you get the actual skills that are in demand sounded too good to be true. So for the next one week straight since I was broke and had nothing, and I mean nothing going on with my life, I went on a research spree from talking to guys on social media to reading all about this mysterious school. And I found everything to be true. I went to the website applied did my interview and I was in.

Moringa Prep

The first day of Moringa Prep was…umm… different. This was no ordinary school. There are no lecturers, no textbooks no boring classes. The content is provided beforehand and we are supposed to work on it in groups. We were immediately hit with new content and for some strange reason we understood it and day after day the content was retained in our heads. For those who didn’t understand anything there was always a technical mentor in the room. Moringa became my home. And apart from the learning I got to meet amazing people from very different backgrounds and I got the strongest support system ever. Bi-weekly talks, occasional events and most importantly Yoga provides a nice change in environment to help you relax.

Moringa core

 The learning curve is steep. You will doubt yourself the whole time the way I am right now but the secret is not doubting yourself, it is finding a way to work through the doubt. To finding that inner drive that can make you succeed. I have a very long road ahead of me. But it’s an adventure all new developers have to take. Through my friends including the technical mentors, who are probably the most awesome people I have ever met, the road gets easier, the workload becomes a bit bearable and even if I get to the brink of quitting I know I will stay just one more day.

Moringa Chronicles

By Ruth Gitau, Moringa Core Student

#Episode 1, Believe in Yourself

It was early Wednesday morning, only two weeks into the program when I dashed to the washroom, looked at my reflection in the mirror and asked myself, “what am I doing here? Have I made a mistake? Do I deserve to be here, do I really have what it takes?”

We highlight and celebrate peoples’ success without understanding the process they went through to reach their pinnacle of success. We turn a blind eye to the pain of it all.

Doubts, fears and feelings of unworthiness are some emotions we face at some point in life. Scratch that. We face these emotions when we are doing things outside our comfort zones. Mine came within the first two weeks of Moringa. You know that feeling all too well. One minute you’re high and the next you’re low.

Welcome to the life of an amateur programmer. You get fascinated at how things have been built. You get a high from creating your own stuff. You own your work and take pride in it. Yet there’s the other side of it all where you code and get so many errors while coding to the point you enter the button with bated breathe. Yet, the red errors still appear in your console. Fret not, that’s normal and it’s the one thing every new programmer should be told. It’s normal to get errors in your code. Rome wasn’t built in a day. Your coding skills won’t either. It takes time, practice and commitment. And it’ll get better. It always does.

Sometimes, it’ll get rough. Really rough. The kind of rough where you want to throw in the towel. But it’s in these moments that you have to remind yourself of a couple of things:

  • why you love to code. This is your fuel.
  • It’s okay to feel melancholic, acknowledge the emotions and continue on with your journey,
  • stick with your dream, persevere and hang onto that thread and when you get to that point where you can’t hold on anymore,
  • have people you can lean back on. People who fight for you and your dreams when you don’t want to.

Humans learn the most valuable lessons at the face of adversity. So take it all in stride. Trust the process. Believe in yourself. Believe you can do it.

And remember, there’s always a silver lining. A light at the end of the tunnel. Perhaps, hanging by the thread will lead you to be the next Mark Zuckerberg.

 

 

 

Programming Simplified

By Alvin Aringo, Moringa Prep Full-time student.

Computers are everywhere. Nowadays, nearly everything requires some sort of programming. And yet very few people know how to read and write code. In fact, few people know what programming is.

Programming is basically explaining to a computer what you want it to do for you. You are probably teaching the dumbest thing in the universe how to do something. To the outside, it seems like the most boring thing in the world. But soon enough you will know why programmers are fascinated by this art.

Programming is one of the only thing in the world where you can sit down and come up with something new from scratch. Anything you want. To somebody who does it, it is the most interesting thing in the world. It is a game much more involved than chess, a game where you can make up your own rules and where the end result is whatever you can make of it. Creating code is just a different way of expressing creativity much similar to playing an instrument. The only limitation is your imagination…literally.

And it is funny how the world stereo typically thinks of the programmers as anti-socials who lock themselves in their rooms converting coffee to programs. In truth, programming is about collaboration. All great things are built in teams. We collaborate with other smart people, testing our ideas. And stimulating each other. That’s what makes programmers successful. It’s not some flash of brilliance by someone who codes 24 hours a day for 3 weeks. The magic happens when we are all on the same page collaborating and building something together.

Software is really about humanity than any other thing. It’s about helping people by using computer technology. Programming is more about breaking down real world problems and creating solutions for them. We are more of superheroes when you think of it.

There is a much greater need in the world for people who can write code than there will ever be supply. Whether you are trying to make a lot of money or change the world, programming is an empowering skill to learn.

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.