Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 26

Student: Mohammad Abadi

Teacher: Issa Wazwaz


Unit 9: working environment
Introduction:

What is work experience? Work experience is when you gain practical wisdom from an
employer by learning about a particular role, organization, or career path. Most employers
also consider volunteering work, work shadowing, or internships as work experience.
When to do work experience
Work experience is important for getting into any career. Having some can make you stand out
from the crowd on applications for courses, training, and jobs.
Work experience can be useful for anyone of any age and at any stage of your career. It can
help you to gain skills and decide what to do if you are:

 out of work
 changing career
 looking for your first job
 returning to work after a break
Most work experience is unpaid, but there are some opportunities where you can earn money.
Why work experience is important
Choosing what to do in your career may seem easier if you know what you want to be in the
future. You can look for opportunities that will help you to develop skills for that career. This
could be through:

 a work placement
 an internship
 a shadowing opportunity
 virtual work experience
It's an opportunity for you to:

 test out your career ideas


 improve your skills
 show your commitment and enthusiasm
If you do not know what job you want, or you cannot get your perfect placement, any work
experience is better than none. Whatever job you try, you’ll learn more about yourself and your
working life.
You'll also gain skills in the process. It may even lead to a more suitable experience with the
same company. It could be good preparation for another opportunity that’s closer to what you
want to do.

Engineering offers a vast array of career paths, each with its own set of challenges and
opportunities. This report delves into Mechatronics Engineering and Software Engineering, two
dynamic and interdisciplinary fields shaping the future of technology and innovation.

Mechatronics Engineering:
Justification: Mechatronics engineering is a multidisciplinary field that integrates mechanical,
electrical, computer science, and control engineering principles to design and create intelligent
systems and products. My interest in robotics and automation, coupled with a fascination for
how machines interact with their environment, has drawn me to this field. Additionally, the
opportunity to work on cutting-edge technologies like artificial intelligence and machine
learning within the context of physical systems is highly appealing.
Software Engineering:
Justification: Software engineering encompasses the design, development, testing, and
maintenance of software systems. My passion for problem-solving, logical reasoning, and
creativity in designing software solutions has led me to pursue this field. Moreover, the ever-
evolving nature of technology and the vast opportunities for innovation and entrepreneurship
in software development are key factors driving my interest in software engineering.

Technical Skills:
1. Programming Languages: Proficiency in programming languages such as Java, Python,
JavaScript, and C++ is essential for software development across various platforms and
domains.
2. Software Development Methodologies: Knowledge of agile, waterfall, and DevOps
methodologies is crucial for managing software projects efficiently and collaboratively.
3. Database Management: Understanding of database systems and SQL is necessary for
designing and managing databases to store and retrieve data efficiently.
4. Web Development: Skills in web development frameworks like React, Angular, and
Django enable software engineers to create interactive and scalable web applications.
5. Software Testing: Expertise in testing techniques, tools, and frameworks such as
Selenium and JUnit is vital for ensuring the quality and reliability of software products
through comprehensive testing.
6. Version Control Systems: Proficiency in version control systems like Git is crucial for
software engineers to manage changes to source code efficiently, collaborate with team
members, and track the evolution of software projects over time.
7. Cybersecurity: A mastery of cybersecurity practices such as encryption techniques,
penetration testing, and protocols, is critical in ensuring that software is secure from
cyber-attacks.
8. Cloud Computing: Understanding cloud platforms like AWS, Azure, and Google Cloud is
essential for deploying and maintaining workable and resilient software on the cloud.
9. Mobile Development: skills in mobile development frameworks like Swift for iOS and
Kotlin for Android are useful for mobile app development that is capable of offering
uninterrupted user experiences across different devices.
10. Machine Learning and AI: Knowledge of machine learning algorithms, neural networks,
and AI technologies empowers software engineers to build smart software with the
capacity to learn from data, make predictions, and automate tasks.

Job Opportunities:
 Industry Trends: Current trends in software engineering include the adoption of
microservices architecture, containerization with Docker and Kubernetes, serverless
computing, and the use of AI and machine learning for intelligent software applications.
 Demand: The demand for software engineers is consistently high across industries such
