software development Archives - Moringa School https://moringaschool.com Nurturing Africa's Tech Talent Mon, 22 Jan 2024 06:25:26 +0000 en-US hourly 1 https://wordpress.org/?v=6.2.5 https://moringaschool.com/wp-content/uploads/2022/02/cropped-favicon-32x32.png software development Archives - Moringa School https://moringaschool.com 32 32 Exploring Events and Event Listeners in SQLAlchemy ORM https://moringaschool.com/blog/exploring-events-and-event-listeners-in-sqlalchemy-orm/ https://moringaschool.com/blog/exploring-events-and-event-listeners-in-sqlalchemy-orm/#comments Mon, 22 Jan 2024 06:23:39 +0000 https://moringaschool.com/?p=5543 In SQLAlchemy, events and event listeners provide a powerful mechanism for executing custom code in response to specific actions or changes within the ORM. These can be particularly useful for scenarios like tracking changes, sending notifications, or enforcing business logic. This blog will delve into the concept of events and event listeners in SQLAlchemy ORM […]

The post Exploring Events and Event Listeners in SQLAlchemy ORM appeared first on Moringa School.

]]>

In SQLAlchemy, events and event listeners provide a powerful mechanism for executing custom code in response to specific actions or changes within the ORM. These can be particularly useful for scenarios like tracking changes, sending notifications, or enforcing business logic. This blog will delve into the concept of events and event listeners in SQLAlchemy ORM using a practical example.

Understanding the Code Snippet

def get_db():
    db = SessionLocal()
    try:
        yield db
    finally:
        db.close()
from sqlalchemy import Enum as EnumType

class Status(str, Enum):
    PENDING = "pending"
    REJECTED = "rejected"
    APPROVED = "approved"

class FuelRequest(AbstractBaseModel):
    __tablename__ = "fuels"

    id = Column(Integer, primary_key=True, index=True, autoincrement=True)
    public_id = Column(String(50), unique=True)
    status = Column(EnumType(Status), default=Status.PENDING)
    user_id = Column(Integer, ForeignKey("users.id"))
    user = relationship("User", back_populates="fuels")
from sqlalchemy import event
from sqlalchemy.orm.attributes import get_history
from ..utils import get_db

def track_status_changes(mapper, connection, target):
    # Get the history of the 'status' attribute
    hist = get_history(target, 'status')

    if hist.has_changes():
        # Get the user's phone number
        db = next(get_db())
        user_phone_number = get_user_phone_number(db, user_id=target.user_id)

        # Create a message
        message = f"The status of your {target.__class__.__name__} Request has changed to {target.status}."
        # send_notification(user_phone_number, message)
        send_sms_notification(user_phone_number, message)

# Add the event listeners
event.listen(FuelRequest, 'after_update', track_status_changes)

In this example, an event listener named track_status_changes is defined. This listener is triggered after an update operation ('after_update') on instances of the FuelRequest classes. The listener checks if the ‘status’ attribute of the target object has changed. If so, it retrieves the user’s phone number and sends an SMS notification about the status change.

Breaking Down the Code

Defining the Event Listener

def track_status_changes(mapper, connection, target):
    # Get the history of the 'status' attribute
    hist = get_history(target, 'status')

    if hist.has_changes():
        # Get the user's phone number
        db = next(get_db())
        user_phone_number = get_user_phone_number(db, user_id=target.user_id)

        # Create a message to be sent
        message = f"The status of your {target.__class__.__name__} Request has changed to {target.status}."
        # Call the  send_sms_notification to send the message to the user using the users phone number
        send_sms_notification(user_phone_number, message)

The track_status_changes function is the event listener. It takes three

parameters: mapperconnection, and target.

The mapper parameter refers to ORM Mapper for the object.


The connection parameter refers to the database connection in use.


The target parameter refers to the instance of the class (e.g. FuelRequest) that triggered the event.

Inside the listener, it checks if the ‘status’ attribute has changed and, if so, retrieves the user’s phone number and sends an SMS notification.

import os
from twilio.rest import Client
from dotenv import load_dotenv

# Load environment variables from .env file
load_dotenv()

account_sid = os.environ['ACCOUNT_SID']
auth_token = os.environ['AUTH_TOKEN']
phone_number = os.environ['TWILIO_PHONE_NUMBER']
client = Client(account_sid, auth_token)

