3

Our software company employs four programmers (including me). Two of the developers are working on our current software, and the senior developer is working with me on a new software as a service implementation of our old software.

The new software requires that two web applications be written, one is the software that clients will use, and the other is a configuration web application to set up tenants for the main application.

The senior developer has been working on systems within the main application, while having to tend to internal matters all the time given he is now the VP of the company. I have been left to handle the entirety of the web application that handles managing hosting, users, permissions to access billing, integration with Stripe for billing, creating a RESTful api to access tenant data, etc. I was given free reign over what technologies I would use, how I would use them etc, except for the fact that we have to use Azure for hosting.

The project's desires have been expressed, however the actual technical implementation of the system and the design of the application was left for me to figure out. Now I'm at a point where I feel like there are a ton of systems I'm forgetting to get functioning properly, I jump between systems that get broken, improved, or otherwise rewritten due to poor planning, and I just feel as if in a standard setting, a team of engineers would figure out most of the system's internal functions before approaching development.

I'm 21 years old, I don't have a computer science degree, but I'm very good at software development. So I feel as if I've been given something I'm not ready for yet (not the development part, I can do that. It's the project management and systems designing part).

I don't even want to bring it up at work to my boss because I feel like it will make me look like I'm not doing a good job, and I'm also worried that I would walk into that conversation not being able to express my discontent of how we even do software development there, causing me to just get a few answers like "Let me know if you need help" or "What do you have left?" the sort of questions that are really just a matter of pressuring you rather than actually figuring out what's wrong and getting a team effort on it.

I'm getting paid $40/hour, I don't want to lose that income, but I feel like I may be better off going somewhere that has a team of people capable of working on projects, and not just four guys in a small room that's constantly bombarded by distractions, etc.

  • For the PMing and design parts: if you ever need help, or an opinion about a design (or anything), just ask for it. Whatever stage of your career you're at. If he does say "Let me know if you need help", say "yes". Even if your boss is busy being VP he'll should have time to answer questions, particularly if you can ask them efficiently (e.g. propose a solution too, so all he has to do is agree with you) and if he really is too busy try one of the other developers. – Rup Sep 2 '17 at 1:22
  • VP is an awesome guy, but I know just as much, if not more in a lot of areas when it comes to web. The other devs are clueless on web and don't have an education in CS. The problem I have with someone trying to offer help is the fact that I am responsible for leading at that point. I'm just not ready to head on an entire web app by myself, though I did it there before for the internal website. Learning a lot, but it's challenging to be put in a position where I have to take this much leadership. – Colin Laws Sep 2 '17 at 1:25
  • Nothing in your question says how big the project is and thus there's no way to even address the question of whether it's too much for a single developer. What I do clearly see, however, is that you're being asked to go beyond your abilities. – Loren Pechtel Sep 2 '17 at 4:04
  • Something like "How can I / Should I have a conversation with my manager regarding changing my job responsibilities" would make a better question. We have no way to know whether you're being asked to do too much (since there isn't really quantifiable data here and that's a bit far into the developer domain to be answered here), and, even if you are, us confirming that won't really help your situation. If you don't feel such a conversation would go well, your choices are to either accept your situation or leave. – Dukeling Sep 2 '17 at 9:02
  • Sorry, sometimes people have a hard time putting things in certain terms. The scope of the issues with my job far surpasses the scope of what I should write here. That's why it's hard to really get across what's wrong here. You guys helped, thanks. – Colin Laws Sep 2 '17 at 15:11
7

TLDR: Get a technical specification. If you can't get one, write one. Have a peer review it. Split the project into smaller tasks. Solve these tasks one by one.


I was once in a very similar position. As a junior developer, I was asked to design a new web application and I just started coding - fixed the problems as they came, and introduced new functionality on-the-fly.

I spend 5 weeks coding the application, and 6 months fixing all the associated bugs.

That is the worst thing you can do

When one of our senior developers got a similar task, I was very curious how far he was after 5 weeks. I remember very distinctively that he said:

I haven't written a single line of code yet

Instead he had written a full report on the project, including

  • A full specification of project scope
  • A list of any potential security/internal issues
  • Numerous different use cases
  • Interface mockups
  • Device compatility charts (different browsers/devices/resolutions)
  • Software (webserver) and hardware requirements, along with scalability requirements.
  • Full database structure along with available database driver
  • Backend and frontend specification with focus on performance, maintainability, scaling etc.

Everything had been peer-reviewed.

I recall he spend a few months implementing the application, and we barely ever had any trouble with it.

Conclusion

You need a technical specification. Either you get one or you write one.

If by any means possible, have a peer review it.

Do not start writing any code, before you have a plan.

When you do have a plan, you should divide everything to tasks and add them to your companys collaboration tool (JIRA, Trello etc.).

When you've done that, you have a complete overview of what you have to do and how far you are.

When asked for an ETA for your project, remember to always set of additional time for unexpected errors.

  • That's essentially what went wrong with this project. The lead engineer and I came up with the way the system will work, outlined the requirements, but never put it into a formal doc. Just jotted down notes here and there, and just kept good memory of most of it. That only worked up to a certain point. – Colin Laws Sep 2 '17 at 15:14
0

Yes you are, but I'd add that this isn't entirely uncommon in the software industry, at least in the scope of my experience and network. Your case might be a bit of an extreme, but it is not entirely improbable that this could happen again, elsewhere, to a slightly lesser degree.

A lot of companies are under-staffed and over-worked, and many of them tend to under-fund their IT departments, considering them a 'cost centre'. This can, in some cases, mean that software developers are stretched too thin. It does sound like you may be experiencing somewhat of an exceptional case, though.

I would add that if you're not happy in your current situation there are companies out there which will be more realistic about the work they give you, you just have to be careful to understand the culture you'd be entering before accepting an offer.

  • The culture here is toxic, misuse of the Agile/Scrum process, testers walk over to the team every day with problems (stalls development and distractions). Racism is rampant everywhere and I'm nearly the only liberal leaning person, my project manager has too much stuff on his plate as a VP and a lead engineer, and I'm just left to impress people with new stuff with little input about the engineering side of it. Just a wreck. Thanks for the answer, that helps. – Colin Laws Sep 2 '17 at 1:09

Not the answer you're looking for? Browse other questions tagged or ask your own question.