as technology, finance, healthcare, and e-commerce, driven by the increasing reliance
on software-driven solutions and digital transformation initiatives.
 Growth Potential: Software engineering offers immense growth potential, with
opportunities for specialization in areas such as artificial intelligence, cybersecurity,
cloud computing, and mobile app development. The rise of startups and tech companies
also provides avenues for innovation and career advancement.
 Remote Work: The growth of remote working possibilities has blurred the borders,
allowing software engineers to join international teams and contribute to the game
globalization process instead of staying in one place.
 Freelancing and Gig Economy: Software engineers may utilize platforms such as Upwork
and Freelancer to accept freelance jobs and gigs on a flexible basis, allowing them to
have their schedules and projects.
 Cross-Disciplinary Roles: The melding of technology with other sectors like health care
(health-tech), finance (fintech), and teaching (ed-tech) has broadened the horizons of
software engineers towards transdisciplinary roles that blend technical know-how with
domain knowledge.

Challenges and Future Outlook:

 Software engineering faces cybersecurity threats, software complexity, and ensuring


scalability and reliability in large-scale systems. However, technological advancements
like AI, blockchain, and quantum computing offer new possibilities for addressing these
challenges and driving innovation in software development.
 Ethical Considerations: With the development of technology, software engineers meet
the ethical dilemmas on issues of privacy, bias in algorithms, and AI usage, creating a
necessity for them to emphasize ethical deliberations in their work.
 Environmental Impact: Such as the increasing demand for computing power and storage
of data in the software engineering process is a major environmental issue, the practice
of sustainability should be taken into account as an essential element in software
development.

Choosing a major
Software Engineering
Software engineering is the branch of computer science that deals with the design,
development, testing, and maintenance of software applications. Software engineers apply
engineering principles and knowledge of programming languages to build software solutions for
end users.
Software engineers design and develop computer games, business applications, operating
systems, network control systems, and middleware—to name just a few of the many career
paths available.
A career as a software engineer can be both fun and challenging with opportunities to work in
almost any industry, including large and small businesses, government agencies, nonprofit
organizations, healthcare facilities, and more. And as technology continues to evolve, the need
for software developers continues to grow. Many companies are also shifting towards hiring
software engineers who work from home, allowing for increased flexibility and more
opportunities to enter the field.
Personal reasoning for choosing software engineering
Software engineering is a term that covers the aspects of the work that include designing,
development, testing, and maintenance of software. A native talent for problem solving,
analytical thinking, and creativity has driven me to be a software problem solver. Additionally,
the technology keeps changing and software design has many possibilities of innovation and
entrepreneurship that makes software engineering an attracting field for me.

What Tasks do Software Engineers Do?


Day-to-day tasks for a software engineer might include:

 Designing and maintaining software systems or applications


 Evaluating and testing new software programs
 Optimizing software for speed and scalability
 Writing and testing code
 Ensuring platform compatibility
 Creating and enforcing IT standards within an infrastructure
 Maintaining documentation of IT systems
 Releasing software updates
 Collaborating with development teams, senior systems architects, and data science
professionals
 Consulting with clients, engineers, security specialists, and other stakeholders
 Recommending software upgrades for existing programs and systems
 Presenting new features to stakeholders and internal customers
Common job titles for software engineers include:

 Applications Architect
 Applications Developer
 Computer Applications Engineer
 Database Administrator
 Mobile Developer
 Program Manager
 Programmer
 Project Leader
 Quality Assurance Analyst
 Software Engineer
 Software Quality Engineer
 Systems Analyst
 Systems Developer

Talking about chosen jobs


Systems Developer
Systems development is the process of defining, designing, testing, and implementing a new
software application or program. It could include the internal development of customized
systems, the creation of database systems, or the acquisition of third-party developed software.
Written standards and procedures must guide all information systems processing functions.

 Responsibilities: The job of the systems developers comprises all the stages from the
beginning to the end of software development, such as requirements and
implementation. They develop and design software applications, which are adjusted to
the exact requirements of the organizations. It might need to design database systems,
implement internal systems of workflow management, or fuse third-party software to
the existing systems.
 Skills Needed: Understanding and mastery of programming languages like Java, Python,
