Intro

This role doesn't have a contract job title. I worked at a very small and very young startup for six months in a contract structured role. The director is a reluctant PO, running other companies in a very different industry (law). The aim of this single product is a platform to trade skills/ activities. When I joined there was an ugly looking alpha build, which was supposed to be a mobile app, but lacked many interaction features of mobile apps. This was written in ReactNative, to reduce future costs. I have never seen a more feature limited chat client.
Please note I did not write the brochure/ landing page (wordpress). I did many hours work on this project which are not very interesting to readers; but were essential to be able to do later things. This is a very young company; with a very immature product. Although six months is quite short for a role; I was the longest employed employee present.
In this text, the term 'First contractor' is to denote work that was done before I arrived.

What did I gain from this role?

I gained commercial experience in Typescript. More recent ReactJS usage; my last project was just before ReactJS hooks where available. I extended the use of SCSS, to manage EM font units in ReactNative (which still doesn't support them).

My work achieved

  • UX centered change list (there was substantial room for improvement)
    • Ran live designs with realistic data; improved handling for this; some examples: allow users to have many 'friends', so they need to be able to scroll the friends list; allow users to have long names, newer design allows more space.
    • Made value and benefit of using the app more clear to users; by better signalling, and marginally better via more consistency in design. Before my work, interface design was very ambiguous, I improved communication of app state to users; by adding labels, tooltips, feedback messages. Improved quality of English. Started documentation on brochure site. I made my first Interstitial.
    • Added a better layout for mobile, checked design against a group of test users (mostly ex-employees). Improved utility of bottom 'nav bar', by adding extra options (now four).
    • Added desktop view, as the director asked for it. Desktop mode has less 'screens', and completely different journeys after logging in.
    • Added swipe as a more intuitive UI interaction on mobile version, replacing some buttons.
    • Reduced occurrence of “first 10 of X items”, modern phones have enough RAM for the whole list; and its easier to use if the entire range is loaded; and secondly makes it a faster app.
    • Improved ability to access data in the system; to see data in user profiles by better design; to see relevant login options; to see relevant users by better search; improved presentation of options, via menus.
    • Vastly improved “off platform messaging”, to improve user retention, and use. This was mostly about the system sending notification emails to the user; but planned SMS. With an intern, added several features to the chat client to make it easier to use (add message read status, added last message date to UI, add scroll to chat area, tested other language and charset support, blanked text input on send, planned message notification to chat logo outside of chat screen, wanted to add <Enter> key to send message).
    • Changed prominence of “logged in status”: from a hourly event; to a monthly event. This is a trivial social app; not a banking app. Coincidentally completed 'Reset password' feature, as undone when I started.
    • Vastly improved login journey, as making it emphasise relevant options to user history (i.e. on phone do not offer register prominently if there is a known account; and most strongly present relevant login technology, i.e. facebook; so it seems simpler for casual users). Improved error feedback presence, clarity and relevance. I made First contractor password rules visible to users.
  • Plain development in typescript
    • Created many React Components. 'First contractors' had not included a CSS framework; I focussed styling on use of React style blocks rather than setting each Text element directly like a ms-word file does.
    • Reduced use of useEffect() so screens loaded faster; specifically stop one useEffect() from feeding another, or cascading updates occur.
    • Note that ReactNative tags are not HTML tags, and often omit accessibility and styling features. I improved accessibility, for example adding an un-styled wrapping div, with a tooltip; I used inline SVG in places to allow better styling. Improved amount of RWD in the design; as not all phones or laptops are same resolution. I think the first app author for the ReactNative sections had only read the docs for the first version; newer versions of ReactNative have about as much CSS support as MSIE; there is no need to pay a 50byte surcharge per text element to set the style on each one directly.
    • Although the director was after results all the time; he also requested a desktop skin, mostly I think as he was demoing on a laptop.
    • Extended and managed SCSS to supply a professional level output.
    • Added a feature flag structure to each project; to control their release better. Moved visible text into a JSON file that served as a PO file (this was started before I joined, but made more consistent)
    • Made search REST API work correctly; and work faster by better use of SQL, rather than ORM features.
    • Added new API with other return [typescript] types to meet front-end needs.
    • Extended API project to be able to run from bash CLI concurrently to accessing the real DB; for local testing.
    • Added pixel size limit to the selfie upload; as images larger than the average desktop resolution crash the React scroll module (and aren't that useful on an app designed for phones).
  • Basic management and work organising of some interns. Did some pair coding with interns; and code reviews. I wasn't doing much managing, as I was delivering code.
  • Boring and basic devops to support rest the of work
    • 'In-housed' technical services to our cloud, and away from First contractor hosting.
    • Added basic security features such as DB access via SSL ident.
    • Made email sending infrastructure, as First contractor email seemed to use localhost as relay.
    • Added service monitoring with datadog and cloudwatch.
    • Designed (but not built) app installer; for current tech stack.

Keywords:
UX, screen design for mobile, typescript, reactnative, personalisation, swipe, manage em, search, postgres, making data visible

Some similar articles in worklog