We'll dive into the key differences between software and web development. We'll explore the unique approaches, contexts, and user needs that define each field. Additionally we'll discuss the specific challenges you might encounter - from resilience, maintainability, performance, needs of...
We'll dive into the key differences between software and web development. We'll explore the unique approaches, contexts, and user needs that define each field. Additionally we'll discuss the specific challenges you might encounter - from resilience, maintainability, performance, needs of users and more. Whether you're juggling both worlds, focused on one or looking to transition, this talk will help you grasp what sets software & web development apart, what they can learn from each other and to help you make conscious decisions in your projects.
Size: 11.73 MB
Language: en
Added: Sep 13, 2024
Slides: 43 pages
Slide Content
Adam Tomat - Development Lead @ Rareloop What Sets Them Apart? Software vs Web
Development Lead About me Software development Web development Responsible for our web & software team @ Rareloop
Overview What do I mean by “software”? What do I mean by “web”? What about software on the web? What sets them apart What can they learn from each other?
What do I mean by “software”? Platforms Dashboards Workflow systems APIs
Software is typically about saving money
Context More controlled users & devices Priority for desktop (typically) Complex business logic Long-living Software
Function over form Reliability Flexibility Recoverable User needs Software
Cost efficiency Low risk Stability Can adapt to business change Security Client needs Software
Brochure websites E-commerce website What do I mean by “web”?
Web is typically about earning money
Available to everyone Unpredictable devices and networks Visible to search engines Mostly business-logic free Long-living Context Web
Access information quickly Easy to use Reliable User needs Web
Brand representation Makes their information available Cost efficiency Low risk? Editable Client needs Web
Software on the web?
Context More controlled users & devices Priority for desktop (typically) Complex business logic Long-living Software on the web Available to everyone Unpredictable devices and networks Visible to search engines Mostly business-logic free
Function over form Reliability Flexibility Recoverable User needs Software on the web Access information quickly Easy to use
Cost efficiency Low risk Stability Can adapt to business change Security Client needs Software on the web Brand representation Makes their information available Cost efficiency Editable
?
Resilience Maintainability Performance Security How do we meet these needs?
UI components look considered across all breakpoints Editing content doesn’t cause issues Rely on declarative languages like HTML and CSS It can work without JavaScript ( progressive enhancement ) Embrace unpredictability of the web - be future friendly Accessibility (a11y) Web Resilience
https://icapps.com/blog/app-accessibility
Software > Web What can we learn? What’s our QA process? Can we add any automated tests round anything? Can we use linters and tools to help catch bugs? Can we use composer to declare dependencies? Can we improve deployments using CI/CD? Resilience
Are our UI components bulletproof? Do they look considered responsively? Is our frontend framework allowing us to build in a future-friendly way? Are we expecting the unexpected? Have we considered things like network conditions? Resilience What can we learn? Web > Software
Componentisation (with a Design system ) Giving more power to editors (e.g. Page builder / full-site editing) Documentation Web Maintainability
Can we make a consistent local environment? What coding style could we follow for PHP, HTML, CSS, JS etc? Could we follow some software engineering principles, like MCV? Is there anything that would benefit from having automated tests? Maintainability What can we learn? Software > Web
Are we creating re-usable UI components? Could we use a design system to help document these? Maintainability What can we learn? Web > Software
Performance
Make it “feel” fast Performant database queries Run processes asynchronously and/or concurrently Infrastructure Software Performance
Do we have the right infrastructure for what we need? Are there any slow database queries that could be improved? Can we use optimistic UI or anything else to help make it feel fast? Performance What can we learn? Software > Web
Have we optimised the frontend as much as the backend? Has our technical stack limited what we can optimise on the frontend? Can we optimise images? Performance What can we learn? Software > Web
Security
Prevent unauthorised access Data breaches Protecting sensitive keys Encryption Masking data / anonymisation of data Protecting APIs Penetration testing Software Security
Prevent unauthorised access Content Security Policy (CSP) Protect against SQL injection attacks Secure session management User enumeration Web Security
Do we need an incident response plan? Are we keeping our secrets safe? Can they be encrypted? Is penetration testing useful to do here? How can we prevent local databases from containing customer data? Security What can we learn? Software > Web
Could we add a Content Security Policy? Are we preventing user enumeration? Are our sessions secure? What can we learn? Security Web > Software
Don’t forget about SEO…
?
Both software and web are hard to do well Make a conscious decision about the tooling you are using Are you serving the user’s needs and the client’s needs over yours? What can you apply to your projects? Wrapping up