or C++, and capabilities to deal with database management and system architecture, are
indispensable for systems developers. In addition, they must possess analytical skills and
the capacity to translate business requirements that are complex into technical
solutions.
 Standards and Procedures: Developers of systems must comply with written standards
and procedures throughout the whole development process to protect consistency,
quality, and safety in systems.

Applications Developer
An Application Developer translates client requirements into application features and ensures
the timely delivery of fully functional software applications. They are responsible for
understanding client needs, designing prototypes, writing code, performing testing, and
maintaining technical documentation.

 Responsibilities: Developers typically specialize in implementing clients' demands by


programming functional software. A team of developers is responsible for collaborating
with clients to define specific needs, making app prototypes, writing code, testing
software, and delivering working applications on time. Application developers may
specialize in building web apps, mobile apps, or desktop apps.
 Skills Needed: Application developers must be knowledgeable in programming
languages like JavaScript, Python, or Swift, however, it depends on the platform they are
developing for. They must also possess good communication skills that will enable them
to work with clients and other teammates closely and be careful with the quality of
work.
 Documentation: Keeping technical documentation is an important task for every
application developer. This document gives essential information about the
application’s architecture, functioning, and maintenance requirements.
Programmer
Programmers write code for computer programs and mobile applications. They also are
involved in maintaining, debugging, and troubleshooting systems and software to ensure that
everything is running smoothly.

 Responsibilities: In general, programmers are the people who write code for computer
programs and mobile applications. They translate software designs into executable
code, debug and troubleshoot system and software issues, and make sure that they are
running smoothly. Programmers may further find themselves doing the job of
maintaining and updating existing codebases whereas new functionalities are
introduced or bugs are fixed.
 Skills Needed: Developers should know the languages that apply to the different
projects that they are working on, which include Java, Python, and C#. Additionally, they
need to have strong analytical and problem-solving abilities for rapid identification and
clearing of programming errors. Similarly, the knowledge of these tools like git and team
environment cooperation is helpful for the programmers.
 Continuous Learning: As technology keeps changing at lightning speed, a programmer is
required to regularly enhance his knowledge to coincide with the new coding languages,
frameworks, and software development standards.

The skills needed in each job


Systems Developer:
Technical Skills:

 Application Architecture: System developers' practical experience allows them to apply


theoretical knowledge of system architecture and design principles directly in working
environment. They are for example ready to make and implement scalable and efficient
software systems with appropriate architectural patterns.
 Programming Languages: The systems developers can develop programming skills by
working on projects that utilize Java, C#, or Python languages that are widely used for
system development.
 Database Management: They are going to master these skills by working with database
design, implementation, and optimization technology using SQL and NoSQL databases.
 Integration Techniques: Using experience in combining different type of software and
components, their interconnection is been ensured.
 Testing and Debugging: Practical use of software testing approaches and debugging
skills to obtain reliable and working systems in the end.
Project Management:

 Requirements Gathering: The project owner, for example, as well as the other systems
developers, may be a part of the process of gathering and analyzing the project
requirements, as in this way the project objectives will be aligned with the clients'
needs.
 Task Planning: Experience how to divide the duties of the project into small parts,
determine the time and resources necessary for each part.
 Collaboration: Working together with teams, organized to provide support, and
communicating progress and difficulties.
 Documentation: Managing and updating design documents, including users manuals,
technical documentation, and technical specifications.
 Quality Assurance: Involvement in quality assurance processes, including code reviews
and testing, to be in line with the mission to get best software systems.
Communication Skills:

 Client Interaction: Communicating with clients through various means, ensuring they are
informed about the milestone, and acquiring their input.
 Team Collaboration: Effective communication within the team is an important
determinant of the success of a group or a team, which involves sharing ideas,
teamwork and problem-solving, as well as decision-making.
 Presentation Skills: Presenting project proposals, design concepts, and project
deliverables to clients, stakeholders, and project teams, as well as running project
meetings and workshops.
 Technical Writing: Creating effective and understandable technical documentation,