def get_user_phone_number(db, user_id: int):
    # get the user
    user = db.query(User).filter(User.id == user_id).first()
    # return the user's phone number
    return user.phone_number if user else None

def send_sms_notification(user_phone_number, message_body):
    try:
        message = client.messages.create(
            body=message_body,
            from_= phone_number,  # Your Twilio phone number
            to=user_phone_number  # Get the user phone numbr from the User model
        )
    except Exception as e:
        raise ValueError("Error occurred while sending message: ", e)

Adding Event Listeners

event.listen(FuelRequest, 'after_update', track_status_changes)

The event.listen method is used to attach the track_status_changes listener to the

‘after_update’ event of the specified classes ( FuelRequest). This means that the listener will be

executed every time an instance of these classes undergoes an update operation.

Conclusion

Events and event listeners in SQLAlchemy provide a flexible way to incorporate custom behavior into your ORM-based applications. Whether you need to track changes, enforce business rules, or send notifications, event listeners offer a clean and modular solution. The provided code snippet demonstrates how to use event listeners to respond to updates in the ‘status’ attribute of different ORM entities. Feel free to adapt and extend this example to suit your specific application needs. Happy coding! 🚀💻

The post Exploring Events and Event Listeners in SQLAlchemy ORM appeared first on Moringa School.

]]>
https://moringaschool.com/blog/exploring-events-and-event-listeners-in-sqlalchemy-orm/feed/ 1
ORM Mapped Class Configuration in SQLAlchemy https://moringaschool.com/blog/orm-mapped-class-configuration-in-sqlalchemy/ https://moringaschool.com/blog/orm-mapped-class-configuration-in-sqlalchemy/#respond Tue, 09 Jan 2024 08:05:35 +0000 https://moringaschool.com/?p=5492 Let’s embark on a journey into the enchanting realm of SQLAlchemy, where Object-Relational Mapping (ORM) adds a layer of magic to database interactions. We’ll unravel the secrets of configuring Mapped Classes, the wizards behind the scenes. Understanding ORM Mapped Classes In SQLAlchemy, Mapped Classes serve as the bridge between the world of objects in your […]

The post ORM Mapped Class Configuration in SQLAlchemy appeared first on Moringa School.

]]>

Let’s embark on a journey into the enchanting realm of SQLAlchemy, where Object-Relational Mapping (ORM) adds a layer of magic to database interactions. We’ll unravel the secrets of configuring Mapped Classes, the wizards behind the scenes.

Understanding ORM Mapped Classes

In SQLAlchemy, Mapped Classes serve as the bridge between the world of objects in your code and the rows in your database tables. To make this magic happen, let’s explore the essential configurations for Mapped Classes.

Creating a Mapped Class

from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import declarative_base

Base = declarative_base()

class YourModel(Base):
    __tablename__ = 'your_table_name'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)

Here, YourModel becomes the hero of your database story, with attributes corresponding to the columns in your table.

Defining Relationships

The beauty of SQLAlchemy lies in its ability to represent relationships between tables effortlessly. Let’s say you have another model, AnotherModel, and you want to establish a relationship between them.

from sqlalchemy import ForeignKey
from sqlalchemy.orm import relationship

class AnotherModel(Base):
    __tablename__ = 'another_table'

    id = Column(Integer, primary_key=True)
    something_else = Column(String)
    
    your_model_id = Column(Integer, ForeignKey('your_model.id'))
    your_model = relationship('YourModel', back_populates='another_models')

Here, the relationship attribute creates a connection between the two models, enabling you to navigate the relationships seamlessly.

Additional Configuration Options

  1. Customizing Table Names
    If your class name and table name aren’t a perfect match, you can specify it using __tablename__:

your_model = relationship('YourModel', back_populates='another_models', uselist=False)

2. Handling Relationships
Use the relationship attribute to define relationships, specifying details like back-references and joining conditions.

your_model = relationship('YourModel', back_populates='another_models', uselist=False)

3. Indexing Columns
Improve query performance by adding indexes to columns:

name = Column(String, index=True)

Bringing It All Together

from sqlalchemy import Column, Integer, String, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class YourModel(Base):
    __tablename__ = 'your_table_name'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)

    another_models = relationship('AnotherModel', back_populates='your_model')

