top of page

You have eyes but you cannot CSS!



I find it interesting that, even (especially?) when our work focuses on careful planning or a disciplined approach to problem-solving, many of us miss things in other areas we would not miss at work. (That’s being a bit generous, as even there we sometimes do things which are not optimal – such as compressing planning or testing windows - usually due to cost constraints, deadlines, or resource limitations. At least in those cases, we KNOW what we’re doing, and why, and can ensure that everything is documented and that the risks are clearly understood)


When I talked about setting up a LAMP stack (https://www.til-technology.com/post/fiat-lamp), I was thinking that the next step would be to start writing some “hello, world” (https://www.til-technology.com/post/hello-world) programs and start playing around with PHP. Not necessarily a bad approach, but then I started thinking about how hard it is to understand a programming language when you try to build something which is trivial (how many coders have built versions of tic-tac-toe, I wonder?), contrived (Oh! Let’s build yet another fake inventory app for a fake widget manufacturer!), or simply uninteresting to the one doing the work.


That said, I don’t want to take the time to design and build a full-featured application with all the bells and whistles – at least not now.


So, what’s something that could be (at least somewhat) useful in practice, while simple enough to build without a lot more experience and/or time?


Hm...


What about a tool for project management?


Could be interesting, I guess, and I HAVE been thinking about writing about project management concepts... Maybe a combination of several things?


How about a stream-of-consciousness approach to designing and building an app, and how to manage it? Interesting...


How about planning, designing, and building a project management tool to describe project management concepts? And then using that tool for the actual management of the project, as it is being built?

How meta is THAT? Especially on a blog where I blog about my experiences learning how to blog?

Brilliant!

So, what now? What’s the easiest useful app I could build for myself, that I could build on and get some actual value out of?

Well, to start with, probably best to lay out a bit of what I am talking about. I’ll keep things relatively high-level and simple, and simply enjoy the consternation of those who cringe at the over-simplifications and glossing-over of whole fields of study within management.

According to the Project Management Institute (PMI), a project is defined as “a temporary endeavor undertaken to create a unique product, service or result” (https://www.pmi.org/about/learn-about-pmi/what-is-project-management). Ignoring the American spelling and missing Oxford comma (https://en.wikipedia.org/wiki/Serial_comma), defining a project as temporary draws a distinction between project management and operational management.


In theory (https://www.northeastern.edu/graduate/blog/project-management-vs-operations-management/), a project team (led by a project manager) would build a product or service, then hand it off to an operational team (led by an operations manager).


In practice, all of this is dependent on the situation. For a construction project, sure, but most teams I’ve worked with in the Information Technology field have had very blurry lines between projects and operations. Often, the same teams are involved with both, so it can be quite challenging to figure out how to manage things.


From the project management perspective, people usually break software development methodologies into “waterfall” (https://en.wikipedia.org/wiki/Waterfall_model) vs “agile” (https://en.wikipedia.org/wiki/Agile_software_development), then discard the waterfall model as obsolete or inadequate. Though this is arguably a false dichotomy (https://en.wikipedia.org/wiki/False_dilemma), we’ll leave aside the gaping holes in some of these arguments, and note that agile certainly appears to be a dominant approach in software development.


“Agile” is the term generally applied to methodologies based on the “Agile Manifesto” (https://agilemanifesto.org/principles.html), which lists a set of values and principles, but does not prescribe the processes which should be used.

(Are you going to get to a point, eventually?)

Yes. Almost there.

So, while there are a number of different approaches which can be called “agile”, two of the major ones are “Scrum” (https://en.wikipedia.org/wiki/Scrum_(software_development)) and “Kanban” (https://en.wikipedia.org/wiki/Kanban_(development)).

The idea behind Scrum is that it is based on small blocks of time (often two weeks), called “sprints”, and focuses on continuous improvement. It assumes that customers will change their minds as they learn more and see the product being developed, and that unpredictable challenges will arise during a project.

I could do that, I guess. But there’s only one of me, so some of the value of scrum would be irrelevant – if I (as developer) start building something and (as customer) don’t like it, I’ll just change it. No point in building it “wrong”, then going back to the “customer” to refine it later.

How about Kanban?

Kanban is descended from the “Toyota Production System” (later referred to as “lean manufacturing”), and focuses on managing work queues through prioritization and limiting the number of tasks being handled at any given time.


It’s also a very intuitive system, and a physical version is entirely practical. After watching a video on the approach a few years ago, I built a personal Kanban board using a file-folder and post-it notes and used it for a number of weeks. Very interesting experiment.


That’s it! Post-it notes!


Another feature of agile is the idea of building a product that is useful at some level, then expanding and improving it over time.

What if I started with a tool that supports virtual post-it notes, and expand it until I can build an actual Kanban board?

Useful? Check. Iterative? Check. Relatively straightforward? Check.

THIS is where the oops comes in. I now have an idea for an app which might actually be useful and interesting, but I can’t just build it in PHP because I need a user interface. Oops?

Not exactly a catastrophe, but I would certainly not have missed something like this at work. Sigh. I’ll use HTML and CSS to support the user interface. I discussed HTML (Hypertext Markup Language) in passing previously, but not CSS.

CSS stands for “Cascading Style Sheets” (https://en.wikipedia.org/wiki/CSS). It’s a language used to “style” (ie, describe the presentation and layout) a document written in a markup language, such as HTML.

You would build the content of a page in HTML, then use CSS to define the font, colour, size, and other display features.

As I mentioned previously, I understand these conceptually, but haven’t worked with them. So, I started poking around Youtube, and found Dani Krossing’s playlist on HTML and CSS (https://www.youtube.com/watch?v=TKYsuU86-DQ&list=PL0eyrZgxdwhwNC5ppZo_dYGVjerQY3xYU). I’ve watched a few, and find them to be well-organized and clear, and find Dani to be a good presenter.

Great! So, next step will be to learn a bit more about HTML and CSS, and start thinking about the Kanban tool I want to build.


Cheers!

Comments


bottom of page