which incorporates design documents, user manuals, and technical reports
Applications Developer:
Technical Skills:

 Software Development: Software Applications may be developed in programming


languages including Java, JavaScript, or C++, with the application of software
engineering principles and best practices.
 Front-end Development: Creating and implementing user interfaces by utilizing HTML,
CSS, and Javascript frameworks like React or Angular.
 Back-end Development: From implementing server-side logic, databases, and APIs using
languages like Node.js, Express, and MongoDB to creating mobile and web apps that tie
into the backend infrastructure.
 Mobile Development: Skill-wise, I have hands-on experience in creating mobile apps for
Apple iOS or Android using languages such as Swift or Kotlin and frameworks like React
Native or Flutter.
 Testing Frameworks: Familiarly with testing frameworks like Jest or Selenium for
conduction of automated testing and code quality maintenance.
Project Management:

 Requirement Analysis: First would be to analyse the client's requirements and transform
them into the technical specifications and project scheduling.
 Timeline Management: Developing expected timelines, setting milestones and
monitoring progress as key factors in delivering software on time.
 Resource Allocation: Allotting resources judiciously, encompassing human resources,
budget and technological foundation, in order to achieve the objectives of the project.
 Risk Management: To identify the risks and devise a plan to avoid the disruption and
delay of projects, potential risks, and mitigating strategies.
 Client Communication: Keeping in touch with clients, through providing updates on the
progress of the project, addressing any issues which might arise, and soliciting feedback.
Communication Skills:

 Client Engagement: Establishing good relationships with clients, figuring out their needs,
and, of course, delivering the project, including its requirements and progress.
 Team Collaboration: Through partnership with various departments, among them
craftsmen, quality assurance and project management, we make sure the functionality
and successful project implementation.
 Documentation: The task requires comprehensive technical documentation, which
encompass design specifications, user manuals as well as release notes.
 Presentation Skills: Communicating progress, demo's and deliverables at clients,
stakeholders and project teams in a well-articulate, engaging and interesting way.

Programmer:
Technical Skills:

 Programming Languages: Proficiency in the linguistic programming languages such as


Java, Python, C++, or JavaScript.
 Algorithmic Problem Solving: Finding out the reasons why things are happening and
using algorithms and data structures to neutralize them.
 Debugging: The experience of debugging and solving errors in software by using tools
and debugging techniques.
 Version Control: Have a good understanding of version control systems such as Git for
make changes and working with other team members.
 Software Development Tools: Integrated Development Environments (IDEs), text
editors, and other development utilities are used for streamlining the coding process.
Project Management:

 Task Prioritization: Ensure that the time frames for tasks are in accordance with the
project requirements, deadlines, and dependencies.
 Time Management: Accounting for task duration and organizing time properly for the
delivery of project deadlines.
 Collaboration: Teamwork with teammates, code sharing and providing feedback and
support are the aspects of the work that I enjoy the most.
 Adaptability: Being able to conform to new project needs effectively and be able to
follow the changing priorities.
 Continuous Learning: It is important to be proactive and take the initiative to
continuously seek new learning and development opportunities in order to keep up with
the evolving technologies and best practices.
Communication Skills:

 Team Communication: Learn to communicate well with team members, discuss project
targets and objectives, show progress updates and ask for help when necessary.
 Problem Explanation: Forgive me, I can't articulate technical issues and solutions in a
clear and brief manner, either verbally or in writing.
 Documentation: Keeping the documentation of the code modifications, the
implementation information, and the problems solving process for later reference and
knowledge sharing will be a great thing.
 Client Interaction: Engaging with clients to collect requirements, offer updates, and
address their concerns along with feedback.
How to improve the skills needed
Systems Developer:
Application Architecture:

 Study Design Patterns: Learn about different design patterns which include MVC,
Observer, and Singleton among others, and see how they can be used in building
scalable and easy-to-maintain software systems.
 Explore Architectural Styles: Learn about various architectural designs such as
microservices and event-driven architecture and then try to decide which architecture
style would be the best match for each of your project requirements.
Programming Languages:

 Practice Coding Challenges: Work through coding exercises on sites such as LeetCode