class AnotherModel(Base):
    __tablename__ = 'another_table'

    id = Column(Integer, primary_key=True)
    something_else = Column(String)
    
    your_model_id = Column(Integer, ForeignKey('your_model.id'))
    your_model = relationship('YourModel', back_populates='another_models')

There you have it! With the power of ORM Mapped Class Configuration in SQLAlchemy, you’re ready to weave complex relationships and transform your database interactions into a magical experience. Happy coding! 🚀💻

The post ORM Mapped Class Configuration in SQLAlchemy appeared first on Moringa School.

]]>
https://moringaschool.com/blog/orm-mapped-class-configuration-in-sqlalchemy/feed/ 0
SQLAlchemy Object Relational Mapper (ORM) State Management https://moringaschool.com/blog/sqlalchemy-object-relational-mapper-orm-state-management/ https://moringaschool.com/blog/sqlalchemy-object-relational-mapper-orm-state-management/#respond Mon, 08 Jan 2024 10:52:26 +0000 https://moringaschool.com/?p=5457 Object-Relational Mapping (ORM) is a technique that lets you query and manipulate data from a database using an object-oriented paradigm. When talking about ORM, most people are referring to a library that implements the Object-Relational Mapping technique, hence the phrase “an ORM”. An ORM library is a completely ordinary library written in your language of choice that encapsulates […]

The post SQLAlchemy Object Relational Mapper (ORM) State Management appeared first on Moringa School.

]]>

Object-Relational Mapping (ORM) is a technique that lets you query and manipulate data from a database using an object-oriented paradigm. When talking about ORM, most people are referring to a library that implements the Object-Relational Mapping technique, hence the phrase “an ORM”.

An ORM library is a completely ordinary library written in your language of choice that encapsulates the code needed to manipulate the data, so you don’t use SQL anymore; you interact directly with an object in the same language you’re using.

For example, here is a completely imaginary case with a pseudo language:

You have a book class, you want to retrieve all the books of which the author is “biko”. Manually, you would do something like that:

book_list = new List();
sql = "SELECT book FROM library WHERE author = 'biko'";
data = query(sql); // I over simplify ...
while (row = data.next())
{
     book = new Book();
     book.setAuthor(row.get('author');
     book_list.add(book);
}

SQLAlchemy

SQLAlchemy is the Python SQL toolkit and Object Relational Mapper that gives application developers the full power and flexibility of SQL.

It provides a full suite of well known enterprise-level persistence patterns, designed for efficient and high-performing database access, adapted into a simple and Pythonic domain language.

Managing the state of your data is crucial for robust applications, and SQLAlchemy ORM offers a powerful toolkit for handling this with elegance and efficiency. 💼

In SQLAlchemy, the ORM layer helps us bridge the gap between the relational database and our Python code, making it seamless to work with database records as Python objects. 🐍

Key points on state management with SQLAlchemy ORM:

  • Identity Map Pattern: SQLAlchemy keeps track of objects in a unit of work using the Identity Map pattern. This ensures that each database row is represented by a single Python object within a session.
  • Session State: The Session in SQLAlchemy acts as a staging area for all changes before committing them to the database. Understanding and managing session states is vital for a smooth workflow.
  • Dirty Tracking: SQLAlchemy automatically tracks changes to objects and only updates the fields that have been modified. This minimizes unnecessary database updates, optimizing performance.
  • Unit of Work Pattern: SQLAlchemy employs the Unit of Work pattern to coordinate changes and transactions, making it easier to manage complex operations involving multiple objects.
  • Flushing and Committing: Explicitly flushing the session synchronizes changes with the database, and committing finalizes the transaction. Understanding when to flush and commit is essential for data integrity.
  • Events and Hooks: SQLAlchemy provides a rich set of events and hooks, allowing customization of state management behaviors to suit specific application needs.

Assume you have a User model representing users in a database:

from sqlalchemy import create_engine, Column, Integer, String, Sequence
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

# Define the User model
Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, Sequence('user_id_seq'), primary_key=True)
    name = Column(String(50))
    age = Column(Integer)

# Create an SQLite in-memory database and bind the engine
engine = create_engine('sqlite:///:memory:')

