avatarSathishravi

Summary

A junior software developer at a startup shares insights into the reality of full-stack development, the necessity of delivering within budget and tight deadlines, the unavoidable nature of hacky code and workarounds, and the pragmatic use of older technologies like PHP and jQuery.

Abstract

The article delves into the author's experience as a full-stack engineer at a small startup, emphasizing the need to handle various aspects of web development independently due to limited resources. The author discusses the challenges of meeting customer requirements within strict budgets and deadlines, often prioritizing core functionality over aesthetics and user experience. The piece highlights the occasional necessity to write less maintainable code and implement quick fixes when dealing with third-party APIs and external libraries. It also addresses the debate around using older technologies versus newer frameworks, advocating for the practicality of PHP and jQuery in certain contexts, especially for internal use where they sufficiently meet client needs without the overhead of modern frameworks.

Opinions

  • Full-stack engineering is essential in a small startup due to the need to manage multiple projects and development stages with limited personnel.
  • Prioritizing core requirements and delivering a "Minimum Viable Product" is sometimes more valuable to the client than an aesthetically pleasing design.
  • Hacky code and clever workarounds are seen as necessary evils in the face of unexpected issues from third-party APIs and open-source libraries.
  • Older technologies like PHP and jQuery are defendable choices for business applications, as they can speed up development time and leverage the existing expertise of the team.
  • Newer technologies and frameworks, while exciting for developers, are not always the best fit for every project, particularly when they introduce unnecessary complexity for simpler applications.
  • The use of jQuery is justified by its widespread familiarity among developers and its relatively small impact on performance, despite the push for vanilla JavaScript or newer frameworks like React.js or Angular.js.

Reality of Junior Software Developer at a Startup.

Real world software development is quite different from what we have known before.

Photo by Christina @ wocintechchat.com on Unsplash

In this article, I share about my experience what I have learnt after working at a startup to build a web application that fulfilled the customer’s specific requirements.

Being a full stack engineer is a necessity at a small startup

As small startup company that contains only 8 people, it is simply not enough resources to recruit people specialized only within the frontend, backend, database or design. This can be probably very different from how those big companies work. User have several projects from different clients working concurrently. Everyone must complete different projects independently. Thus, it is necessary for everyone to grasp all aspects of web development to implement features and fix bugs.

Now let’s see an example, we had to totally implement a feature that allows the user to feature and edit records in an existing system. We always prefer to use HTML, CSS, and JavaScript to create out forms on the frontend. For the backend, we always prefer PHP and MySQL languages are to perform read and write database operations.

Delivering product that closely meets customers budget and requirements

The client sometimes requires software very urgently to solve some problem they are facing. They gave us limited tight deadlines and offer a limited budget.

It always requires enough scheduling in development time, price and quality of a software product. It is really quite difficult to deliver a high-quality standard product than a cheap product under this limited deadline situation.

So we decided to give more prioritize on developing the core requirements of the software first. A high-quality product always takes more time to build. To deliver the product on time and within the budget, sometimes we have forced our team member on all the aspects of aesthetics and user experience design implementation.

To be frank, the customer clearly explained to us that what he wants is a web application that can work for all his requirement. The customer emphasized many times that he does not care more about the aesthetics of the user interface, so that we decided to charge him the cheapest price as possible.

It might sound like the customer needs a better product. But he just need a “Minimum Viable Product”.

It is more perfect, That is good enough to be used to automate some manual work in his company.

Software development is an iterative process. If the software is more useful in the real-world entity, the client did not hesitate to pay more for us to improve on it.

Hacky code development and workarounds are quite unavoidable

No one likes to write ugly code that works, but not maintainable and scalable. No one likes to accumulate technical debt and pay the price for it later it makes us more terrible.

Personally, I have always tried to write some better readable, clean code. But sometimes there is no choice for us.

When integrating some other third-party API, it may end up with some unexpected results. This is because of their documentation that never clearly explained.

When using some external open source libraries, it contains some minor bugs. In my experience,it is because of incompatibility between different versions of libraries.

All of this may cause your application to crash, and your clients are going to be extremely unhappy about your final product. Although these bugs are not because of you, but they will think it is all your fault, and will definitely you on hold for your accountability.

In this scenario, the only way to resolve all the bugs in the third party code is by implementing some clever workaround in your code. Usually, it is frustrating, but it works and enables the product to be shipped quickly.

There is nothing wrong by using old technologies (like PHP, jQuery)

In recent years, a lot of new technology has been developed. They are React.js, Vue.js, Express.js, Golang etc.

A lot of people generally start with an older technology like PHP, jQuery, and Java because they are the basics one to understand it.

As a developer, it is always exciting to learn new technologies and build new projects. But for a business, there is no restrictions or conditions to use the latest technology.

In my company, the senior engineer has more than 10 years of experience in the field of developing PHP applications. Therefore we always gave priority to PHP codebase on common features for sending emails, notifications to a mobile app, and uploading images to AWS S3.

This ensures that in order to add a new feature in a project, we can simply copy-paste some code from our older projects and do some necessary modifications. It enables us to develop web applications more quickly with less time.

Although PHP has its unique functions as a language, it is good enough as a tool to build out the product that meets our customers’ requirements.

Also, a hot debate always there on whether the old jQuery should be replaced in favor of pure vanilla JavaScript.

Photo by Shelagh Murphy on Unsplash

Some people always dislike by using jQuery, because it requires more loading data of 30kb library when loading the webpage. So they advice us to use vanilla JavaScript because it can make web applications that are more lightweight and faster.

But due to the popularity of jQuery, most of the developers are more familiar with jQuery. Using a 30kb library is not a great difficulty that can cause a relatively small price to pay for higher development velocity.

Why not to use the newer frameworks like React.js or Angular.js?

In my scenario, most of the projects I have done are inventory management systems which is used internally by the clients’ company. The old jQuery is quite sufficient to implement all the features required by the clients.

By using JavaScript frameworks to build a Single Page Application will provide a great user experience. But it feels like a overkill for smaller web application used internally by a few company admins.

We are not against the usage of new technologies but we won’t hesitate to use the modern JavaScript frameworks if our client demanded a dynamic web application with complex frontend features.

Conclusion

I hope you enjoyed a lot and being a software engineer is quite interesting rather than writing some code. The real challenge is to develop a better solution within the budget and time for the customer requirements.

Startup
Software Development
Freelance
Business Development
Personal Growth
Recommended from ReadMedium