I wanted to write a small essay about my personal choices and tools for Development. With about 12 years of doing stuff for the web I passed both through server side work all the way to client side validation and administration control panels in almost all the companies where I worked.
I went through also different approaches to solve a problem, from a detailed project analysis that may last months, to agile development where you start with a draft and some ideas right into selecting technologies and coding. An approach that may turn up for the good when you work for a web project or an agency. Deadlines are short, things change on the way, no time to make a detailed specific analysis because after 2 months, things could be quite different from the point where analysis started.
My favourite composer, Herr Gustav Mahler said something very interesting about his creative work:
“To write a symphony is to create a whole world.”
And sometimes when a developer starts with a Project and faces the white page, it’s something alike, you need to create your own world. Select the roles, the actors, the libraries, and the interections between them.
So this is the approach that I will try to explain in this essay along with the tools that are some of the standard choices in the development arena.
- Project Planning 101
A good plan always start with some drawings on paper, main ideas, that should be backed up by your team. The team is one of the turning points here, even if you are a loner developer, the ideas must be consented by the people you work for. So next step after this ideas are drawn and approved is to make a Project plan with deadlines and numbered tasks. And for that mission I find very useful OPENPROJ.eu a Java based project planner that runs on any platform:
There are many choices to use Github online repositiories. Two of the best ones are:
1- Github – Where everything goes public for a free account
2- Bitbucket – Backed up by the Atlassian company and my favourite so far.
Since you can store your code private and work with fellow developers and numbered #1 Issues to know exactly what group of files you are editing to resolve what (Task / Bug ) Bitbucket has a very good Issue handler, since their company has a product called Jira, that is an online project management tool used by many top-noch companies.
So basically you can organize the Tasks there as well and keep them aligned with the Project Plan and your codebase. For example:
$ git add YourUpdates
you can commit with a message that goes directly to the Issue and links the updated code to it:
$ git commit -m ‘references #7 Jquery validation applied on forms: X & Y’ $ git push
And then you will already have the modified files tracked on bitbucket and your colleagues may be able to review the update or create the test cases for it.Bitbucket supports many calls for their powerful issue tracker. So you can just reference or even ‘fix #7’ or ‘close #7’ an Issue.
resolve an issue
fix bug #89
fixes issue 746
reopen an issue
mark an issue wontfix
mark an issue on hold
mark an issue invalid
link to a changeset for the issue
re bug #55
see #34 and #456
- So my personal take is, even if you are kind of repeating things on the visual Project Planner and in the repo system, it’s really worth it to keep it updated and to have a visual aid somewhere near your keyboard to be aware of it and go to meetings with the master plan for the deadlines and tasks.
Working in team with a Repository tracking is a must this days. Transparency rules in development, and the super cool thing of using any of this tracking systems is that you are both updated in the projects you work, the libraries you use, and also another projects where your fellow developers work. It’s a kind of an universe of it’s own and keeps you focused on your tasks, knowing exactly what module you are coding and what Issue it solves.
- Development is fun
Seriously it is. Even if you are doing a difficult project where you don’t see the light at the end of the tunnel using a good methodology and being organized will make you more effective even on the most complex scenarios.
So if you face something new and you will create a new system where you have freedom to decide what you use, get out of your comfort zone, try to implement some new library or responsive design to leverage your new creation. If you fail, like I did hundreds of times, just start over with a smile and make the right choices.