Breaking into Tech

Breaking into Tech

Author: Sharon Leah | Credits: Cover Photo by Dennis Anderson on Unsplash

ManTalk Worldwide in partnership with the TechKln Community held an informative zoom session discussing various topics in tech. The session hosted experts in the industry to talk about their fields of expertise in tech, to give a direction to those wanting to know more, and on how to break into the tech industry. As it is always said, you know one is an expert in a subject matter if they relay information about it in the simplest and easily understood way possible; and we believe they did.

As a TechKln community member, these are my takeaways of the session: -

Topic 1: Tech Digital Literacy

by Stanley Ndagi, Software Engineer & Technical Copywriter

One is considered literate on a subject if they have the 'know-how’ on the subject. And in technology, it's termed digital literacy. Assessing your literacy level is the first step to beginning your journey in the tech industry. Below are well elaborated digital literacy levels to guide the assessment.

  1. NOOB – An inexperienced person or a newbie

  2. Consumer – Uses Technology comfortably for example phones, laptops. They can at some point be opinionated about different technologies.

  3. Enthusiast – Opinionated on specific areas in tech and well informed on trends.

  4. Tinkerer – Very curious and well informed on the tiny details of an aspect in tech.

  5. Advanced – Understands an aspect well enough and can create configurations.

  6. Creator – Uses technology to create consumables such as websites, mobile apps.

Topic 2: Where and How to Begin should you want to be a Programmer

by Winnie Rotich, Ruby Engineer

There are countless myths around 'being a programmer' which instil fear unto those who want to pursue this path in tech. The myths include; you need to be a genius to code, coding is boring, you need to be good at math, it’s too late to learn to code, all programmers are nerds and lonely people, women cannot write good code, you should have learned to code much earlier e.g., in high school, etc. All these are untrue and anyone can be a programmer.

So how do you begin coding? First, by learning the art of researching. Researching and making the internet your friend is key in this career path which will help in problem-solving. Secondly, you need to understand what programming is. Just like venturing into any field, knowing what you are getting into is key. Third, you have to have a clear intent of why you want to be a programmer. Is it for the money? To challenge stereotypes? For fun? Lastly, lay down the foundation by learning the basics of programming. These basics cuts across all the programming languages.

Next; with the basic knowledge, you need to pick your path e.g., Front-end, backend, DevOps, Mobile, games. Then find resources that match your selected path. YouTube, courses platforms such as Udemy, and programming platforms are great options. After that, get a support system for example communities, mentors, friends, and forums. Lastly, go beyond the basics to challenge and practice what you have learned for example by taking on projects and participating in coding challenges available on platforms like HackerRank.

Coding is hands-on, one needs to practice while they are learning. You can be intentional about this by setting milestones and working towards achieving them. Having required tools such as a good computer is essential as well.

Topic 3: Technical Aspects of Creating Software

by Duncan Muraya, Software Engineer & Consultant

In creating software, the use case of the software has to be laid out well. What are the targeted users? How frequently should the users access the solution? How much data should they be given access to? These factors taken into consideration will help determine which platform the solution will be hosted on. For example, the web platform holds solutions accessible via browsers, mobile platforms, providing instant access via a mobile application among other platforms.

Factors such as the scalability of the software have to be considered as well to cater to future needs. Depending on the type of software solution to be developed, from simple to very complex, the languages and infrastructure used in developing these applications are chosen.

Lastly, the standard and security of the data in these applications must also be taken into consideration to ensure data safety and no nefarious data manipulation.

Topic 4: Skill Development, Academics & Career Progression

by Anthony Mwawughanga, Senior Software Engineer & Payments Engineer

Skill development is key in the software engineering field. These are ways on how to sharpen your skills as a software engineer:

  1. Practice! Practice! Practice! – this cannot be stressed enough. The more you practice a new concept the more confident you become. As an engineer, you can do this via various online platforms available e.g., HackerRank.

  2. Learn from good programmers – good programmers can be found through tech communities, friends, and mentors. The advantage of learning from them is that they will give you an easy way to understand various concepts and also help hasten your learning curve.

  3. Learn the art of code refactoring – performance optimization is key when writing good code. As you increase your knowledge, let your code reflect your growth. The advantage of refactoring your code is that it helps you analyze what you have been learning. You also get to review and find better ways of writing existing code.

  4. Read books on code quality, software methodologies, architecture, and system designs.

  5. Make sure you have the correct knowledge to apply to the problem at hand.

  6. Lastly, gauge yourself by attending technical interviews.

On Academics, computer-related undergraduate programs can prepare anyone to take on tasks in the programming field. Some of the key areas to keenly take on with importance include:

  1. Data Structures and algorithms – Be well acquainted with how they work, where to use them, and their shortcomings.

  2. Time and Space Complexities – These affect the overall performance of a program.

  3. Resource Management - This helps determine a language and appreciate how the declaration of variables affects resources.

  4. Application Security – This enables you to code with security in mind

  5. People Management skill – This can be learned anywhere but it's essential in your interactions as a developer.

Lastly,

Should I do a master’s degree or a certification?

Master’s and certifications do complement each other and substitution of one for the other may not be the best decision. Master's are in-depth programs that demonstrate mastery of a field while certifications are shorter programs of study but very focused.

