To my fellow software engineers! This a GREAT article that discusses the difference between being an "engineer" and being a "technician". This is the kind of subtle difference that can easily be missed until you give it a name. In short, it makes the following claims: Engineers, look for ways to automate repetitive manual labor. They continually seek out new problems to solve and take risks. Technicians, step in the place of automation. Redoing the same process over and over. Think, adding another parsing strategy to your ETL process. Being a technician can feel safe as the challenges and solutions are well known, but it's a false sense of security and it stifles growth. Be mindful of where you are in your career. If you are doing more technician tasks, try to protect yourself by taking on more risk and securing challenging work. https://lnkd.in/e3duXgfx
Daniel Jones’ Post
More Relevant Posts
-
Great software engineers automate repetitive/manual labor. Most large software engineering organizations incentivize anti-automation due to their desire for predictability. Predictable work is work that could have been automated but was not automated. The more predictable and routine a developer's job is, the more they tend to slide into becoming a technician. Teams that get into predictable flows are likely ignoring a promising opportunity for automation. https://lnkd.in/geaS98qC
Software engineers are not (and should not be) technicians
haskellforall.com
To view or add a comment, sign in
-
Understanding Software Testing in Software Engineering Read On: https://lnkd.in/dJrhUA6Y #software #softwaretesting #softwaretester
Understanding Software Testing in Software Engineering
https://news4u95.xyz
To view or add a comment, sign in
-
SOFTWARE PRODUCT VS PHYSICAL PRODUCT & SOFTWARE ENGINEERS PROBLEMS The lifecycle of a software product is fundamentally different from that of a physical product and presents unique challenges for software engineers. The lifecycle of a physical product consists of several stages planning, prototyping, tooling, production, and testing. The planning and prototyping stages become more difficult. Physical products must be transported to various locations for marketing purposes. The lifecycle of a software product is more fluid and iterative, consisting of different stages planning, design, implementation, testing, deployment, and maintenance. Software products do not require material resources it requires skills, human power, and imagination. During the planning stage, software engineers identify the product's purpose, requirements, and design to be attractive. The implementation stage involves creating the software product's functionality. Testing is an essential stage for both physical and software products but software testing is a more complex process that may include user acceptance testing and bug fixing. The deployment stage involves launching the software product and ensuring a better user experience. Software engineers face challenges in identifying and fixing bugs and errors. In the maintenance stage software engineers must regularly update and improve the product to ensure its continued success. During the software development process, engineers face difficult problems, such as rapid technological development and changing user needs. This presents a more difficult situation for software engineers, as they must handle ongoing changes and updates to the product. Effective communication, project management, experience design, and the ability to quickly and effectively implement changes are essential skills for software engineers.
To view or add a comment, sign in
-
Hi ,I am Moni Kumari Today i am writing a blog on the question How does the lifecycle of a software product, and what unique challenges does this present for software engineers? Software development existence cycle models are frameworks that manual the development of software program tasks from start to completion. Development involves planning, designing, coding, testing, and deploying. production can be as simple as uploading files to a server. Development involves design and prototyping, but production includes manufacturing, which can involve manufacturing which can involve complex logistics for materials, machinery, and labor. software products don’t require material resources. New software require people’s power to envision and create them. Digital products and software products require human power, skills, and imagination. Software technologies evolve rapidly, requiring engineers to continually learn and adapt to new tools, languages, and frameworks to remain effective. software is often vulnerable to security threats and requires constant vigilance, updates, and patches to address vulnerabilities, a challenge less common in physical products. Software often needs to be compatible with existing systems and other software products, requiring engineers to design flexible systems that can integrate seamlessly, a less frequent concern for physical products unless they are part of a larger ecosystem. The lifecycle of a software product requires a flexible, adaptive approach and involves challenges that are distinct from those encountered in the production and management of physical products. Software engineers must address these challenges through continual learning, innovation, and proactive management of software environments.
To view or add a comment, sign in
-
"Aspiring Data Scientist | Python Programmer | Jr. Data Analyst & Modeler | Skilled in ML, AI, Data Visualization & Analysis | Excel, SQL, Scripting | Entry-Level Developer"
#software_engineering_13: 🔍 **Attributes of Quality in Software Engineering** ⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️ Quality in software is defined by several key attributes that ensure reliability, functionality, and user satisfaction. Here’s a breakdown of essential quality attributes every software professional should know: ### Key Attributes of Software Quality 1. **Functionality:** Ensures software meets specified requirements and performs accurately. 2. **Reliability:** Indicates consistent performance under varying conditions. 3. **Usability:** Focuses on user-friendliness and intuitive operation. 4. **Efficiency:** Measures speed and resource utilization. 5. **Maintainability:** Ease of modification, enhancement, and support. 6. **Portability:** Ability to adapt across different platforms. 7. **Testability:** Simplifies testing processes and ensures reliability. 8. **Security:** Protects data and systems from unauthorized access. 9. **Compliance:** Adheres to industry standards and legal regulations. 10. **Scalability:** Handles increased workload or users effectively. ### Importance of Software Quality - **Customer Satisfaction:** Meets user expectations and enhances user experience. - **Cost-Effectiveness:** Reduces maintenance and operational costs. - **Competitive Edge:** Enhances reputation and market competitiveness. - **Risk Management:** Minimizes security risks and ensures reliability. Understanding and prioritizing these attributes throughout the software development lifecycle is crucial for delivering high-quality software solutions that meet both user needs and business objectives. #SoftwareEngineering #QualityAssurance #SoftwareDevelopment #Programming #Tech #SoftwareQuality
To view or add a comment, sign in
-
Testing in Software Engineering #snsinstituitons #snsdesignthinkers #designthinking Types of Software Testing Testing is the process of executing a program to find errors. To make our software perform well it should be error-free. If testing is done successfully it will remove all the errors from the software. In this article, we will discuss first the principles of testing and then we will discuss, the different types of testing. Principles of Testing All the tests should meet the customer’s requirements. To make our software testing should be performed by a third party. Exhaustive testing is not possible. As we need the optimal amount of testing based on the risk assessment of the application. All the tests to be conducted should be planned before implementing it It follows the Pareto rule(80/20 rule) which states that 80% of errors come from 20% of program components. Start testing with small parts and extend it to large parts. Types of Testing
To view or add a comment, sign in
-
"Aspiring Data Scientist | Python Programmer | Jr. Data Analyst & Modeler | Skilled in ML, AI, Data Visualization & Analysis | Excel, SQL, Scripting | Entry-Level Developer"
#software_engineering_1: 🖥️ Software Engineering Fundamentals: Key Concepts Explained 🔍 ⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️ Let's break down some crucial concepts in software engineering: 1️⃣ Software Crisis: • Definition: A term from the 1960s-70s describing difficulties in developing large, complex systems efficiently and bug-free. • Characterized by projects exceeding budgets, missing deadlines, and being unreliable. 2️⃣ Advantages of Formal Methods: • Increased reliability and correctness • Better documentation • Earlier detection of errors • Clearer specifications • Improved maintainability 3️⃣ "Product is Right": • Means the software meets all specified requirements • Fulfills user needs effectively • Functions correctly and reliably 4️⃣ Characteristics of Good Design: • Modularity • Low coupling, high cohesion • Reusability • Extensibility • Maintainability • Efficiency 5️⃣ Top-Down Integration: • A testing approach where top-level modules are tested first, then lower levels • Starts with the main module and progressively integrates subordinate modules • Helps identify high-level logic errors early 6️⃣ Goals of Software Engineering: • Improved software quality • Increased productivity • Better project management • Cost-effectiveness • Customer satisfaction • Maintainable and scalable systems 7️⃣ Error vs Bug: • Error: A mistake made by the programmer during coding • Bug: The manifestation of an error in the program, causing incorrect behavior 8️⃣ Importance of Certification: • Validates professional competence • Enhances career prospects • Ensures adherence to industry standards • Builds customer trust • Encourages continuous learning 💡 Pro Tip: Understanding these concepts is crucial for any software engineer. They form the foundation of best practices in the field. 🤔 #Connections #SoftwareEngineering #CodingConcepts #SoftwareDevelopment #ProfessionalGrowth
To view or add a comment, sign in
-
AI Engineering | Leadership | Making AI Useful | Currently building foundational models in cancer healthcare.
Understanding unit vs. integration testing in Software Engineering is crucial: - Use unit testing to verify individual components. - Use integration testing to verify multiple components work together. - Use mocks sparingly. - Prefer integration tests over unit tests. - 0% code test coverage is bad. - 100% code test coverage does not mean it is good. Don't forget that tests are code and also require re-factoring from time to time!
To view or add a comment, sign in
-
What is a "Task" in Software Engineering? Tasks pass through a number of states, these are identified, in progress, and done. These states focus on the management of the Task. Tracking the progress of the tasks is important for monitoring the work. Tasks are first identified by looking at the Work that needs to be done. Tasks correspond to pieces of work that are easily isolated from the work, small enough to be estimated by the team and easily manageable to be implemented by one or several team members. A single task may concern different levels of difficulty and effort required. It could concern development of multiple work products, or multiple tasks could concern completion of a single work product. The granularity of a task is proportional to the trust you have in your team members based on previous work experience. Once work starts on a Task it progresses to the in progress state during which time there is at least one team member actively working on it. Finally a task is done when the work required to do the task has been completed. This may be because it has been determined to be completed according to the agreed to completion criteria.
To view or add a comment, sign in
-
I agree with the author. A serious commitment to do software engineering means pushing your product to be more reliable, and therefore facing the unknown by researching on promising developments and fixing non-trivial design flaws or production errors. On the other hand, the typical company does not want to fix fundamental design flaws in order to measure productivity in a predictable way. https://lnkd.in/dq9fBiDP
Software engineers are not (and should not be) technicians
haskellforall.com
To view or add a comment, sign in