A Career in Development: It’s not all about me

Standard

The software industry is an incredible industry to be part of.

There is always something new to learn.

Over the past 25 years I’ve had a lot of fun, had great job satisfaction, and learned so much.

However, to keep myself grounded, I try to remind myself of two things:

  • You can never stop learning.
  • Its not all about you.

My journey from a junior to senior dev has taught me some ongoing lessons about myself, technology and, most importantly, that prioritizing user needs above most things is key to any successful project.

I may love what I do and get a kick out of learning, but if it doesn’t benefit users, at the end of the day its of limited use.

Let me explain why I believe users don’t get enough attention from development teams, by detailing my personal journey….

The Early Days: Going Deep

Early in my software development career (dotcom boom and bubble), I was eager to solve any problems with a technology solution.

Ask Jeeves

I would get my head deep into a niggling problem and come out the other side with an enormous sense of achievement. I would agonise over minor, but arguably essential, technical issues and feel real accomplishment when I succeeded.

At that point in my career, I wasn’t aware that customers don’t really care about technology.

If I were to try to explain to a customer what I’d been doing, their fully justified reaction would probably haven been “Why would you spend so much of my money doing that?!? It has very little visible effect on the problem that I have!”.

Customers were at the end of the waterfall model, they were of little concern when I was deep in code at the other end.

Levelling Up: Empathy

Things started to change when I was put directly in front of users.

Once you feel the pain and see the importance to individuals of the solutions you’re developing, it changes your perspective of your role as a developer.

Learn Empathy

If you want a developer to “care” and build useful products, have them experience the real-world pain they are trying to address.

The main takeaway from being personally deployed into client teams was realizing that users only really care about their problems and whether, what you’re doing, will directly help or hinder them.

Users don’t care about cool new technologies, frameworks, edgy design patterns, architectures, or highly technical concerns; they just want something to make their life easier, now.

Taking the blinkers off: Going Wide

Experiencing the real-world pain of clients broadened my focus from purely technical challenges to understanding and solving real-world user problems.

This transition from deep technical immersion to a wider perspective taught me the value of simplicity and direct impact. It wasn’t just about using the latest technology or dabbling with complex solutions anymore; it was about making a tangible difference in the clients’ lives with efficient and straightforward solutions.

Sometimes a complex solution was required, but sometimes there was another, simpler, cheaper, pain-free, way.

The ‘other’ way only became visible when we understood a client’s pain points, took a step back, and looked wide, instead of deep, for a solution.

It doesn’t add up: It shouldn’t be this hard

But, at this point in my career (early 2010s), even the “easier” way still seemed too difficult, took too long, and cost too much money.

There was a huge disconnect between clients’ expectations (in terms of timescale, cost and complexity) and how frustratingly difficult it was to develop production-ready software.

It just didn’t add up.

Technological solutions to everyday problems still seemed to be the preserve of large teams and clients with deep pockets prepared to wait for 6 months or more for a solution.

Front-end development felt too verbose, server management a speciality for proper geeks, and the ideal interaction between the frontend & backend a dark art.

Clients didn’t appreciate, or, more importantly, place value on, these [highly relevant] concerns.

A New Dawn: Scalable Services, Front-End Frameworks & Powerful Devices

In my personal opinion, around the early 2010s things started to change for the better, especially for web and mobile developers.

For example, frameworks like AngularJs (2010) & knockoutjs (2010) started gaining traction.

Scalable “serverless” services like AWS lambda (2014) started to roll out.

Mobile phones were now mainstream and able to handle JavaScript-intensive webpages and highly interactive apps.

Like them or loathe them, JavaScript frameworks made it easier for a huge number of teams to produce complicated web software quicker and with less code. While these frameworks marked significant shifts in my personal journey and the industry at large, they represent only a fraction of the myriad of tools and technologies that shaped the developer field at the time.

IPhone 5 Release – 2012

“Serverless” offerings started to reduce the need to manage expensive dedicated on-premises servers and reduced the need for a highly skilled team to manage them.

The pervasiveness of mobile devices made for an explosion in the appetite for, and number of, apps.

All combined, smaller teams could now start to produce complicated scalable software in less time, with less code and with [generally] less cost.

