[PHP SW] Software vs Web: What sets them apart?

AdamTomat 23 views 43 slides Sep 13, 2024
Slide 1
Slide 1 of 59
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50
Slide 51
51
Slide 52
52
Slide 53
53
Slide 54
54
Slide 55
55
Slide 56
56
Slide 57
57
Slide 58
58
Slide 59
59

About This Presentation

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...


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?

Resilience

UI workflow Undo-ability Multiple developers Reduced risk of bugs Automated (and manual) testing Multiple environments CI/CD Zero-downtime deployment Feature flags Software Resilience

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

Maintainability

Documentation Consistent local environment (e.g. Docker) Consistent coding style Software engineering principles Separation of concerns Automated tests & static analysis Software Maintainability

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

Optimising images Optimising frontend assets Caching CDN Bot spam protection Page Speed Insights Web 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

Questions?