Lecture 2 | Industry, Career Paths, Essential Skills
osamahjaleel
30 views
16 slides
Apr 27, 2024
Slide 1 of 16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
About This Presentation
Fundamentals of Software Engineering, Software Engineering Department, Taiz University
Size: 191.59 KB
Language: en
Added: Apr 27, 2024
Slides: 16 pages
Slide Content
Balanced scorecard slide 1 Software Engineering Industry, Career Paths, and Essential Skills Fundamentals of Software Engineering – Lecture 2 Osamah Abduljalil @2024 1
Balanced scorecard slide 2 Topics Covered 2 The Software Industry Landscape Software Engineering Career Paths Essential Skills for Success in Software Engineering Software Communities Software Learning Resources Fundamentals of Software Engineering - Osamah Abduljalil
Balanced scorecard slide 2 The Software Industry Landscape 3 Fundamentals of Software Engineering - Osamah Abduljalil Market Size and Growth The global software market size was valued at USD 583.47 billion in 2022 and is expected to grow at a compound annual growth rate (CAGR) of 11.5% from 2023 to 2030. This growth is because more companies are using a lot of data, automating their processes, and going digital. The COVID-19 outbreak positively impacted the global market, as it stimulated the demand for software solutions for remote work, cybersecurity, e-commerce, and digital transformation. Key Players and Market Trends Some of the key players in the global software market include Microsoft, IBM, Oracle, SAP, Adobe, Salesforce, VMware, Dell, Cisco, and Symantec1. Some of the key market trends include the adoption of cloud-based software, the emergence of artificial intelligence (AI) and machine learning (ML) technologies, the rise of software as a service (SaaS) and platform as a service (PaaS) models, and the increasing focus on cybersecurity and data privacy.
Balanced scorecard slide 3 Software Engineering Roles 4 Fundamentals of Software Engineering - Osamah Abduljalil Front-End Engineer P lan, design, and build the user-interface components of a software application. They ensure that the interface meets both an organization’s goals and user needs. Back-End Engineer Design, build, and maintain the server-side of web applications with a focus on speed, and functionality . They write server scripts and work with application programming interfaces (APIs) that are eventually used by front-end engineers. Full-Stack Engineer As the name suggests, a full-stack engineer does it all—they are familiar with the full software development cycle and can contribute to both the front-end and back-end.
Balanced scorecard slide 3 Software Engineering Roles 5 Fundamentals of Software Engineering - Osamah Abduljalil Quality Assurance (QA) Engineer QA engineers have in-depth knowledge of different testing processes and methodologies. They are good in data management, bug reporting , and creating test environments . DevOps Engineer DevOps engineers help make sure that new code gets released and deployed smoothly. They work in the middle of software development and IT operations, knowing a lot about testing how well things work, setting benchmarks, and finding ways to make the basic infrastructure better. Security Engineer Security engineers are cybersecurity specialists who are trained to detect security problems within systems and build protections from malware and unauthorized entry . They are also trained in digital forensics to determine how and when an attack took place.
Balanced scorecard slide 3 Software Career Ladder 6 Fundamentals of Software Engineering - Osamah Abduljalil Intern Internships provide an opportunity for individuals to apply their academic knowledge to real-world projects, acquire hands-on experience, and develop skills under the guidance of experienced professionals. Interns often work on specific tasks or projects within a team and are exposed to the day-to-day operations of the software development process. Junior Developer (1-3 years) Junior software engineers have an entry-level role. They typically assist the engineering team with basic tasks such as writing code and debugging existing software.
Balanced scorecard slide 3 Software Career Ladder 7 Fundamentals of Software Engineering - Osamah Abduljalil Mid-level Engineer (3-5 years) Mid-level software engineers are competent in all stages of the software development cycle and can usually work independently. Senior Engineer (5+ years) Senior software engineers have the most independence. They usually have an area of expertise (i.e. DevOps, full-stack development, back-end development), have demonstrated leadership capabilities, and are able to lead a project from start to finish.
Balanced scorecard slide 3 Essential Skills for Success in Software Engineering 8 Fundamentals of Software Engineering - Osamah Abduljalil Soft Skills Organizational and Project Management Skills Technical Skills
Balanced scorecard slide 3 Soft Skills 9 Fundamentals of Software Engineering - Osamah Abduljalil Communication and Collaboration Manage Time and Honor your commitments Problem-Solving Critical Thinking Analytical Thinking Attention to Detail Continuous Learning
Balanced scorecard slide 3 Organizational and Project Management Skills 10 Fundamentals of Software Engineering - Osamah Abduljalil Coordinate with team members, vendors, and customers to solve problems Gather business and functional requirements Test different scenarios (Test Cases) Use project management tools such as Jira, Trello.. etc . Use Version Control Systems Such as: Git, GitHub.. etc .
Balanced scorecard slide 3 Technical Skills 11 Fundamentals of Software Engineering - Osamah Abduljalil Programming languages: Software engineers need to be proficient in at least one programming language, such as JavaScript, Python, Java, C#, or Ruby. Programming languages are the tools that software engineers use to create instructions for computers to execute. Software development methodologies: Software engineers need to follow a systematic and disciplined approach to developing software, such as Agile, DevOps, Scrum, or Waterfall. Software development methodologies are the frameworks and processes that software engineers use to manage the software development life cycle, from planning and design to testing and deployment. Testing and debugging: Software engineers need to ensure that the software they create is reliable, secure, and error-free. Testing and debugging are the activities and tools that software engineers use to verify, validate, and improve the quality of software. Containers: Software engineers need to be familiar with containers, which are software packages that bundle up an application and its dependencies into a single unit that can run on any platform. Containers are the technologies that software engineers use to create portable, scalable, and consistent software environments.
Balanced scorecard slide 3 Software Communities 12 Fundamentals of Software Engineering - Osamah Abduljalil Software communities are online platforms where developers and software engineers can meet, connect, and interact with each other around their shared interests, challenges, and goals. Software communities can help developers learn new skills, find solutions, get feedback, network, and collaborate on projects. Where can I find Software Communities? Social Media Groups. Some popular software communities are: GitHub : A platform where more than 40 million people learn, share, and work together to build software. You can join the GitHub Community Forum to share ideas and follow discussions on topics that interest you. Stack Overflow : An open community for anyone that codes. You can get answers to your toughest coding questions, share knowledge with your coworkers, and find your next dream job. Hacker News : A social news website focusing on computer science and entrepreneurship. You can post anything that gratifies your intellectual curiosity and join the lively discussions with other developers.
Balanced scorecard slide 3 Software Learning Resources 13 Fundamentals of Software Engineering - Osamah Abduljalil Search Engines – software that allow users to search for information of interest. Examples: Google Search and Microsoft Bing Use algorithms that can predict or suggest your searches Finds documents on the Internet that closely align with the search terms entered by the user Recent development in artificial intelligence have enabled generating, testing, and debugginh code capabilities Examples: Github Copilot, ChatGPT. User Generated Content Websites: users generate content that meets some specialized information needs for other users such as: GeeksForGeeks , W3School, Medium.. etc . Coding Challenge Websites: are platforms that offer programming problems and exercises to help developers enhance their coding skills, practice problem-solving, and prepare for technical interviews.
Balanced scorecard slide 3 Coding Challenge Websites 14 Fundamentals of Software Engineering - Osamah Abduljalil LeetCode : is a widely used platform for coding challenges that cover a variety of topics, including algorithms, databases, shell, and more. It is commonly used for technical interview preparation. HackerRank : provides a diverse set of coding challenges in various domains, such as algorithms, data structures, artificial intelligence, and databases. It also hosts coding competitions. CodeSignal : offers coding challenges, as well as interview preparation kits and coding arcade games. It is known for its adaptive assessments that help users understand their skill levels. Codewars : focuses on providing coding challenges in the form of kata, where users can solve problems and rank up based on difficulty. It emphasizes community-driven learning. TopCoder : is not just a coding challenge platform; it also hosts competitive programming contests. It covers algorithmic challenges, and users can participate in single-round or marathon matches.
Balanced scorecard slide 3 Software Learning Resources – Online Training 15 Fundamentals of Software Engineering - Osamah Abduljalil Popular sites like YouTube have become useful sources of information for learning: YouTube videos are rated by the community with likes, dislikes, and subscribes. YouTube algorithm constantly tunes its suggestions for videos which can most likely be used to love your problem. Massive Open Online Courses (MOOCs) Online educational courses open to anybody in the world Some are free and some require payment Examples: Khan Academy (https://www.khanacademy.org/) or Coursera (https://www.coursera.org/) MIT Open Courseware offers a vast majority of their class materials for free (https://ocw.mit.edu/) Training by Industry-Specific Organizations Example: Amazon Web Service (AWS) Training, Google, IBM.. etc .