Median project schedules are shorter now (in months) than they used to be: https://www.qsm.com/articles/long-term-trends-40-years-completed-software-project-data

Late 2010s: Levelling the Field for Small Teams & Tech Startups

Towards the end of the 2010s scalable services started to really change the game for small teams and start-up’s.

In the early stages of a start-up, resources are scarce, time is of the essence, and the pressure to deliver is immense.

Leveraging frameworks, scalable services, IaaS (Infrastructure as a Service), PaaS (platform as a service), BaaS (back end as a service) & SaaS (software as a service) turned out to be a game-changer for smaller teams and start-ups. It allowed teams to focus on core product, rather than getting bogged down by the intricacies of backend infrastructure or deployment complexities.

This shift not only accelerated development cycles but also instilled a sense of confidence in the ability of smaller teams to scale and adapt as needed.

On average, today’s developers deliver about 40% as much new and modified code per project as they did 40 years ago.

Quantative software management: https://www.qsm.com/articles/long-term-trends-40-years-completed-software-project-data

Being able to concentrate on solving client issues and less on “invisible-to-the-client” concerns, was something that resonated with my own experiences so far.

At the same time, perhaps the most significant realization in my journey was understanding that the failure of tech start-ups (or innovative ideas in general) is not predominantly due to technology issues.

Instead, it often boils down to marketing mishaps and a poor product-market fit.

The new breed of scalable services started to allow teams to concentrate more time & resources on finding out if their idea is going to resonate with users and less on “invisible” technical issues.

Why startups really fail: Failory.com

Recognizing that a great product needs an equally great go-to-market strategy changed how I approach my role as a member of any organisation.

It’s not just about building; it’s about building what’s needed and ensuring it reaches the right audience. All startup team members, developers included, need to recognise this existential fact and continuously work with this concern at the forefront.

What Next? Do more with less

The journey that I’ve been on has been incredible, but its only just beginning.

While I believe we are seeing a convergence in web frameworks (signals, pre-compilation over framework libraries, SSR and hydration) & and an acceptance of the value of the “serverless” model, we are still only in the infancy of the tech industry.

AI is definitely changing things, quickly.

Quantum computing has the potential to massively accelerate what we are capable of.

And who knows what advances in human interfaces are in store for us in the next decade (think brain-computer interfaces or VR/AR instead of smartphones).

Although there will be change, some things will remain the same:

  • If you build something useless, it wont get used.
  • The process of finding out if something is useful or not to users can be seriously expediated if you build on existing tools, knowledge & services (rather than reinventing the wheel) .

For me, this means I will continue to strive to do more with less. Failing faster, with minimal cost, does mean more failures but continually gets us closer to a win more quickly & cost effectively.

I’ll also continue to trust my experience, extrapolate from past successes/mistakes, know when to learn deep or learn wide, when to build or buy, embrace the uncertainty, and understand that empathy for customers is just as important a skill as technical expertise

N.B. All of the above are just my personal experiences and opinions. I would love to hear if anyone else had similar experiences or had different experiences that have shaped their outlook differently.

My career is still in “development”. Gathering more experiences and opinions will never not be beneficial.

The Power Trio: Svelte, Supabase, & Vercel – My [current] Tech Stack of Choice

Standard

*this post is the 1st of a 4 part series of posts. This post gives a quick overview of Svelte, Vercel & Supabase, the following posts will go deeper into the technologies.

Part 1: Intro
Part 2: Supabase
Part 3: Vercel
Part 4: Svelte

Choosing the right stack for your project is akin to setting the foundations of a building. It needs to be solid, reliable, and scalable.

As a software engineer for over 26 years, I’ve finally found a stack that feels like home: Svelte, Supabase, and Vercel.

This trio has not only supercharged my own productivity but has also proven indispensable in my role as CTO of a small startup. When every decision weighs heavily on our budget and future, finding a stack that offers ease of use, scalability, reliability & cost-effectiveness, has been thoroughly reassuring.

Supabase, Svelte & Vercel

Why SvelteKit, Supabase, & Vercel?

Each component of this stack brings something unique to the table.