and HackerRank to enhance programming abilities and to acquire fluency in the
languages used for creating systems.
 Contribute to Open Source Projects: Get practical experience by contributing to real-
world projects that are closely related to systems development, where you can acquire
a wide-ranging expertise.
Database Management:

 Create and Optimize Databases: Build relational or non-relational database models,


become proficient with SQL or NoSQL technology, and design schema, index, and query
for optimal performance.
 Data Modeling: Study the Linked and Unlinked data modeling techniques and be able to
apply them when creating the database structures under various scenario situations.

Applications Developer:
Software Development:

 Contribute to Real Projects: Gain practical experience by joining development teams or


internships, dealing with actual projects so as to grasp the development and
deployment process.
 Follow Best Practices: Apply software engineering practices like modular code,
separation of concerns and clean code principles for properly maintainable and scalable
software solutions.
Front-end Development:
 Build Responsive Interfaces: Take the time to learn HTML, CSS, and JavaScript
frameworks to build responsive interfaces that can adapt to various devices and
browsers.
 UI/UX Design Principles: Apply UI/UX design concepts to design the interfaces that are
user-friendly and visually appealing which consequently result in a better user
experience.
Back-end Development:

 API Development: Specialize in building RESTful or GraphQL APIs to make the


communication between the front-end and back-end systems more efficient, while
considering scalability, security, and performance.
 Database Integration: Incorporate databases with back-end systems so as to make sure
that data is safely stored, retrieved, and modified in an efficient manner.

Programmer:
Programming Languages:

 Language Mastery: Tackle mastery in at least one programming language and stay
competitive in additional language skills, with consideration to the intricacies of
language and idioms.
 Deep Dive into Language Features: Dive into the world of advanced language features
and libraries of your chosen programming languages. Get around with the different
language constructs and paradigms.
 Code Refactoring: Continue writing code by refactoring existing ones to make the
codebase more readable, maintainable, and efficient, using design principles such as
SOLID and DRY.
Algorithmic Problem Solving:

 Algorithm Challenges: Solve algorithmic problems periodically on sites like LeetCode or


Codeforces so as to improve troubleshooting skills and develop algorithmic thinking.
 Data Structures Mastery: Study different data structures holistically to get to know their
properties, operations, and applications to solve problems better and speed up the
algorithms.
Debugging:

 Debugging Tools: Become conversant with debugging tools and the methodologies in
your development environment, including breakpoints, watchpoints, and stack traces.
 Root Cause Analysis: Learn the art of systematic troubleshooting procedures like precise
bug tracing and root cause analysis in stages by looking at code, logs, and system
activities.

Personal Attributes Development:

Adaptability:

 How Work Experience Helps: Working as an engineer in a diverse engineering


environment ensures that an engineer will be faced with different problem solving,
technologies, and team work as he will have to swiftly adjust to unfamiliar situations.
Examples of Adaptability:

 Changing project requirements: The project will encounter unknown or different soil
conditions during the construction process. In this case a flexible engineer would be
capable of adjusting the foundation design in a way that the new information is not
jeopardized as well as the urgency of the project.
 New technologies emerge: Engineers who are open to new developments in software
and hardware can learn quickly to adapt and succeed in new technological advances.
 Shifting client needs: A flexible engineer can adapt to changed client requirements or
feedback by modifying their approach, enabling the fulfillment of customer needs with
the final product.
Resilience:

 Building Resilience: Overcoming obstacles that engineers experience at work helps


develop in them the ability of resiliency through learning how to resume from
challenges and still push on during difficulties.
Examples of Resilience:

 Project delays: An engineer who can adapt in such a way that he can stay calm and
problem-solve when the deadlines have been shifted due to some unforeseen
circumstances. They can be flexible about their approach to the work and manage the
expectations of everyone involved to achieve the goals.
 Technical setbacks: Adaptable engineers are not scared of engineering obstacles. They
can deal with all troubles: from finding solutions to researching until they find an
approach that works.
 Budget constraints: When budget constraints are imposed, innovative engineers can still