# Create the 'users' table in the database
Base.metadata.create_all(engine)

# Create a Session class to interact with the database
Session = sessionmaker(bind=engine)
session = Session()

Now, let’s explore state management:

# Create a new user and add it to the session
new_user = User(name='John Doe', age=25)
session.add(new_user)

# At this point, the user is in the 'Pending' state, not yet committed to the database

# Query the user (this will trigger a flush to the database)
queried_user = session.query(User).filter_by(name='John Doe').first()

# The queried_user is now in the 'Persistent' state, representing a database record

# Modify the user's age
queried_user.age = 26

# At this point, SQLAlchemy has marked the user as 'Dirty' because it has been modified

# Commit the changes to the database
session.commit()

# Now, the changes are saved to the database, and the user is in the 'Committed' state

# The session is now in a 'Clean' state, and the user is no longer marked as 'Dirty'

In this example:

  • Pending: When a new user is added to the session, it is in a pending state.
  • Persistent: After querying a user from the database, it becomes persistent.
  • Dirty: If you modify a persistent object, it becomes dirty.
  • Committed: After committing changes, the object is in a committed state.
  • Clean: The session is clean after committing, and the object is no longer dirty.

Understanding these states helps you manage your data effectively when working with SQLAlchemy ORM. Feel free to experiment and build upon this example!

The post SQLAlchemy Object Relational Mapper (ORM) State Management appeared first on Moringa School.

]]>
https://moringaschool.com/blog/sqlalchemy-object-relational-mapper-orm-state-management/feed/ 0
Sowing Seeds of Change: Transforming Agriculture Through Tech – Michael Munavu’s story https://moringaschool.com/blog/sowing-seeds-of-change-transforming-agriculture-through-tech-michael-munavus-story/ https://moringaschool.com/blog/sowing-seeds-of-change-transforming-agriculture-through-tech-michael-munavus-story/#respond Mon, 18 Sep 2023 09:40:31 +0000 https://moringaschool.com/?p=5091 Discover how Michael Munavu, a Moringa School graduate, is revolutionizing agriculture through innovative technology. Explore his inspiring journey and the impact of his digital transformation on farming practices in this captivating article

The post Sowing Seeds of Change: Transforming Agriculture Through Tech – Michael Munavu’s story appeared first on Moringa School.

]]>

1. Can you tell us about your background and what led you to pursue a career in tech?
I’m currently in my fourth year, pursuing a BSc in Telecommunication and Information Engineering at JKUAT. My journey into the world of tech started with a nudge from my co-founder, who had a deep passion for programming. His enthusiasm rubbed off on me, and I took the plunge.

2. How did you first learn about Moringa School, and what motivated you to enroll in the software engineering program?
We stumbled upon Moringa School through Twitter, and what really drew me was the unique learning model specifically how they delivered the programs through remote learning. It seemed like a fantastic opportunity to acquire the skills I needed while still being able to learn from the comfort of my own space.

3. What specific skills and knowledge did you gain from Moringa School that you believe contributed to your success in the hackathon?

Certainly! Beyond the technical coding skills, Moringa School placed a strong emphasis on honing soft skills. My Technical Mentor, Faith Kilonzi, encouraged me to not only code but also to pitch my ideas and teach others. These communication and presentation skills were invaluable during the hackathon.



4. Could you describe the solution you and your team presented at the Code Cash Crop 4.0 Hackathon?
At the hackathon, we showcased “Mche,” a solution designed to support farmers. Our platform offers advisory information to help farmers choose the right crops and timing. Farmers can purchase input supplies conveniently and sell their produce at competitive prices through Mche. Additionally, we’ve created a supportive community where farmers can connect with each other, and we’ve even integrated an AI assistant to answer their questions.

Incorporating tech and agriculture will fundamentally alter how food is produced, distributed, and managed in Africa, ensuring sustainability and food security.

5. How did Moringa School prepare you for the intense competition and pitch presentation at the hackathon?
Moringa School equipped us with the technical skills & tools we needed, like React JS and Rails, which we used to build our project. Additionally, it was through Moringa that I connected with my talented team members, including my co-founder Kiprotich Kimutai, our data scientists Amos Kibet and Scholar Chepkirui, who are Moringa School graduates themselves, and our UI/UX designer, Emma Neema. These connections were instrumental in our success.