Svelte, with its simplicity and speed, allows us to build web applications that are incredibly fast and easy to maintain. It eliminates the complexity typically associated with front-end development. It makes the developer experience delightfully smooth. This has been a game-changer for us. In a startup environment resources are limited, and we need to move quickly without sacrificing quality.

Then there’s Supabase, an open-source Firebase alternative, which has been a revelation. It offers the backend services we need – authentication, database, and storage – without the overhead of managing these systems ourselves. Its PostgreSQL foundation means we’re building on top of a powerful, open-source database. Not only that, its easy-to-use APIs save us countless hours that would otherwise be spent on backend development.

Vercel provides a seamless deployment and hosting solution that integrates perfectly with SvelteKit and GitHub. Its global CDN ensures our applications are fast, no matter where our users are. Its commitment to developer experience makes deploying our applications as simple as a git push. In the fast-paced environment of a startup, Vercel’s scalability and ease of use are invaluable.

Productivity Gains

The synergy between Svelte, Supabase, and Vercel has significantly boosted our productivity. The reduction in context switching, the streamlined development process, and the ease of deployment means we can go from idea to production incredibly fast. In a small startup, where each member often wears multiple hats, being able to focus more on solving our users’ problems and less on the intricacies of our tech stack is a massive advantage.

Scalability for Startups

For any early-stage startup, the ability to scale efficiently is critical. This stack ensures that we’re not just building for the present but are also prepared for future growth. Supabase and Vercel, in particular, offer scalable solutions that grow with us. Both ensure that we can handle increased loads without a hitch (and without surprise bills). This peace of mind allows us to focus on innovation and delivering value to our users, rather than worrying about our infrastructure.

A Personal Reflection

My personal journey through the realms of large corporations and startup agencies has taught me the importance of choosing the right tools. In the past, I’ve dealt with the complexities of custom builds and the challenges of managing primitive services on platforms like AWS, Azure & GCP. While powerful, they often require a significant investment in time and resources to manage effectively.

In my current role, where the margin for error is slim, and our budgets are tight, the simplicity, efficiency, and scalability of the Svelte, Supabase, and Vercel stack have been a blessing. It’s a setup that supports rapid growth and innovation, aligning perfectly with the transparent, agile, forward-thinking ethos of our startup.

My 26 years of experience across different spectrums of the tech industry has solidified my belief that software development is hard, the tech stack should make it easier, and abstracting the difficult parts away to scalable services should always be considered.

With this particular tech stack, I have personally found a great balance between interoperability, scalability and extensibility. A word of caution though, what works for one team does not necessarily mean its right for others. However, for our situation, it’s been a testament to how the right set of tools can not only enhance productivity but also empower a team to focus on what truly matters – creating value for the users.

*this post is the 1st of a 4 part series of posts. This post gives a quick overview of Svelte, Vercel & Supabase, the following posts will go deeper into the technologies.

Part 1: Intro
Part 2: Supabase
Part 3: Vercel
Part 4: Svelte

Tech For Good – DigitalDNA – Hackathon 2017

Standard

Hackathon Success

As part of the DigitalDNA conference in Belfast in early June a hackathon was held in the wee hours around the topic of youth unemployment.

DigitalDNA: Tech Conference Held Annually In Belfast

The challenge was to develop, in teams, a app/service/tool to help alleviate youth unemployment, within 12 hours. The prize? A trip to Dubai to present to a VC firm.

Guess what, our team won, woot!

Domain Experts

At the end of the first day of the conference, while the ‘corporates’ were milling out, the ‘have-a-go techies’ started appearing from the shadows.

Panel Discussions

The hackathon started at 4pm with some invaluable panel discussion from youth workers around the topics involved with youth engagement.

The insight learned from these discussions, and from further engagement with these domain experts, really helped to shape everyone’s thoughts around potential solutions.

Programmer Fwends!

And then, we were ready to go…….almost.

First we needed a team.

Now, I’m a decent programmer, but I know my [many] limitations. Entering a hackathon on my own was not on my radar; I wanted to learn from others experiences and skills in this 12 hour window.

Conor Graham helped to broker team alliances

Luckily, there were others in a similar position, and we quickly formed a team; myself, Luke Roantree & Hussien Elmi (we did have Samir Thapa at the start but unfortunately he had to leave early on and could not return).

