I have been working on product related to the medical field since 2017, its a replacement for a depreciated desktop application that was very popular in the 2000s.
I don’t have access to that software, or I would need to pay 15K to get it, and I have to sign a lengthy support contract. however I do a copy of the manual from 1995, so I have been reverse-engineering the process from the start.
I’m using Meteor + React combo, I have learned how fast your code can turn into spaghetti, it took 6 or 7 iterations to make it manageable and I’m able to fix bugs with code I wrote over a year ago.
I started working part-time on the project in 2017-2019, it has been a little over a year since I started working on it full time.
I’m a lot closer to the end than the beginning, however, I do feel bored and exhausted and I lose motivation from time to time.
I would like to know if it’s normal for an application with say 10 ~ 12 sub-applications that of intermediate to advance complexity would take this long to build?
How many hours do you normally code for? I used to do solid 9-5 when I go to the office, but ever since the pandemic started I haven’t been able to put more than 4 - 5 hours a day.
Update:
The software was deprecated not because lack of demand, because the owner passed away, the company was sold to another company and they killed the software to promote their own.
Is it an application that you plan to market to medical practitioners / surgeries or similar? Have you demo’ed your work so far to the people who will use it? I guess seeing a positive reaction, an intent to purchase / pre-order, and even better, constructive suggestions from your target market would be the best motivation.
Hi @globalise,
I don’t think anyone would intent to buy a product that is not certified or incomplete, especially when it comes to the medical field, I don’t think I would get an interest unless your product has “paying” customers.
to be competitive, it has to have all the bells and whistles other software in the market have because, from experience working for software companies, a client can simply ditch your product just because your application missing a report, or it doesn’t send text message.
I guess you know your market best, but I always try to follow an early mentor’s advice (phrased in his blunt British Army fashion): “Don’t polish a turd”, meaning, check the idea is right before investing a lot of effort in it.
As @globalise said, I will suggest that you validate your idea before going any further. We developers tend to start coding when we encounter a problem that we think we can solve better than anyone. Many times thats true, but just for us. Maybe the market is very small, theres already a lot of competition, there are easy workarounds to the problem and many other scenarios that turn our brilliant ideas to just a project we worked for a while until we got bored.
So I will suggest if you have experience in the medical field to find a problem that no one is working on or that you can bring something different to the table but most importantly something that people is willing to use and pay for even if is not complete. You want to get the early adopters, the ones that dont care if your product looks ugly or doesnt have all features but it solves the pain they are having.
In my experience, anything that looks relatively simple and doable turns out to be surprisingly complicated. And what looks complicated at the outset is in fact horribly complicated. Problems, however, that look fairly complicated at the beginning are usually not even worth pursuing, since they are practically impossible to solve in a finite time.
I do have interested clients, looking to do 2 POCs later this year as agreed by my client, once it has been validated to be a bug free application, it will be rolled out to 15 other locations.
I appreciate everyone’s feedback, my question was really about developer productivity not and not about validating my business idea
From what you describe, it sounds like you’re walking the right path. But it requires loads of coffee and dedication…
My experience: we’ve built an enterprise platform and the work has been ongoing since 2015. We went through a couple of iterations, and the codebase is now at somewhere around 250K LOC (after some copious trimming!). I have personally put so many 20+ hour stretches into it that I lost count. We worked most Saturdays and Sundays and a few years even during Christmas and NYE. But you know what? It was and is worth it. And also it must be that we’re onto something, as this year we landed our first Fortune 100 client.
The kind of software I guess you’re on, is not quick to build if you don’t have a huge budget and an army of coders, but if you like what you are building, and you trust it, then pick yourself up after each tiring or boring activity and push forward. Even the most exciting project will wear you down given enough time. Take a little break every now and then and remind yourself why you are doing all this.
I wish you the best of luck!
EDIT: keep in mind that you will be at times learning, thinking, planning, and designing for tens of hours just to end up writing code for one hour. Don’t count just that one hour…
Interesting topic, thanks for starting it. Here is my personal take on this:
First, you’ll need to evaluate if this is something you want to do long term and if you believe this project has potential. Sometimes you need pivot and try different things, the vision and end goal needs to be within a grasp, meaning somehow in your mind you should be able to see a feasible path worth pursuing.
4-5 hours of pure coding from my experience is a good sustainable range, in fact, it is on the higher end and I’d even argue if you are coding more than that per day you might be compromising other areas. Coding is not typing, it is thinking, and the quality of the end product and the journey towards it really depends on the quality of the thinking.
Here are some tips that might help:
Accept the fact that web development is hard, many times tedious, and requires a lot of patience and hard work, but nothing worth achieving is ever easy, others everyone would have done it. Some simple apps can be developed in short time and the internet is full of articles about creating “MVPs” in a week or so, but the reality is that some products do take significant effort and time to see the light (yes hours, months and years).
Accept the fact that there will be down days, some procrastination etc, humans are not machines
In my view, coding is around 20% of software development, the rest is all thinking, learning, planning, decision making, designing, communicating, this is all work and mental effort and you should count it
Motivation will only get you so far, for the rest, you need to develop solid daily habits, you can aim for 50 minutes work/10 minutes break session repeated several times for work, this is the 50/10 timebox and you can learn more about it here, you can try toggl.com for a timer app.
Try to make the thinking, design, and planning aspect of the work engaging and fun. This can be done using Kanban walls and sticky cards on your home etc, try to be creative.
Remind yourself why you are doing what you doing, and visualize a successful outcome
Eat healthy, exercise, and sleep, maintain a healthy posture while coding, use ergonomic mouse/keyboard, use two screens etc.
Engage with the online community (Meteor forums, github etc)
Engage with your users/clients and set up sprints and status updates
Read some good books on this topic on your spare time: The War of Art, Do the Work, Habits, The Hard Thing About Hard Things, The Mythical Man Month, Deep Work are on top of my mind
I hope that helps and best of luck on your project, it sounds like a good niche, alright I should get back to work and stop procrastinating
I truly appreciate your feedback and thank you both for sharing your experiences. Yes, it requires lots of patience, coffee, and motivation.
Today’s web applications are demanding and hard, I’m grateful that I picked Meteor js from the get-go, I think I would have given up if I have tried using other frameworks. (Node + Express … uh!!)
Aside from React + Meteor, integrating 3rd party packages and tooling and have them work with meteor, had the biggest setback on my progress. (Months of delay probably a year).
Full Calender + plugins
Datatables
Select2
Bootstrap select “Select picker”
charting
Modals and React
State management (undux js)
MongoDB Aggregation framework, used in accounting, charting and reports)
I believe tackling such project alone is one of my biggest regrets.
I think you’re using React Bootstrap I’m using it as well and I wished I used Material UI or AntD. We spend a lot of time plugging those React components together and for enterprise software, I think it is better to use something like AntD.
The other thing I’d say if you’re a solo developer you’ve to prioritize/simplify ruthlessly and avoid gold plating as much as you can. You want to do the absolute minimum in a feature to be able to gather more feedback from a client.
You might also want to consider splitting the project into packages/modules using NPM or Meteor packages and have a contractor to help you at some point. But keep in mind that adding more people to a project is not always good, you can read about Brook’s law if you haven’t done so. Also, there are other pain points with engaging others (unfit hire, communication overhead etc.), the grass is not much greener on the other side, frankly, in some projects, there is little room for parallelization when it comes to coding/planning it just takes time, there ain’t many shortcuts to take (aside from using something like MeteorJS and good tools) but then there is inherited domain complexity and logic which no tool can address (as of today, perhaps with AI in the future), this domain specific logic and design has to be coded manually and that takes time and effort, the more complex the domain (medicine, finance, law, banking etc.) the more manual specialized work there is and the longer it takes.
To put it bluntly, if you believe this project is worth it, you’ve a solid potential paying client and you’re halfway through, then to avoid failure you’ve to roll up your sleeves and keep grinding until you see the end, it is kind like going to the gym, you’ve to be consistent and lift the weight to see results and learn to enjoy the journey when you can. I can assure you that there are many people currently working in companies (or unemployed) that would love to be in your spot, opportunities don’t come by often so don’t waste it.
I feel like this is a partly philosophical question, that could have quite a few mixed messaged answers; however, here are a few rules that I have come to live by when developing:
The best code you ever wrote, is the code you never had to write. Meaning…you should spend as much time as it takes PLANNING your app/functionality/design/UI as you need to ensure you avoid those ever time consuming pitfalls…its seriously AMAZING how much time this will save you.
Know when to walk away. Sometimes your brain needs rest. Whenever you are in the zone coding, its like a brain workout…sometimes you NEED TO REST! Almost every developer will tell you most of their best solutions to problems came to them when they were AFK. Don’t be afraid to get away from your workstation and work on something else…trust me staring at your screen will not give you an answer.
Thats it! Honestly everything else you are asking about is important, but most of it will be a drag if you are too mentally fatigued to do it. One last little tid-bit…know when you/your employer needs to hire help. One person CANNOT do it all.