develop for their projects by utilizing currently available materials or finding alternative
alternatives.
Creativity and Innovation:

 Encouraging Creativity: The career insight from working experience has the benefit of
encouraging engineers to think creatively and come up with original solutions to difficult
problems. The outcome is a culture of creativity.
Examples of Creativity:

 Sustainable solutions: An adaptable engineer will look at using innovative materials with
a green slant or innovative processes to lessen the environmental impact.
 Improving existing products: They can recognize the drawbacks of existing products and
create new elements that are going to allow improving their functions or making them
user-friendly.
 Brainstorming new ideas: Flexible engineers are proactive in brainstorming sessions,
encouraging outstanding thoughts and out-of-the-box approaches.
Teamwork and Collaboration:

 Importance of Teamwork: There is almost always collaboration between team members


to create a harmonious team, playing on different abilities, and perspectives, versus
being unsuccessful in the end.
Examples of Collaboration:

 Effective communication: Proficient engineers are good at explaining their thoughts


clearly with their colleagues who have the technical backgrounds different from them.
They do more than listen to the perspectives of others; they actually adjust their
method to improve teamwork.
 Resolving conflicts: Adaptable engineers that are the members of the team find
common ground in communication in order to find a solution that benefits the project
and every team member during the conflicts.
 Mentorship and knowledge sharing: Adaptable engineers value of knowledge sharing
together with their colleagues. They may coach new staff members thus creating an
environment for collective mutual learning within the team.
Professional Ethics:
 Understanding Ethics: Working experience makes engineers more acquainted with and
conscious of the code of ethics since they get exposed to ethics-related problems and
learn how to resolve them accordingly.
Examples of Ethics:

 Prioritizing safety: Having to make a compromise, safe engineers will always commit
primary to safety. They can speak for adequate safety procedures and no compromise
on blackmailing.
 Transparency and honesty: Open-minded engineers ensure the transparency of the
project always. They are frank, candid and open about difficulties and restrictions. They
keep the stakeholders updated and informed of the situation, manage the expectations.
 Respecting intellectual property: Flexible engineers will acknowledge and obey
intellectual property rights. They don't use copyrighted materials without getting
permission and they never forget about ethic issues arises when working with external
parties.

Conclusion
I want to be a programmer based on:

 Problem-Solving: The programmers are first of all troubleshooters. if you are the person
who likes solving complex tasks, fragmenting them into small parts and inputting
creativity in the process, then you are suitable for programming as it will give you an
opportunity to utilize your problem-solving skills.
 Creativity: Coding is often presented as a mixture of science and art. Coding involves
logical thinking as well as creativity both of which are important ingredients for the
code. You are provided with a platform where you can construct beautiful applications,
develop cutting-edge applications, and give a physical form to your ideas through the
codes.
 Continuous Learning: Programming space is developing fast, and new codes,
frameworks and technologies are no exception. When you have a true learning interest
and spend your time being up-to-date with the newest technologies, programming
essentially takes you to other dimensions of the knowledge society.
 Versatility: Coding skills are trans-industrial and applicable to all kinds of fields and
industries. Whether you're pursuing mobile app development, web application, artificial
intelligence, or even video game development, programming skills are the gateway to
numerous avenues of career and door for opportunities.
 High Demand: There is a constant demand of skilled programmers who keep getting
more wide and deeper across industries. The tech industry includes major players and
startups as well as non-governmental organizations and other non-profits. These sectors
require technical solutions and software that create many positions for programmers
and others.
 Remote Work Opportunities: Remote work is a good choice for programmers, which can
be carried out anytime and it requires simply a stable Internet connection. Due to
remote working options, the programmers can experience a pleasant work-life balance,
greater work flexibility, and more control over their time.
 Competitive Salaries: More often than not, programmers make high salaries since they
possess specialized skills and are in direct demand in the labor market. Besides,
inexperienced programmers often have plenty of opportunities for growth and
promotion which usually results in an increase in their salary level with time.

How to become an engineer


What qualities do successful engineers have?
 Strong in mathematics and science
 Highly analytical and detail-oriented
 Imaginative and creative
 Good communication skills
 Enjoy working in teams
 Enjoy building or improving the way things work
 Should I earn a master's or doctorate engineering degree?