From working with Luke’s father at Spatialest and hearing good reports from friends about Hussien at Deloitte, I knew we had a great team.

Loads of Time?

12 hours to bring an idea to life may seem an achievable goal at first sight, that’s only if you have a clear idea in the first place.

Distilling Ideas

Creating and distilling ideas is a time-consuming process, but fortunately the domain experts were on-hand to help. By bouncing ideas off the experts our team managed to agree on an initial direction and set to work.

Ready To Rock

With only about 8 hours to go, we were ready to rock; we were going to build an app.

Hussien Ready To Rock

Myself and Hussien had previously met at an Ionic meetup where I was speaking; using this hybrid mobile app technology was a no-brainer for us. With Ionic you can build cross platform apps very quickly; time was of the essence. Although Luke had not used the technology before we knew he was a whizz at anything he put his mind to.

The Graft

Pumped up on red bull, coffee and pizza all the teams really started getting into their stride around 11pm.

Red Bull (other sleep deprivation agents are available)

After the original chatter in the early evening all the teams were furiously coding away. With the realization rapidly dawning that less than 5 hours were left on the clock, the teams had partitioned out their work and were now working in silos.

Bed!

Funny thing about coffee and Red Bull, what goes up, must come down.

Around 2am the effects of the long day and caffeine started taking its toll. Dreary eyed developers roamed the conference space and focus started shifting away from computer screens to thoughts of bed.

After 3am very few people were left and eventually even our team decided to call it a ‘day’.

After gathering up as many free cupcakes, cold pizza, beer and crisps as we could humanly carry (admittedly it was a lot!), we started to make our way home on foot. We must have looked a random bunch on the Ormeau Road at 3:30am, but to my surprise, not many people batted an eyelid at 3 geeks laden with that many munchies at that time in the morning, go figure!?!?

Presentation Time

The presentations were to take place in the afternoon of the 2nd day of DigitalDNA conference.

Whats my potential hybrid App

By this stage our app had quite a polished feel. Working with collaboration tools such as Trello, GitHub and Slack we had worked well as a team and had managed to produce an immense amount of output in a short period of time.

I had my daughter’s sports day to attend so it was up to the Luke and Hussien to present. They both knocked it out of the park!

The presentation was flawless and the demo was impressive. The judges were impressed not only with how polished the app was but also that the domain experts views’ had been taken on board.

Luke And Hussien Recognized for their hard work

In the end credit must go to all the teams. Every team worked hard on trying to find ways to alleviate the globally transferable issue of youth unemployment.

Kudos also to everyone involved in making the DigitalDNA conference happen. The conference brought together all that is good about the tech scene in Northern Ireland and beyond.

Big thanks also to the organizers and sponsors of the hackathon; it was really well run and we enjoyed every minute of it (even at 3.30 in the morning).

Hopefully all goes well in Dubai with our presentation to Falcon & Associates in November. However, with such a capable team and great mentors from the HackForGood team, we won’t disappoint.

E-Learning

Standard

Some much to learn, so little time.

Apart from ‘dark matter programmers‘, most developers are faced with the uphill struggle to find the time to continuously keep up to date with the industry. To paper over my (many) technical shortcomings I tried out some of the prominent online course providers and was extremely impressed.

The software industry moves so fast that keeping up to date with the latest tech and processes is virtually impossible; unless you do it virtually.

Brave New World of E-Learning

When I first tried online learning I was a bit skeptical that it could match the learning potential of ‘traditional’ methods. However, mainly due to the way you can learn at your own pace, I now would not want to learn any other way.

Institutions have big reputations from years of delivery. However, in this brave new world the methods of delivery are changing and new reputations are being formed.

Using this type of learning has a number of benefits for time starved developers:

Flexible. Finding spare time as a software developer is not always easy. We are fortunate enough to be in an industry which is currently booming and that means there is plenty of work to be done. Online courses are perfect for time-constrained individuals as most courses allow you to work, more or less, at your own pace and at hours of your choosing

– Accreditation. Many of the providers now offer “recognized” accreditation on completion of a course. How “recognized’ the qualification is largely depends on who is judging. For example, your next potential employer might not have heard of Pluralsight and its qualifications but might be a personal user of Coursera and is well aware of its merits/shortcomings.

