My employer has a need for a web-based application to manage and share data within the department, with approximately 50-75 possible users. I feel I have the ability to write it for them. I would likely use Python/Django with a MySQL database, so it would be open source. However, I’m the only IT person in my department (our larger organization has a separate IT support staff with which I often work, but not for web development). I want to develop this application, but if I leave in 1-2 years, and someone else has to come in after me and support it, will this be seen as a bad decision?
This is assuming all the obvious points — I will write documentation, I will comment my code, and I will strive to follow good application design principles. But will that be enough? In principle, is it acceptable for one person to develop and support an entire web application? Is this a “do first, then show and ask” kind of situation, or should I be certain it will be adopted by everyone involved first?
With regards to specifics, I work in an academic department of a university that has specific processes for student applicants and for their being admitted. You have to apply to the university, AND my department separately. The department-specific process is very manual and pieced together, which is where my development would come in. We (myself and IT) are already planning on incorporating the additional questions that pertain to my department into the main university application (which IS electronic, and feeds into PeopleSoft), so that solves the front-end piece and everything would be in one place. But for the faculty and staff to acquire and “digest” that information throughout the admissions process will require an application of some sort, which I would prefer to do “my way”. The IT staff want to develop it ALL in PeopleSoft, and I fear it will be too inflexible and will not be well received by our department, and may still not completely meet our needs. There are third-party solutions which meet this need perfectly but they are cost-prohibitive. I would query the data from PeopleSoft and present it how I know the faculty and staff need to see it. (Getting access to query PeopleSoft is a different battle altogether.)
6
If your employer has an IT department your development may lead to some political unhappiness 🙂
Where will your site be hosted? Trying to hand some external development off to the IT folks could be problematic.
I would suggest having your department head put in a request for IT to drive such development and that you try to get involved with it.
Most organisations have a set method / SDLC they follow and may have some set technology choices that do not include those that you are familiar with.
At the very least get the OK from IT to continue with something like this.
1
I would say some of my best engineers came from doing exactly what you are describing. Being placed in a position where you get to make these decisions (many engineers in larger organizations don’t get those kinds of choices) helps increase your level of understanding by leaps and bounds.
Yes – it’s a little more stress. But this will be something you created, it gives you incentive and a strong desire to learn, and an ability to hone your skills for learning how to learn.
I’ve led too many teams where engineers rely on the answers others provide without critical thought to the implications.
This project sounds like a great way to build not only your development skill set, but your technical leadership skill set, your open source skill set, your critical thinking skill set.
You will also learn something all the other developers rarely learn … what it is to maintain an application that you yourself wrote! You know how differently you approach software development when you have to eat your own dog food?
One of my requirements for Jr and even Sr engineers is that they maintain the software that they may one day develop on.
1
Being a sole developer is a blessing and a curse. Many people will never get the opportunity though so take it and you will learn a great deal by having to maintain your own mistakes, feeling the pain you will learn many things folks in large corporations never do. The curse part is that you will not get the outside input that can sometimes accelerate you’re ability to apply new solutions which you wouldn’t have recognized on your own. Moral of the story, take the rare opportunity, but don’t stay at it too long as the insularity can cement bad habits without folks to correct you. Also make sure to be active in online communities with other developers to get as much of that feedback as you can. See https://codereview.stackexchange.com/ for this purpose and perhaps search for a forum you can share ideas and get discussion on.
Given your problem scope you need to look into two tools types of which there are many and utilizing these to create your solution will yield a far stabler more comprehensive solution: ETL (Extract Transform Load), and a Reporting Engine. Try to do as little custom work as possible, this will minimize your maintenance work and though integrating tools together may not seem as glamorous as hacking out your own solution, it will display a higher aptitude for seeing the whole picture and recognizing the value of a problem being solved is greater than a solution being made.
The problem domain you detailed is a very common one and it is known in industry by the term “Business Intelligence”.
What you want to do is extract data from the peoplesoft database, transform it into useful aggregates for your purposes, and load it into your own MySql database. Following that, you want to generate reports off that MySql database to display information in a useful manner to your colleagues. Usually reporting engines will have things like schedulable executions, and optional automatic e-mails of said reports etc, these are the robustness and comprensiveness features it’s nice to get from a reporting engine rather than hand-writing something.
Here are some open source reporting engines I was able to dig up (I know nothing about any of them, the analysis of these solutions and others you may find is on you). Note, there is a significant difference between “charting” and “reporting”. Do not confuse the ideas and think reporting just means pretty graphs which won’t convey all your information, that’s charting. Reporting refers to generating reports with both tabular data and graphs as well as any general information you want to display as you would expect in a report.
Python:
- Gerald Reports – http://www.geraldoreports.org/
- PyRep – http://code.google.com/p/pyrep/
- RLib – http://rlib.sicompos.com/
Solutions in other languages may interoperate well with python so don’t ignore them until you do your technical analysis.
Java:
- BIRT – http://www.eclipse.org/birt/phoenix/
- Jasper – http://www.jaspersoft.com/
- Pentaho – http://www.pentaho.com/
- G2 – http://code.google.com/p/g2-report-engine/
C++:
- ReportLab – http://www.reportlab.com/
- OOFILE – http://www.oofile.com.au/reportwriter.html
This question talks about reporting engines with opinions:
https://stackoverflow.com/questions/126622/open-source-reporting-engines
Here are some quick ETL solutions I found.
- petl – http://packages.python.org/petl/0.11.1/index.html
- pygrametl – http://pygrametl.org/
- Simplistic Python ETL – http://www.ohloh.net/p/etlpy
Trust me I have been in your shoes and yes I have maintained the application that I had developed earlier. From my experience I think that a senior could fasten the learning process on the best approaches to a given problem but this will pay off itself as you start finding such approaches with experience. This will enable you to be more self reliant than other developers as you will be a part of every stage of the SDLC ( Requirement Gathering to Maintenance ). This overall experience will also help you know which part of development you enjoy the most and focus more on that!
I want to develop this application, but if I leave in 1-2 years, and someone else has to come in after me and support it, will this be seen as a bad decision?
No – If you follow the obvious points you mentioned ( document, comments and good design ).
In principle, is it acceptable for one person to develop and support an entire web application?
Yes – If I understand correctly, you already have experience in development but not necessarily in the web domain. This will be a good opportunity to hone you skills on a web technology. One thing to remember is that since it is a new horizon, you have to take the criticism from the users with a pinch of salt.
Is this a “do first, then show and ask” kind of situation, or should I be certain it will be adopted by everyone involved first?
I think you can clarify your understanding in the beginning as much as possible and then increase the visibility by making a prototype with the basic functionality and ask for the user’s feedback. Change your approach if required and then plunge to a full fledged development.
Wish you all the best!
“Bad”? No. “Ideal”? Nope.
Depending on the impact of this application among the user base, a single person could certainly handle the maintenance of this. And any incoming replacements could as well. I’d say give the project a try, but stress all along the way your desire to temper expectations (the amount of time/effort required for feature requests or bug fixes, coupled with any other “duties as assigned.”).
The downside – from the company’s perspective, and you probably wouldn’t enjoy it either – is the possibility of a “bus error”. The chance that the one person who knows how the app works (you) gets hit by a bus, and suddenly the company has 0 people who know how the app works but is still depending on it.
If I were your managers, I’d be asking how critical this tool will be to try and understand the severity of the risk, and definitely whether there’s some off-the-shelf tool that’ll do the same work but be easier or cheaper to support.