6. What were the key challenges you faced during the hackathon, and how did your Moringa School training help you overcome them?
Our main challenge revolved around the financial feasibility of our solution. Thanks to my time at Moringa, I was well-prepared to address these challenges. We invested time to practice our pitch, work on the business pitch decks and create business models after every capstone project, which came in handy during the hackathon.


7. Were there any specific mentors or instructors at Moringa School who played a pivotal role in your journey leading up to the hackathon?

Absolutely, I’d like to give special thanks to Albert Bryon, one of the judges and a Technical Mentor at Moringa, and Faith Kilonzi for their guidance. I’d also like to express my gratitude to Stella Ngina from the Outcomes Team who shared the hackathon opportunity with us.

8. Winning the hackathon is a significant achievement. How do you see this victory impacting your future career and goals?
Winning the hackathon has been a huge confidence boost. It’s a clear reminder that with dedication, I can achieve anything I set my mind to. This victory has set a high bar for my future endeavors, and I’m eager to take on more challenges.


9. What advice would you give to aspiring tech enthusiasts and entrepreneurs looking to make a difference in the agriculture and technology sectors, especially those considering enrolling in Moringa School?
I would advice techies to just start and build in public, be proud of their work and post it on Twitter and Linkedin. The importance of sharing your work on these platforms is that you can interact with other developers and get feedback on how to improve your work.

10. As a parting shot, what is a quote you live by?
There is one Steve Maraboli quote that I purpose to embody.
‘Live your truth. Express your love. Share your enthusiasm. Take action towards your dreams. Walk your talk. Dance and sing to your music. Embrace your blessings. Make today worth remembering.’

11. As we conclude, your story is truly inspiring, and there are individuals who may wish to connect with you for mentorship or opportunities. How can they get in touch with you?
I can be contacted through my personal website – michaelmunavu.com.

The post Sowing Seeds of Change: Transforming Agriculture Through Tech – Michael Munavu’s story appeared first on Moringa School.

]]>
https://moringaschool.com/blog/sowing-seeds-of-change-transforming-agriculture-through-tech-michael-munavus-story/feed/ 0
First Software Engineering Role at a Company in Dubai & Social Impact Projects – Stella Waithera’s Journey https://moringaschool.com/blog/first-software-engineering-role-at-a-company-in-dubai-social-impact-projects-stella-waitheras-journey/ https://moringaschool.com/blog/first-software-engineering-role-at-a-company-in-dubai-social-impact-projects-stella-waitheras-journey/#respond Mon, 12 Jun 2023 12:37:29 +0000 https://moringaschool.com/?p=4602 Stella Waithera is a multi-faceted and multi-talented woman. At just 29 years old, she is a Software Developer, Digital Skills Instructor and Philanthropist at an NGO, Africa Tech Girl, where she imparts programming skills to children and teenagers. Read more on her story.

The post First Software Engineering Role at a Company in Dubai & Social Impact Projects – Stella Waithera’s Journey appeared first on Moringa School.

]]>

As technology accelerates, its ability to uplift many young people and society, in general, grows daily. Software Engineering can be the key to unlocking the potential of our technological age for personal development and the social good. How you may ask? Meet Stella Waithera – in today’s blog post she shares her journey from learning how to code, working on world-class projects, and her passion for social impact, and how she leverages her skills to solve problems facing our continent today. Enjoy the read!

Name – Stella Waithera

Job Title – Founder and digital skills trainer 

Company – AfricanTechGirl Organization 

Tell us about yourself. 

I’m a multi-faceted woman in tech I say this because I double up as a Software Developer, Digital Skills Instructor, and Philanthropist. I’m 29 years old and I live in Kiambu, Nairobi Kenya. For a living, I work as the Founder and digital skills trainer at AfricanTechGirl Org – where we impart programming skills to children and teenagers. I also work as a consultant software developer at Kayana Create.