Depending on path you are on or have chosen, either will be of advantage to you. For example, in the security field, choosing certification over a master's degree with enable you to be more specialized, but the master's program will allow you to lead especially in large organizations where the security role spans beyond the technical aspect.

Career progression can follow these two distinct tracks:

  1. Individual Contributor

    Software Engineer -> Senior Software Engineer -> Principal Engineer -> Architect -> Senior Architect

    Note: With accessible resources e.g., AWS certifications, one can easily move from a senior software engineer to an architect.

  2. Management track

    Senior Software Engineer -> Technical Lead -> Engineering Director/ Head of Engineering -> CTO (Chief Technology Officer).

As one progresses, the level of complexity of the problems they solve also increase, therefore it is paramount to continuously grow in:

  1. Professional Character

  2. Independence – How well you can contribute with minimum or no supervision.

  3. Personal Growth Focus – Identifying which growth focus is of importance to you.

In conclusion, the following patterns hinder the growth of software engineers:

  1. Poor Code Quality, with no effort to improving the code quality.

  2. Failure to communicate when stuck

  3. When in leadership; inability to delegate tasks to your juniors and spending too much time chasing new technologies to feed their ego.

Topic 5: Quality Assurance & Product Delivery

by Lewis Munene, Quality Assurance Lead & Software Engineer

Quality Assurance is a part of software engineering. It aims to assure the user that the software being developed meets the expected level of excellence and that it serves its intended purpose well. Quality assurance cuts across the entire software development process, and should not be reserved for the final phase(s). The people majorly involved in quality assurance are Software Testers, Test Analysts, Test Engineers, and Test Managers.

As some software problems are very costly; ensuring the quality of the software should be exercised by all the stakeholders in the software being developed. The responsibility is not equal for everyone involved as some have a higher responsibility than others e.g., the software developers, designers, and testers.

On product delivery, there are two types of products; products developed via contracted work and independent products developed by individual software engineers. Depending on the type of product being developed, the measure of quality varies:

  1. For products developed under a contract, the contractor has their end-user metrics, and the software will not be released until it goes through a UAT (User Acceptance Testing) process.

  2. For individual products where the developer is the principal stakeholder, you need to have your UAT, and, it is important to note that the software doesn't have to be perfect to be released. As long as it covers the end-to-end user requirements, it is ready for delivery to be used and other improvements can be done later.

Lastly, quality assurance is not only done by non-programmers as others tend to believe. It is much more preferable if it is done by software engineers as they have an understanding of the software being developed.

Topic 6: Security, and Tech Leadership

by Martin Mwangi, Technical Solutions Lead & Cyber Security Consultant

Security covers all aspects of the technology domain. For instance:

  • Information security focuses is on securing processed data

  • Computer security focuses slightly on software but mostly hardware

  • Data security focuses on securing raw data

  • Network security focuses on securing the interconnection of devices

  • Lastly, Cybersecurity deals with protecting users in cyberspace and also expands to protect their vulnerability.

So how can you get into cybersecurity?

In whatever domain you are in, in the technology field, be it a network, database administration, or programming among others, as long as you are working with security in mind you are at the starting point of getting into cybersecurity. You now need to put in more time and effort.

Career opportunities in cybersecurity in respect to some of the IT domains

  1. In Network/ Information security, one can specialize in vulnerability testing, penetration testing, and network audits.

  2. As a software developer who is familiar with databases, you can specialize in vulnerability testing, penetration testing, database audits, web application audits, and assessments. You can also take part in bounty programs such as security researching, offered by some companies. Aside from all these, you can create security tools.

  3. For tech enthusiasts mostly those who understand technology and risks but do not write code, you can get into systems audit. This is through undertaking the CISA certification. You can also venture into Risk management focusing on overall software/ system risks. Lastly, you can focus on incident response and forensic by doing the CHFI certification and specialize in areas like email forensic, network forensic among other errors that can be a subject of vulnerability.

Topic 7: Research, Industry

by Sharon Okwomi, Data Scientist & Researcher

Being in a data-driven generation, pursuing a career in this field either as a data analyst, data engineer, or data scientist is a great idea. To differentiate these titles; a data analyst works with data to provide or feature insights, a data scientist interprets the analyzed data, and a data engineer builds systems that allow the data scientists to interpret the data.

To pursue a career as a data scientist you have to be good at mathematics and programming. They do use tools such as algorithms to interpret data, and Python and R programming languages. For example, analysis done by financial institutions before they offer loans and loan limits is based on different data such as location, personal contacts, credit scores, and social media interactions of the subject.

In research, there is the application of data science majorly in Machine Learning (training a machine to 'think' (draw conclusions) based on various data). To become a researcher in the AI space, having data science knowledge is very critical.

In conclusion, anyone can be a researcher, but to be a research analyst you must have studied to at least a PhD. level of education. There are also available free certifications in this field, and most researchers have used these in pursuit of this path.

Conclusion

This webinar, so summarized here, is intended to be a first in a series to get people up to speed with the tech space and its professional and application landscape. Hopefully we'll have summaries of the sequels published here.


The author, Sharon Olang is a software engineer. She is passionate about solving problems: from theoretical (in Mathematics) to programming solutions, recently using Flutter. She advocates for doing things well. Find her on Twitter and Hashnode.