Pros
Throughout my time, I was able to get an introduction on professional software development and some experience within the field. I was also able to meet some great coworkers, creating lasting relationships with them. With the high turnover, if you do get a job at AllofE, you will have pretty good job security.
Cons
[TLDR: If you are you looking for a job where you are ONLY looking for software development experience and getting the opportunity to be micromanaged in a mediocre, toxic company environment, this is the place for you] Unfortunately, nearly all of my former coworkers mentioned above have left the company. AllofE exclusively hires inexperienced developers or newly-graduated students due to more experienced developers not applying and newly-grads being more easy to take advantage of. For the past few years, all new developers have been hired part-time and then moved to full-time as long as one of the three senior developers liked them. It pushes to get as much work out of an employee as they can before the developer either gets burnt out or leaves for other opportunities once they realize that life in software development can be better. If those that are hired choose to stay for longer than about a year, they are pushed to a more “leadership” position, becoming more middle management between the CEO and any new employee. The turnover recently has been extremely high, with a developer leaving almost every month. For a company that talks about wanting to be like a family, employees, both current and former, are not treated as such. All the developers that left during my time there were never appreciated for the work that they did. Instead, any mistakes that they may have made after they left were amplified and put on notice by the senior developers. Employees are required to clock in even as a salaried employee and there is absolutely no flexibility on your work schedule. Developers are expected to go into the office at 9:00 AM (when ironically, the few long-term employees there almost always come in 30 minutes to an hour past that time) and you are pretty much required to stay past 6:00 PM. If you leave earlier than 6:00 PM, you’ll get a talking to about not fitting in with the company “culture”, regardless of any reason you might have outside of your attempted “Life Outside of Work”. If you try to leave at 6, senior management somehow seems to call you in for an impromptu “meeting” which for some reason always seem to happen at around 5:55 PM. All of these meetings could have been done earlier at any part of the day. They also expect you to come in on Saturdays and work a half day, even though they say that it is “optional”. However, expect them to guilt-trip you on this and call you disloyal if you choose not to go. The pay / salary is way below average for a software developer role. Any pay raise after your annual performance review is exceptionally minimal and if you bring up any mention of a larger pay raise, for reasons such as more responsibilities, having a larger role in the company, or even inflation, you will instead be blessed with a long philosophical talk about life being unfair and how bad your generation is from the CEO (As there’s no longer an HR person). The benefits that they outline are extremely limited. Insurance premiums are above average and you are eligible for a 401(K) plan after a full year of working there full time. But, with such a low salary, your overall gains are limited. You get a maximum of 5 PTO days during your first 2 years of working there, along with about 7 holiday days. However, if your timesheet indicates that you did not work 8 hours on any given day, PTO time is taken out. During my time there, the building’s temperature regulation has almost never worked consistently, so coworkers would complain about freezing fingers or uncomfortable heat. Sometimes, the water pipes would clog up and the water came out in a yellow-ish color. Group activities only happen if a coworker happens to plan something out and gets enough people to participate. However, almost everyone that did plan things out have left the company, and the long-term employees still there (5+ years) do not participate. Group lunches are done about twice a year, once for the CEO’s birthday and another before-Christmas lunch. Your work responsibilities will consist of doing one assigned task after another on aging machines. The tasks assigned are generally client requests for a web application and the code base for the app is a great learning opportunity. The modernized version of it is structured well enough that it is a good for new developers to get started on. Most of your tasks are not time-sensitive and the code base is mature enough that most tasks will never reach the point of facing a tight deadline. However, anything not code-related is poorly structured, borderline unprofessional. Clients are continuously gaslit and manipulated into thinking that any issues (unless glaringly obvious that it is a system bug) after their system implementation are on them misunderstanding the system. Once they are locked into onboarding the system, they are treated disgustingly and that sort of behavior trickles down to the company as a whole. The CEO and the most senior engineer spend most of their time sitting in the CEO’s office looking at client requests and attempt to plan out who is going to work on each request. However, these planning sessions inevitably result in tasks that are not well-thought out, which leads to issues during the development process. In most cases, quick and possibly “temporary” (but actually permanent) fixes are encouraged. This leads to other issue that inevitably pops up in some future task / project. Prioritization is all about Quantity over Quality & Short Term over Long Term. There is a lack of detail from the initial developmental life-cycle all the way to the production deployment process, resulting in sloppy work. Senior developers care more about satisfying the CEO’s needs instead of focusing on the client and/or product needs. If any potential issues that clients could run into are brought up and not deemed high priority, they are ignored and in most cases, clients will come back to complain about them. Any solutions that are outside the scope of the knowledge of project leaders are usually considered too complicated or too time-consuming. It is no coincidence that turnover is so high with some of the major issues outlined above. The cause of these issues can singlehandedly be explained due to one thing, the company leadership. The CEO has an ego the size of an intergalactic planet, but the emotional maturity of a teenager going through puberty. Nearly all tasks (and therefore your communications with your project leader) and all client responses go through the CEO. The CEO will attribute any sort of success or technical growth all to themselves, while putting the blame on everyone else on any issues that come up. If you attempt to explain some sort of concept or interface to give a broader scope of a client request or project, the CEO will blatantly say they know everything about it and talk about efficiency but eventually, the conversation circles back to having to explain the whole thing in smaller bits, taking twice as long. Any sort of discussion tends to become them overcompensating about their intelligence and experience, talking about the millions (or billions) of lines of code that they have written and how you yourself are a product of their leadership. The web application that you get to work on provides some opportunities to learn something and it had such potential. The company itself has room to foster a great work culture and environment. However, due to poor management, inadequate leadership, and the lack of team consistency, it is disappointing that the product and company most likely won’t grow or improve much further without a drastic change to the fundamentals of the company.