What do you do at your place of work?

    At AfricanTechGirl I create systems and curricula that empower and educate the African child with skills in STEM from the age of 7 -17  years. At Kayana I build software solutions that serve business needs.

    What made you consider a Software Engineering Course at Moringa?

    It was a combination of initiatives I had already started on my own as well as a recommendation from a friend. Before joining Moringa I was pursuing a degree in Mathematics and Computer Science at JKUAT and I had done some online courses in programming by Andela. A good friend who was a student at that time in Moringa urged me to consider applying as a MasterCard Scholarship participant in Moringa school like she had and that was my introduction to Software Engineering and Moringa school. 

    How was your experience at Moringa? 

    It was awesome. It changed my life for the better in areas such as how I manage my time, my mentality, how I handle challenges, how I learn, how I ask for support, and most importantly, how I practice grit.

    How was the learning model from what you had been exposed to?

    It was revolutionary and practical which I appreciated. I also learned how to learn. Since then I have upskilled in various skills successfully and effectively. I am actually about to start my Masters soon and that learning model played a major role in getting me here.

    How has your career trajectory been since you completed your training? 

    I started my career two months after I joined Moringa. Because of the Mastercard Scholarship, I was able to focus on learning and it was at a time when schools were on lockdown due to Covid-19. Moringa had swiftly incorporated remote learning and as I was upskilling, many students across the country lacked such an opportunity.  I then thought of how I could give back to the community and that’s when I started training programming for individuals aged 7 – 17 years online. I was able to successfully train 50 kids from different parts of Africa such as Ghana, Nigeria, and Zimbabwe in the first open call. With that, AfricanTechGirl came into being. In my Software Engineering journey, I have worked with a global team in Dubai and now I’m working in Kenya as a developer at Kayana Create. My next goal is to learn and incorporate Data Science. In conclusion, my career trajectory has been growing in different tech skills through upskilling and practice.

    How did Moringa help you in getting into your career? 

    Moringa equipped me with skills that were relevant to the industry. For example, we were utilizing Django for the global role in Dubai, a framework I had been exposed to in Moringa. It is in Moringa that I received guidance on how to learn by myself, a skill that came in handy in roles that required me to build solutions in a programming language I had not been previously exposed to such as JavaScript.  For example, I learned ReactJs while on the job. At the moment, I’m learning Data Science, and the ability to do all this is owed to my training Moringa.

    What advice would you give anyone who wants to join or transition to tech? 

    Tech has amazing opportunities that require consistent effort and time to become excellent. It is helpful to find a community and a network of developers you can learn from and grow with since this journey can be isolating. Lastly, find activities that make you feel alive and mentally refreshed since tech uses up a lot of your brainpower.

    Apart from coding, what do you enjoy doing in your free time?

    I enjoy nature walks, being around my friends, and spending time with my mother.

    Are you open to tech mentorship? How can one reach you?

    I am open to mentorship. I am currently mentoring several individuals.  One can reach me via email at waitherastellam@gmail.com with regards to AfricanTechGirl email me at enroll@africantechgirl.org 

    The post First Software Engineering Role at a Company in Dubai & Social Impact Projects – Stella Waithera’s Journey appeared first on Moringa School.

    ]]>
    https://moringaschool.com/blog/first-software-engineering-role-at-a-company-in-dubai-social-impact-projects-stella-waitheras-journey/feed/ 0
    From Project Coordinator in Agri-Business to Software Engineer at Amazon Web Services (AWS)- London https://moringaschool.com/blog/from-project-coordinator-in-agri-business-to-software-engineer/ https://moringaschool.com/blog/from-project-coordinator-in-agri-business-to-software-engineer/#respond Mon, 26 Sep 2022 15:03:07 +0000 https://moringaschool.com/?p=3519 Meet Moringa School Alumnus and now a Software Engineer at Amazon Web Services (AWS) – London, Justus Mbaluka. He holds a Bachelor’s Degree in Agri-business Management from the University of Nairobi and a Software Engineering certificate from Moringa School. Justus, 31, started his career as a project- coordinator in an Agri-business startup in Nairobi Kenya. […]

    The post From Project Coordinator in Agri-Business to Software Engineer at Amazon Web Services (AWS)- London appeared first on Moringa School.

    ]]>

    Meet Moringa School Alumnus and now a Software Engineer at Amazon Web Services (AWS) – London, Justus Mbaluka. He holds a Bachelor’s Degree in Agri-business Management from the University of Nairobi and a Software Engineering certificate from Moringa School.

    Justus, 31, started his career as a project- coordinator in an Agri-business startup in Nairobi Kenya. He reckons most of his tasks were manual and he had a desire to automate. Motivated by the work of Software Engineers in his then company, he grew a gravitating interest in understanding what software development was all about. He spent time quenching his curiosity to which he says “It was fascinating what you could achieve given a blank code editor. I was hooked.”

    He was eager and ready to take his career to the next level. In pursuit of education in software development, Justus wanted to enroll for a second degree in Computer Science. However,after doing some research on the options available, he opted to join a Tech Bootcamp, this led him to join the Moringa Software Engineering Bootcamp. He graduated from the program in 2015 and spurred his career as a software engineer in companies such as MFarm in Kenya, Samasource in San Francisco Bay Area, Ligo BV in Amsterdam, Netherlands and Microsoft prior to his role at Amazon Web Services. 

    Today, Justus lives and works  in London after relocating from Kenya. Here he pens us his inspiring story:

    What do you do at your place of work?

    I am not so sure about how much I can share yet but in a nutshell, I build microservices using Java and AWS cloud. 

    What is your background and experience, and what led you to Software Engineering?

    I graduated in 2015 from University of Nairobi (UoN) with a non-tech related degree. Back at MFarm, where I was working as a jack of a few trades, some of my daily tasks were manual. I felt like we needed to automate most of it. It is also during this time that I interacted with our then engineers and got to understand what software engineering was all about. It was fascinating what you could achieve given a blank code editor. I was hooked. I was to go for a computer science degree but then my friend advised me against it and said we could definitely find a shorter path to join the tech world. That’s how I ended up in Moringa school.

    How did you learn about Moringa and what was your experience?

    I learned about Moringa through a friend. She mentioned to me she had met Audrey Cheng who was starting a software engineering bootcamp which I might find interesting. I decided to give it a try. In all honesty, my experience was brutal at first then I got used to it. There was so much to learn in a very short period of time, especially with the fact that I studied Agribusiness Management in my university degree. I made great friends there which made transitioning to software engineering worthwhile.

    What advice do you have for other people thinking about making a career change and attending a bootcamp?
    First of all, find a business challenge you need to solve and understand it well. I knew what problems I needed to solve first before I started programming. Focus on learning software development skills that help you solve that challenge. Find a mentor who understands the industry well. I was lucky to have 2 senior engineers to reach out to when starting. After you transition, learn computer science fundamentals. This is very important. You need to understand how a computer works and how it talks to other computers. Read other engineers’ code and make sure to understand it. You will be in an industry with other smart fellas who understand how computers work hence you might need to put some extra effort in learning. Focus on being impactful on the onset and document your progress, you will need it to land your next job. Develop the discipline needed to do this everyday.

    What was the learning experience like at Moringa?

    Again, I’ll say it was kind of brutal and very effective at the same time. I was in the second cohort. There were only 11 of us. I remember, we used to get staff from the companies hosted in the same building where we had our classes come to us with real problems for us to solve for them. With that approach, you had a clear problem to solve and you would research and learn programming needed to solve the problem. That accelerated our learning process as we built programs from the onset. I can’t describe the feeling well on this one. Think of it as being thrown in the deep end without prior swimming lessons. However, this is short-lived because as it has turned out, building software products is quite fulfilling. 

    How has been your career trajectory and how did Moringa help you in getting into your career?

    The bootcamp and learning experience gave me the kick I needed to fully dive into the software industry. As mentioned, the learning model depicts everyday software engineering  approaches. You get a problem to solve, you spend time understanding the problem, then solve it. And in the process of doing so, you learn how to code. After my undergraduate graduation, I have managed to collaborate with brilliant minds across the globe in the software industry. So, I would say my career growth path in the last 7 years has been fantastic. 

    Apart from coding, what do you enjoy doing in your free time? What would you like to tell us as your parting shot?
    I enjoy playing football and spending time with family and friends. I would tell everyone reading this that everything we do starts in the mind. Having the correct mindset is key. With a growth mindset, you can build your desired future. 

    You can reach Justus for some advice through his Linkedin account here

    Have you been inspired? Ready to launch a career in tech for yourself? Make that bold yet rewarding move today! Apply now & join our software engineering bootcamp this November.

    The post From Project Coordinator in Agri-Business to Software Engineer at Amazon Web Services (AWS)- London appeared first on Moringa School.

    ]]>
    https://moringaschool.com/blog/from-project-coordinator-in-agri-business-to-software-engineer/feed/ 0
    6 Steps to Become a Software Developer in 2021 https://moringaschool.com/blog/6-steps-to-become-a-software-developer-in-2021/ https://moringaschool.com/blog/6-steps-to-become-a-software-developer-in-2021/#comments Mon, 06 Dec 2021 09:54:47 +0000 https://moringaschool.com/?p=965 Becoming a software developer is much more than just sending a CV to get your next job, it’s all about how you package yourself. Many junior developers often yearn to become visible experts in their field but get lost in finding the right process to adapt. This article will take you through 6 simple steps to becoming a software developer in 2021.

    The post 6 Steps to Become a Software Developer in 2021 appeared first on Moringa School.

    ]]>

    Becoming a software developer is much more than just sending a CV to get your next job, it’s all about how you package yourself. Many junior developers often yearn to become visible experts in their field but get lost in finding the right process to adapt. Generally, there are three distinct fields in software development; front-end, back-end, and full-stack developers with one primary goal: to design software or digital applications that empower users to accomplish a specific task.

    One dominant aspect of technology is constant changes and developments, which makes the field competitive thus the process of becoming a developer guru. This article will take you through 6 simple steps to becoming a software developer in 2021.

    1. Understand the field of software dev.

    I know you expected to begin with a technical step. Not really! It all starts with the mind trying to acknowledge the field of software development. This is where you will nurture your passion for the career and keep you going. It’s important to understand the different roles of a developer, which projects and industries you will work in, the required skill sets, the different opportunities, and the challenges you will encounter during your career. You also need to establish trending technologies in software development and choose the platform for which you want to create software. With all these, you will be having the right mindset to get you started in becoming a software developer.

    2. Determine the best programming language to learn

    Depending on the three career paths in software development (front-end, back-end, and full-stack), you need to establish the best language to learn. A front-end developer needs to master HTML or CSS, JavaScript, and jQuery while python, SQL, Node.js, and Django are vital for a back-end developer. A full-stack programmer will have to learn both languages. The programming language will also depend on the type of project you are working on. For example, in in-game development, C++ or C# are key languages while in web development you should learn HTML, CSS, and JavaScript.

    3. Train for the real world

    Having chosen the right programming language, it’s time to dive into learning them all as you master one. One trick to becoming a tech guru is to master one programming language and understand the rest. Enroll in a software development course at the best institution of your choice. I would recommend Moringa School which emerged as winners at the just concluded Kenya Edtech Summit & Awards 2021 and has been impactfully dominating the tech space.

    If you are beginning from scratch, get familiar with the basics of the programming language as you proceed to the core. Amazingly, there are many available free and paid resources online which will help you in becoming a great developer. These range from books, video tutorials, and online learning platforms. You should aim to learn theory and get practical exposure within the shortest time possible.

    4. Start creating your application

    Now that you have gained the right skills, it’s important to start building on your own self-driven projects. These projects aim in solving vast real-world problems. If you still have no idea of which applications to work on, there are many accessible resources online to get you started or you can build a replica of popular applications. Through this, you will be able to actualize your theoretical understanding of the skills gained into practical knowledge. You will also be able to increase your visibility to potential employers by showcasing what you can offer to them.

    5. Join the right tech communities and make good use of them

    Your network is your net worth! Identify the right tech circles, be part of them, and build meaningful connections alongside getting community support. By making connections with other software developers, you will develop a greater understanding of your craft and establish areas to improve on. The large talent pool support is also vital in reference whenever you are encountered with bugs in your application that you are unable to solve. You might also get a connection to job opportunities and get inspired by other developers.

    6. Start job hunting

    Finally, I believe that you are a good software developer and ready for the market. You can either work as a freelance software developer, work for a company, or form a startup and build your tech business. There are many opportunities for you to earn a living as a developer, all you need is to be a go-getter.

    In conclusion, practice makes perfect! Keep on improving your skills to remain relevant in this constantly changing digital era.

    The post 6 Steps to Become a Software Developer in 2021 appeared first on Moringa School.

    ]]>
    https://moringaschool.com/blog/6-steps-to-become-a-software-developer-in-2021/feed/ 1