I’ve enjoyed writing down my thoughts and my entire workflow as one big chunk of text before starting coding. It helps me to get an overview of the things that I need to be doing. I’ve noticed that different developers have their own unique way of planning and organizing their work - right from paper and checklists, to visual boards.
It would be interesting to see how each of us think and plan our daily work, and probably learn from each other's best practices. I've put together a small survey here: https://paperio.typeform.com/to/SkJrVN
If you think it'd be fun for you to share your workflow and learn, please feel free to fill the form. I’ll share the collated results with you so that everyone can pick up something interesting and learn.
Hi
We use Trello as a small project manager. We use the free version, because we are not a big company and mainly really in freelancer all over the world when we need extra services.
Basically we have a simple 4 columns approach. "Ideas","Approved/To be done", " in progress", "Done".
It's great because we can assign tasks, do multi lists and the system records everything that as to do with the boring stuff, like dates of assignments, deadlines, etc...
But first of all we do a first meeting, to define all the rules we will use, and "break apart" the "big" project to small parts.
We use HTML/CSS/JavaScript and Drupal mainly... when we need something specific we "freelance it"...
On a current project I am working on (a webapp with 6 other developlers) we have a small design doc with core features of the app and transformed everything into small tickets.
We are working in a agile way, but not with scrum, because even we are so many people, scrum would not fit for us.
So, our tools are pretty simple.
And thats actually it :)
We love slack, with all its integrations. So we have a gitlab and trello integration. So even people don't look in the trello board they see whats going on in slack. The same with git pushes.
For our git setup, we are running a git feature workflow, so every ticket (except small 1 liner fixes) are a seperate feature branch. After finishing someone test (tests are must have. no tests = no merge) it and merge it into the develop.
My current work is working on one single website, so it's just one long project really :) I actually don't have deadlines, so it's kind of weird to work here. It's hard to push yourself for a personal deadline if there are no consequences.
I don't have a really organized way of doing things. I basically break a 'project' (for me that's HTML/CSS/JS, mostly templating/designing) down into smaller parts. I tend to start with the overall layout (header, main, footer) and work my way from top to bottom mostly. So to-do lists usually do the trick ;)
Since I'm designing via code, I tend to re-iterate multiple times. Sometimes things that I think out just don't work out or are crap UX/UI wise and then I start over and start sketching on paper again, haha.
I reckon that developers in Agile/SCRUM teams will have a way more structured approach than I have, so I think it will be more interesting to see what tools they use.
Since I mostly work alone, I often do everything in my head. If you can visualise the whole architecture from start to finish, then often you don't need to do much planning - you just start coding and if you need to ask if you're on the right track, simply bring back the architecture sketch you have in your mind. This does cause problems if I suddenly need to get someone else to take over from me, if the spec, design and everything is in my head, but I usually don't just hand over projects.
Once the feature requests starts flowing in, I'll throw them in Jira on a Kanban board and pick up tasks from the list as I go on. We don't do Scrum, just continuous development, continuous deployment, continuous testing etc. (I don't even believe scrum is the right way to go for many companies, maybe large corporates doing a lot of maintenance work, otherwise it actually consumes more time than the amount of value it brings to the table)
If the project is a multi-year project, I would often draw the whole architecture in Gliffy, there's a nice Gliffy plugin in Jira which doesn't cost an arm and a leg or you can also use the standalone Gliffy on the web.
For enormous complex projects, I would draw the whole architecture on my whiteboard alongside Gliffy, then as I finish building the components, I tick them on the whiteboard to give me a sense of progress.
My favourite place to do technical designs or to figure out complex flows is on the back of windowed-envelopes (those that you get asking you to pay bills). If you can't fit your design on an envelope, simplify it so that it does fit on the back of an envelope, it actually forces me to follow a divide and conquer process.
For projects where I bill per hour, we either use Tempo in Jira or for the current project, a Google Spreadsheet which I've shared with the client and a timer on my phone.
For source control, we used to use GitHub, but it became too expensive after we started pumping out multiple projects per week, we quickly migrated to GitLab and have several 100 repositories in GitLab with a lot of re-usable functionality which we use across projects.
We have a Jenkins build server sitting on dedicated server at Hetzner running 32GB of RAM and 8 CPU cores running dual SSDs in RAID. It pretty much builds anything you throw at it in seconds, packages it in Docker containers and pushes it to a Docker registry, then deploys the docker image on the machine itself for testing. Last year its power supply went up in flames, luckily only had a few minutes of downtime and the flaming power supply was replaced almost immediately.
Next year we plan to see what the Jetbrains ecosystem (UpSource, Hub, YouTrack, TeamCity) is like instead of having Jenkins, Gitlab, Jira etc that are all created by different companies and doesn't have tight integration between each other. We're already using Jetbrains' IDEs, so having everything integrated into each other sounds like Nirvana.