
Ask HN: Suggestion for software methodology in growing small-scale company - kharazi
As a co-founder of a software company, I have an experience of working in the various projects in last 3 years. We founded our company with 4 teammates and currently, we growing to 16 teammates. our teams separated into two sub-team:<p>a) Most of our developers work on developing software solutions (Mobile and Web Applications)
b) around 3 or 4 people work on Machine Learning<p>In some projects, two teams work separately and in some projects works together to develop intelligent and full-stack solutions. usually, we have 5-7 concurrent project in our company.<p>My challenge is about managing projects that concurrent and dynamic and we have the serious problem in managing project. Do you know any software development methodology or any suggestion that works well in our case?
======
viraptor
So what are the problems you're facing? Coordinating the deliverables? Not
enough people to tend to all tasks? Something else?

~~~
kharazi
Coordination and collaboration are our main problem. recently we can't manage
our tasks and we can't collaborate with each other so we have latency in
delivering our projects.

~~~
brudgers
Assuming that the system is resource constrained, that is simply the
mathematical nature of scheduling. Where there is statistical variation in the
arrival and duration and priority of the work, optimal job scheduling is NP-
Hard. [1]

With just a few actors and jobs, brute force can find efficient solutions.
Just to throw numbers around using staff as a standin for a more complex model
of the work:

\+ The search space for 4! has 24 permutations.

\+ The search space for 16! has 2.092279e+13 permutations.

Suggests that maintaining efficiency as the company grows will be hard.
Profitability is probably a better metric and finding better clients/jobs by
adjusting the sales funnel may be easier than engineering organizational
efficiency because sales and pricing can scale linearly using well documented
practices while engineering an organization requires dealing with the vast
variability among individuals and the day to day variability of their
interactions (i.e. the client who is having a bad day because their child is
struggling in school).

Good luck.

[1]

