So, thousands of Hungarian college students turned their theses in last week. It was probably the peak in the middle of a sleep deprived period, as examinations are also still taking place. I decided to save all my key insights from this extraordinarily amazing period of time. (riiiight.) Hopefully it will help future generations who still want to graduate from college! 🙂
Feel free to add your own insights at the end!
Getting the right topic for your thesis:
Find something you love already!
That will help you find motivation to actually sit down and dive into it.
Find a person or a group of people who will be glad to have the software you create!
Do something useful (or entertaining), you can always find an open problem in your personal life or just around you among the members of your family or friends which can be solved by a simple app.
Although google play is full of apps for literally every purpose, having a new one is not a useless thing to do. The reason for that is the special customizing which you can achieve. I experienced the disappointment a few times, when I tried to find an app suiting my needs, and there were several kinda okay ones, but I haven’t found the one that is just right in every aspect.
While I was a full time university student I was volunteering for this great organization called Erasmus Student Network. this is a motivated group of students doing their job in an exclusively non-profit way to help incoming international students, with social integration, paper work, life in Budapest and also organizing regular events like trips and parties for them. I had several positions and worked my way up to be vice-president at the local level, so I was quite aware of the everyday problems we regularly faced. I had ( and still have ) a strong emotional bond for them, their purpose and their mission so I decided to create a software which will help them. but even if you are not a very social type of person, you still surely have some people who you love and for whom you could create something useful.
Find something that helps you or you could be interested in using.
If I knew more about game development, I would do Sims2 with my Little Ponies instead of people cause I , personally , would play all day and all night with that (And then never let it out of my hands, cause Hasbro and EA Games would probably sue me Also in case anyone reads this from either of the companies mentioned…. PLEASE DO IT! )
Relate to your work.
When I sat down to code, I often faced problems I have met already at work just a few days before. And I also faced problems the following week at work that I had already solved because I needed them for my thesis.
Choosing a technology that you use in your work might sound like a bad idea cause there is the threat of finding it boring. “I was doing this shit all day, why would I want to continue, when I get home? I think I am more likely to elaborate on something related to my hobbies” yes, if you hate your work it might feel like this. but I’d prefer to choose a topic I am experienced in. It is comforting and I would feel more confident with my decisions.
As a junior developer there are a lot of people around me with lots knowledge on the topic and they can help if I’m stuck with a feature that doesn’t quite work as i imagined. and also they’ve seen a lot of apps and have the eye for UI (user interface or design) and UX (user experience and usability) mistakes. They can give advice on how to be more successful with what you’re doing and you too will be more satisfied with the result.
Also, we have this phrase that only means anything clever in Hungarian, and it sounds something like “More eyes will see more”. That is so incredibly true! If you develop an app yourself, you are highly unlikely to be able to find all the bugs and crashes. I know what I implemented and i know where to tap to use it well. The first moment I handed my half-baked app to my colleague, he found an error which made the poor thing crash. It was just a few minutes to correct the mistake, but I don’t think I would have ever tried to use it in a way that would have helped me find the bug.
Ask your professors for advice! (Really!)
In Hungary we have to select a mentoring professor, for our thesis, who will help us with ideas, requirements and technology, but even if you don’t need to do that, it is helpful to ask someone you respect from the university to recommend a topic for you. You might like the idea, and if you’re lucky you can participate in an ongoing project as your thesis work.
Find something that you have some experience in.
I stepped out of the university building’s gate thinking that whoah gaming is the future and unity 3D is supercool and i wish to have my own project for my thesis in this field. And then later i realized that without relevant experience, and ideas about a life-cycle of creating a 3D game, it would take 3-5-10 times longer for me to get it done, and of course the deadline of my thesis wouldn’t allow that. So i had to change my mind.
I started working at Wanari almost a year ago. But by developing for android everyday since, I learned a lot . For example being a part of an amazing team, surrounded by cooperative and kind people supports motivation very well. I also had the opportunity to be a part of several projects, get to know the useful and essential libraries that you need for development, the process and the steps of writing features, testing, fixing bugs, and a lot of agile methods which will make a lot of things easier. And when I had to make my decision about the thesis topic, I was more confident that I would be able to finish a full project in the android field than any other technologies.
Plan ahead! (Easier said than done.)
Let’s assume you have a topic in your mind, it is innovative and useful and all in all wonderful. Before you run to the university to fill the papers about doing it, just stop for a moment and try to make a plan.
Stop now. I mean it. Bare with me here for a sec:
1. Include the list of technologies you’ll have to use, and possibly rate your knowledge about them. The closer the deadline is, the more you’ll have to be experienced in them.
2. Collect the features you’ll want to include in your app and check how many screens those will require.
3. Draw some plans about the visuals. How will the buttons, and the layouts look? How many unique design elements will be required? Do you need 3D models? Do you need some kind of artwork?
4. Do you plan to connect to a server? If yes, are you planning to run your own server for that purpose?
5. And when you’ve collected every detail, try to measure the level of difficulty of your project and compare it to the level the university requires. You surely don’t have to overcomplicate it.
And of course the most important in the end: Do you have enough time left to implement and test everything and also write the documentation about it?
After Getting started with your thesis:
Look for better solutions online.
When you are ready with the planing, browse a little about the topic you chose. Hundreds and thousands of libraries are available online on GitHub or Android Arsenal, where you can upgrade the look and usability of your UI, support the inner processes of your app, and simplify the methods. (And most of them are free to use.) A lot of improvement can happen in your work by just a little time sacrificed for the sake of the Internet God.
I remember how much time I spent suffering with some customized radio buttons, which kinda worked on android, but were still way out of the fully supported functions (they came out to be also very ugly in the end). On the last day of the development process I downloaded a library and changed all of them in less than two hours, and now it’s is done with less code, is more understandable from the outside, animated, and also looks cool. If I had looked it up online first, it would have saved me long hours of coding.
Do not procrastinate!
Easy to say, huh? Ctrl+N … 9g…. Enter…. Whoops. Believe me, you can never have enough time. If you don’t enjoy doing it then that’s why, If you like it and you wish to elaborate the features and include every cool thing that you thought about , then that’s why. I’m currently in the second phase, and i would be sooo grateful for just a few more days, when I could do some “fine-tailoring”. And now I regret all the days from the past few month when I could’ve made progress, but I was just lazy.
Also if you need to write documentation for your software…. How many days do you think you’ll need to finish it? – Okay, now multiply that by two. I thought, oh never mind, I just have to write some simple things about my app and that will do the trick, but no: that’s not how it works. Also you’ll definitely need a proof-reading session, and it could help a lot if someone experienced in your topic checks it too and tells you his/her opinion about it.
Give it out of your hand from time to time.
I asked my dad , and later a few of my friends to try my app for a few minutes and watched them while doing it. And it made me realize a lot of things about how I imagined methods to be logical and in opposite of that, how a simple user will find it comfortable, and where will they search for certain buttons. This gave me the opportunity to correct and improve the user experience very fast, and to include handy features I haven’t thought about yet.
Try using version control and task management, just like you would do it in a company project.
Even if you do it alone, use all the advantages of Git (or whatever you prefer) and do branches, separate features from each other to have everything done in an organized way. It is also useful when you have to rollback some part of the code because of a prior mistake. Also if you have access to JIRA it could keep you focused on prioritizing among the parts of your application and with the available charts and diagrams at the “Reports” function, you can monitor and control the whole process, and the progress your making. It might seem like too much effort for something you develop alone, but upwards from a certain size and difficulty of a project it will save you time and frustration also. (You’ll have to judge that yourself of course, if you are likely to get lost in the details, or not.)
The outcome of all this:
So now that I finished everything, here is a little sneak peek of what I did. Let me introduce the ESN PR Wizard:
This is a solution for creating PR content for social media fast and easy, without having to use PhotoShop or even a computer. ESN has strict rules for visual identity and this app aims to provide tools for following them. The required colors, fonts, color overlays and desaturation can all be found in the app, and section logos can be added from the phone’s gallery. Also, I included the Visual Identity Manual document, so users can check out those rules anytime.
I learned a lot at Wanari and my thesis project would obviously not have been the same without working there. Thanks to those who took the time to help me by testing the app and were happy to speak to me about it (see above :)).
As far as the grade goes… let’s all cross fingers for a good one! 🙂 (the Ed.)
PS.: Picasso tried to give me a hard time, but I needed it for my app so I pulled through. Watch out for my next post on everything Picasso has to offer (hint: not GIFs).