- upper management does not have good understanding of technology and
software development in particular - thus not really able/willing to fully commit
to the related long-term investments
- too formalized performance evaluation process - probably in attempt to make
it accurate and unbiased, even at the cost of depriving it of the real substance
- being a large and not-so-attractive company anymore, the quality of employees
can sometimes make a collaboration more challenging and inefficient
- project planning and task scheduling can make one feel just as a relatively expensive piece
of equipment that needs to be "optimally" deployed, and immediate managers don't pay
enough attention to the individual needs and strengths; further on, the excessive movement
from one software task/module to another sometimes leaves no one directly in charge of
the software quality and its conceptual/architectural integrity, and can make developers feel
too distanced from the results of their work, and consequently less passionate and responsible
for the future of that software
- actual software development process is too much controlled by project managers,
with a tendency to micromanage and put a premium on hitting sometimes
arbitrary and/or inconsequential deadlines over the engineering concerns
- very feature-centric and fragmented software development, with insufficient attention to
the inherent software development issues, and lacking the adequate processes and resources
for the general software improvements - from simple refactoring to infrastructure upgrades
- being empowered as an individual contributor is a mixed blessing - sometimes there is too much of
"distractions" from getting the most important things done, and lack of support from a software manager
with enough clout, will and attention to step in and argue for your side when really needed
- some of the cons mentioned contribute to the insufficient software quality, making the software hard to fix,
maintain and evolve, with too much time spent on dealing with production issues - and that often leads to
a vicious cycle of not having enough time to spend on vital improvements and technology upgrades
- lower management, although technically competent, mostly lacks a clout and/or backbone
to make significant changes to the prevailing software development culture
- in spite of opportunities to work on some interesting things, the cons mentioned make
the job of software developer less satisfying and impede the professional growth as well