Wide Variety. The course providers currently have a huge library of every type of subject and there libraries are expanding every year as e-learning becomes more popular.

Cost. Some are free but the rest are paid for. On the whole though, e-learning courses are generally cheaper. If you compare the cost of ‘taught’ industry courses that require you to travel to the trainer’s location, there is no comparison.

What I didn’t like

This type of virtual learning is not everyone’s cup of tea. Quite a few people can be put off by the impersonal nature of the courses. Without a lecturer to interact with and a physical text book, some just do not see anything else as ‘learning’. Most of the online course providers do try to simulate these inter-personal connection with the student, but in reality it is half-baked at best.

resized_conspiracy-keanu-meme-generator-what-if-they-find-a-way-one-day-to-physically-enter-virtual-reality-8a527e

I personally had trouble making sure that I kept enough time free in my schedule to make sure I completed the courses fully. Sometimes I really needed was a lecturer or dean making sure I kept on track.

Despite the disadvantages I can thoroughly recommend trying some sort of online learning; there is a surprisingly diverse catalog of courses out there, most of them very well thought out content and delivery.

Horses for courses

However, not all the online providers have the same range of courses, I find that some providers are better for certain topics than others.

The providers that I regularly use for different topics are as follows:

Pluralsight – Great for technical training such as web and server training.

Coursera – Great for specialized accredited courses from recognized universities.

Udemy – Great for social/personal development type courses.

 

Other providers do exist and i would be interested in hearing what else is available and your experiences with them?

Podcasts

Standard

So little time, so much to learn

Gone are the days for the software developer where you can learn one technology inside out, sit back and work at the same job for 20 years. Continuous learning, the ongoing voluntary pursuit of knowledge, is becoming an essential pursuit to most working in the software industry.

The technological landscape is evolving so fast that most of us programmers have to continually learn, or risk having an increasingly extinct set of skills.

learn

There are a number of tools that I have started to use which have helped me better keep apace with some of the changing I.T. industry landscape.

Technical Podcasts – Learn On The Go

If, like me, you have a relatively long commute into work [30 minutes or more], there are many excellent ways that you can utilize this time. Some like to read newspapers, listen to music, enjoy a good novel; I like to use this time to ‘sharpen my axe‘ by catching up on the latest goings on in the software development world through listening to technical podcasts.

Using this time to listen to podcasts has been highly beneficial to me in a number of ways:

  • Learn the lingo. Once you start listening to podcasts you are much more aware and confident with many of the phrases and terms used within the industry. Terms like ‘big iron’, ‘cranking code’, ‘heisenbug’, ‘pokemon handling’, ‘stringly typed’ etc are all now part of a colorful vocabulary thanks to listening to others using them confidently on podcasts.

heisenbug

  • Bleeding Edge. Most of the podcasts pick up on new technologies or practices. If someone uses a brand new technical term in the office that starts you sweating that they will ask you your opinion on something that you cannot even spell… you can be sure there is a podcast for that.
  • Different Viewpoints. Going outside your comfort zone, like listening to web podcasts when you have spent your life as a desktop developer, will open your horizons to similar, but different ways, to approach your own field (you never know, you might pick up a new golden hammer).
  • General Consensus. As well as picking up new terms and technologies it also helps to reinforce current terms or technologies that you are already using.

 

Lots of Great Podcasts

Here are some recommended podcasts that I am currently listening to:

  • .NET Rocks : My favorite podcast for technical content. Excellent audio quality, content and banter. Not as Microsoft centric as you might think.
  • Hanselminutes : Again good content and quality but sometimes steers away from tech relevant subjects.
  • Herding Code. Great web podcast. Sometimes a bit Microsoft centric.
  • Javascript Jabber. Good for web/javascript technology talk. Sometimes a bit tangential but very enjoyable.
  • Stuff You Should Know : My favorite non-technical podcast. Good for some respite from too much tech talk. Josh and Chuck are very funny and present some dry topics in an entertaining way. Some great and varied subjects like ‘How Pinball works‘ to ‘How the scientific method works’.

 

What other resources have you come across?

Have you had any experience with any of the resources I have mentioned, what did you think?