This depends on your career goals and what area of engineering you'd like to practice:

 Master's programs are designed to expand and deepen the knowledge and skills
acquired as an undergraduate. Master's degree programs in engineering require two
years of full-time graduate study.
 Doctoral programs require five-to-seven years of graduate study, while PhD programs
are generally designed for people primarily interested in research and education in the
engineering field.
As mentioned, to pursue a career as an engineer, a bachelor's degree in engineering or a
related field is typically required. Some engineering roles, particularly in management positions,
may necessitate a master's degree. Specialized engineering degrees can also open doors to
careers in specific fields.

Do I need to be licensed as an engineer?


All states require licensure for engineers who offer their services directly to the public.
Engineers who are licensed are called Professional Engineers (PE). Civil, mechanical structural,
industrial and environmental engineers are most likely to seek licensure because they often
work for government agencies. Computer engineers are least likely to seek licensure.

Although licensure laws vary, most boards require four steps:

 Earn a bachelor's degree in engineering from a school accredited by the Accreditation


Board for Engineering and Technology (ABET)
 Pass the Fundamentals of Engineering (FE) examination
 Complete at least four years of engineering experience
 Pass the Principles and Practice of Engineering (PE) examination

Making an S.M.A.R.T plan on how to become a programmer

Specific:
My goal is to become an all-rounded programmer with working knowledge of languages like
Java, Python, and Javascript, principally on web development and software engineering.

Measurable:
Completing Online Courses or Tutorials:

 Immediately from the first month take up courses in Java, Python, and JavaScript on
Codecademy or Udemy websites.
 Choose a deadline to finish the course of at least one module or lesson per week to
make progress constantly.
 After the sixth month, I expect to have studied intermediate to advanced level
coursework in all three languages, covered data structures, algorithms, and frameworks,
among other topics.
Building Personal Projects:

 Start off by jotting down ideas that fit your interests and learning objectives, for
example, you can create a personal website, a basic mobile app or a software tool that
lets you automate the completion of a task.
 Divide the projects into smaller tasks or functionalities, and establish the milestones and
deadlines for achieving the set goals.
 Dedicate a week each to working on your projects, thus finish at least one project every
four months.
 Keep updating your portfolio with elaborate descriptions and links to achieve projects.
Contributing to Open-Source Projects:

 Start by surfing in GitHub for beginner open-source projects in languages that you're
teaching yourself - like Java, Python, JavaScript.
 Go through the project's codebase, documentation, and contribution guidelines so that
you are well acquainted with them.
 Start small, working on a minor bug, adding documentation or implementing something
as simple as a small feature.
 Try to provide no less than 2 valuable inputs in the next 9 months. Develop your impact
and complexity gradually afterward.

Achievable:
Allocating Time for Learning and Practice:

 Find out time-frames each week that you could utilize for deeply focus study with
coding training and other weekly commitments too, on your schedule.
 Divide the study sessions into short periods with separate activites for each language or
another topic to not being overwhelmed.
 Set yourself a goal for the number of hours per week that you can put into the language
learning process, emphasising the consistency rather than the marathon study breaks.
Utilizing Online Resources:

 Explore and evaluate the most appropriate online courses, tutorials and coding
platforms that meet your learning demands.
 Create a detailed learning plan or syllabus which will lay out the textbooks and the
sequence of the subjects you will study in order to achieve your goals.
 Leverage on free resources like forums, blogging sites, and YouTube videos to
complement your learning process and have a feel of other programming concepts.
Engaging with Online Communities:

 Go to online communities and forums where you could get your questions answered,
seek advices, and networking with other aspiring programmers and experienced
programmers.
 Engage in discussions by sharing your progress on a regular basis and lend a helping
hand to others as often as you can.
 Connect to developers having similar interests or aspirations and there is a chance to
create groups for learners to study together or keep each other accountable with their
learning journey.

Relevant:
Aligning with career goals:

 Think over how programming skill helps you define what you want to become in the
future: software engineer, web developer or data scientist.
 Research your desired roles' job description and requirements for the skills needed for
those positions and the programming languages employers often prefer.
 Let the learning of languages and technologies that are mostly targeted for your target
jobs and industries be your primary focus. Emphasize those skills for would get you a
competitive advantage in the job market.
Enhancing Employability and Career Opportunities:

 Acknowledge the need for programmers in different industries and sectors and get to
know how to make a good impression in the market without a Python degree and
hence, enhance your employability and open doors to diverse career opportunities.
 Follow the latest updates in your field, new technologies are emerging and we need to
include in our learning goals and strategies to keep pace with the changing technology
world.
Leveraging interests and strengths:

 Lean on your existing interests, strengths, and passions so that they serve as fuel for
motivation and engagement with programming.
 Label topics, tasks, assignments, or anything that is attractive to you and it is expected
to motivate you to learn.
 Embark on the chance to test your creativity, logical thinking, and problem-solving skills
when you encounter programming tasks, giving you a sense of accomplishment and
fulfillment.

Time-bound:
Setting Short-Term Goals:

 During the first month, it would be a good idea to learn introductory courses for Java,
Python, and JavaScript. They each include basic syntax, data types, and control
structures.
 By the third month, be ambitious and go for advanced classes that will cover more
advanced topics like functions, classes, and object-oriented principles.
 Create clearly defined milestones and deadlines for completing each course or module.
Probe into your progress and revise your goals if and when it is necessary.
Project Deadlines and Milestones:

 Break down every project down to a smaller task or feature and deadlines, every
milestone must complete.
 Attempt to complete at least one project in the timeframe of four months, this will
involve allocating time on each week to complete tasks and meet your deadlines.
 Schedule a periodic task review, make adjustments on timelines, moving deadlines and
flow of priorities according to your progress and mentors and peers' feedback.
Contributions to Open-Source Projects:

 Focus on developing one substantial contribution to the open-source community within


the first half a year, which is ideally a beginner friendly task.
 A primary goal of the work plan should be to raise the number and difficulty of your
contributions and have the goal of making at least two contributions within the next
nine months.
 Keep track of your personal contributions and development, marking successes while
they come about.
Reference:
https://www.spiceworks.com/tech/it-careers-skills/articles/what-is-mechatronics-engineering/
https://en.wikipedia.org/wiki/Mechatronics
https://uwaterloo.ca/mechanical-mechatronics-engineering/undergraduate-students/future-
students/what-is-mechatronics-engineering#:~:text=Mechatronics%20engineering%20is%20the
%20design,together%2C%20comprise%20a%20complete%20system.
https://www.calu.edu/academics/undergraduate/bachelors/mechatronics-engineering-
technology/what-can-you-do-with-a-mechatronics-degree.aspx
https://www.prospects.ac.uk/careers-advice/what-can-i-do-with-my-degree/software-
engineering
https://en.wikipedia.org/wiki/Software_engineering
https://www.mtu.edu/cs/undergraduate/software/what/#:~:text=of%20software
%20applications.-,Software%20engineers%20apply%20engineering%20principles%20and
%20knowledge%20of%20programming%20languages,the%20many%20career%20paths
%20available.
https://www.indeed.com/career-advice/career-development/software-developer-skills
https://slcontrols.com/en/9-soft-skills-engineers-need-to-maximise-career-success/
https://bootcamp.du.edu/blog/programming-skills/
https://www.indeed.com/career-advice/finding-a-job/application-developer
https://www.indeed.com/career-advice/career-development/software-developer-skills
https://www.herzing.edu/description/computer-programmer
https://resources.workable.com/application-developer-job-description#:~:text=A
%20Application%20Developer%20translates%20client,testing%2C%20and%20maintaining
%20technical%20documentation.
https://www.fca.gov/template-fca/download/ITManual/itsystemsdevelopment.pdf
https://www.mtu.edu/cs/undergraduate/software/what/#:~:text=of%20software
%20applications.-,Software%20engineers%20apply%20engineering%20principles%20and
%20knowledge%20of%20programming%20languages,the%20many%20career%20paths
%20available.

You might also like