Probably the least glamorous part of programming I’ve come across is the large amount of “Reshape data from X format to Y format” that can happen in several layers in an enterprise software, and often has to be done by hand. The only way something like that becomes challenging is if there are some strong performance constraints. The sort of thing that ORMs try to reduce, for one.
Good point. A friend suggested that algorithms may fit this least glamorous group as well. I agree with that but it is like a doctor avoiding blood during surgery =)
I’m not sure I agree, to be honest. Algorithms work may not be externally glamorous, but it’s either heavy research (in the case of trying to build new ones), or well defined, but potentially tricky (in the case of implementing existing ones). Both cases cater to what is often a core engagement of software development for its practitioners (solving puzzles or passing a well-specified test-suite)
This is one of the key goals for activefacts - being able to combine a shared logical schema with descriptions of serialisations to generate the transforms between those formats. The foundation is there but it needs a good serialisations model.
This looks really great. I love software that makes us better and actually helps in our jobs, rather than getting in our. I see there’s a desktop version ($20) for MacOS and Windows. I’m seriously considering buying it, but I would love it even more if there was some way to integrate it with Emacs or Vim.
I am not the best communicator with english text, and when I’ve used macs in the past Hemingway has really helped me to be more clear. Now that I’m on linux, readers of my writing suffer x_x
Charging your own employees for the things they think they need to be productive feels like a bad way to try to involve the invisible hand of the market in your business.
(e.g. I sure hope you don’t employ anyone who has to spend most or all of their money on things they need to live (like medication, tuition fees, paying off debts) — or anyone who might be ‘disadvantaged’ in any sense of the term — because they might find they suddenly now can’t afford a meeting, even if their work honestly requires it!)
Do you also charge employees for the equipment they need to work? I get the “thought exercise”, but it’s certainly not sustainable, and might be actively harmful.
A few recurring ‘catch-ups’ were cancelled, in favour of on-demand discussions, only “if there was something specific to talk about.”
This sounds like a non-goal to me. In my experience, regular catch-ups are extremely important in keeping everyone on the same page without there needing to be a bad event to trigger it (i.e. two teams only realise they diverge on a spec when they can’t reconcile their changes, as opposed to it coming up naturally), and even more important in keeping the humans involved in the company feeling happy and connected. I hear that’s good for productivity.
Perhaps some internal currency would work. I think the key point here is making explicit that this is a trade-off. Everyone ‘gets’ it, but having a number somewhere, even simply putting on a board with everyone’s name and how many hours they have been in meetings, could be an eye-opener.
I was imagining it would be paid out of the different areas' budgets, ie. Project A has to pay $32 to Project B and C for an hour of time for a few employees.
But when I read it I think they literally mean out of the employee’s wallet.
Making employees pay personally sounds like a very bad idea. But having departments or teams pay out of their budget is acceptable since it attaches a cost to using other people’s time without penalizing employees for their personal financial situation. I like your idea of transferring the money within the company. You don’t really “spend” the money. It just gets to be used by another department.
Unfortunately you could just give the money back and forth daily between two companies, it might need a “vat/gst” percentage that goes to the end of year party too, to take some funds out of the system.
I remember seeing this idea on 43 folders back in the day - Meeting Tokens - Apparently they were on sale for a time, but the Mule store is gone now, so I guess it didn’t catch on…
In my experience the least productive meetings are the ones called by people who would just ignore tokens anyway, including customers & external partners.
I’m just very skeptical that it could work in most companies. Meetings are about power. Status meetings hold a double entendre, in that they exist to reinforce the (social) status of the person demanding the meeting. A small economic cost isn’t going to fix the flaws in human nature that result in too many meetings.
Sure, in the right kind of culture, it sets a tone of, “Hey, don’t waste people’s time.” On the other hand, in the wrong kind of culture, it will do absolutely nothing and possibly create a new trophy for management-types (“I spent $120 on meetings this week, how’d you do?”) if they follow the policy at all (and most management types will just say “fuck that” to this idea).
Besides, how does one define a meeting? Certainly, one shouldn’t expect the new developer to pony up every time he has to ask for help. That would just be abusive.
So, it seems like this might keep the plebs in line, but it’s not a real protection against management. In fact, the golden-child/“dotted line” types, the ones who tend to delegate and call meetings inappropriately but get away with it because of favoritism, will even be more effective at ingratiating themselves up the chain because they’re sacrificing something (“for the good of the team”) when they call meetings.
I feel like (from this and a wider pattern of posts) is a single mental model to a complex system. It’s not that I think it’s a bad model to have (quite the opposite; I enjoy hearing it and it’s broadened my perspective some) but in situations like this it feels like it drives some pretty wild, unsupported claims.
Meetings are about power
I’ve been in a few of those meetings in my career but it’s been far from the norm.
The idea that blowing up your budget will make you look good because you’re “sacrificing something” sounds like it requires politically competent middle management with financially incompetent upper management. I don’t think that’s a stable configuration.
“Dotted line” types who insist on proper process being followed care a lot about their budgets.
I see where you’re coming from, but I wanted to call this bit out in particular:
regular catch-ups are extremely important in keeping everyone on the same page
My experience has been that, for technical matters, design docs (on some kind of wiki) are way better than meetings for keeping devs on the same page, along with corrective explanations from team leaders or coworkers. For nontechnical stuff, there is some benefit to having a more narrow definition of “everyone”.
For example, there is nothing more frustrating than being in a meeting listening to business people who both clearly don’t know what the fuck they’re doing (in regards to marketing, product design, or fundraising) and who are also repeatedly telling skeptical devs “don’t worry, we got this”.
That’s the sort of thing you can avoid by having like a team lead sit in on, and then report back to his team so they don’t have to lose morale first-hand. The inquisitive souls can find out more out-of-band, and everybody else gets more time to do development work or anything else that’s more fulfilling.
Probably never will because git is and should be agnostic to what you’re actually using to host the repositories (git != github). There are a number of facaded on top of git (hub for github for example) that act as a pass through for git commands and add extra functionality on top. In my opinion thats the best way to do that sort of thing.
It can make a best guess though and try to translate a git:// url into a http(s). Many git servers also serve a website. Git could even have a config variable for the url to use.
Sure it could but that can be said about pretty much anything. The unix philosophy is to have software that is minimalist and does its own job extremely well which I believe that Linus and git are looking to follow. Adding a facade on top of git give the most flexibility and keeps the core application as specific as possible so it can just focus on doing that one thing very well.
Awesome that this looks like it supports both github and bitbucket. If you are only using github take a look at hub which provides a facade over git and adds a bunch of github related features like hub browse which will open the current repo in the browser.
Can someone clarify what would be the “less glamorous elements of our field”?
Probably the least glamorous part of programming I’ve come across is the large amount of “Reshape data from X format to Y format” that can happen in several layers in an enterprise software, and often has to be done by hand. The only way something like that becomes challenging is if there are some strong performance constraints. The sort of thing that ORMs try to reduce, for one.
Good point. A friend suggested that algorithms may fit this least glamorous group as well. I agree with that but it is like a doctor avoiding blood during surgery =)
I’m not sure I agree, to be honest. Algorithms work may not be externally glamorous, but it’s either heavy research (in the case of trying to build new ones), or well defined, but potentially tricky (in the case of implementing existing ones). Both cases cater to what is often a core engagement of software development for its practitioners (solving puzzles or passing a well-specified test-suite)
This is one of the key goals for activefacts - being able to combine a shared logical schema with descriptions of serialisations to generate the transforms between those formats. The foundation is there but it needs a good serialisations model.
I finished Astrophysics for People in a Hurry a few days ago and am reading Grokking Algorithms: An illustrated guide for programmers and other curious people
This looks really great. I love software that makes us better and actually helps in our jobs, rather than getting in our. I see there’s a desktop version ($20) for MacOS and Windows. I’m seriously considering buying it, but I would love it even more if there was some way to integrate it with Emacs or Vim.
Another great service that helps is Grammarly, it helps me a lot during my writing.
https://www.grammarly.com/
If you feel like using it, this is a referral link: http://gram.ly/x6MF
It will send you a weekly email with an interesting report about your writings.
I am not the best communicator with english text, and when I’ve used macs in the past Hemingway has really helped me to be more clear. Now that I’m on linux, readers of my writing suffer x_x
Maybe I should use WINE…
Charging your own employees for the things they think they need to be productive feels like a bad way to try to involve the invisible hand of the market in your business.
(e.g. I sure hope you don’t employ anyone who has to spend most or all of their money on things they need to live (like medication, tuition fees, paying off debts) — or anyone who might be ‘disadvantaged’ in any sense of the term — because they might find they suddenly now can’t afford a meeting, even if their work honestly requires it!)
Do you also charge employees for the equipment they need to work? I get the “thought exercise”, but it’s certainly not sustainable, and might be actively harmful.
This sounds like a non-goal to me. In my experience, regular catch-ups are extremely important in keeping everyone on the same page without there needing to be a bad event to trigger it (i.e. two teams only realise they diverge on a spec when they can’t reconcile their changes, as opposed to it coming up naturally), and even more important in keeping the humans involved in the company feeling happy and connected. I hear that’s good for productivity.
Perhaps some internal currency would work. I think the key point here is making explicit that this is a trade-off. Everyone ‘gets’ it, but having a number somewhere, even simply putting on a board with everyone’s name and how many hours they have been in meetings, could be an eye-opener.
I was imagining it would be paid out of the different areas' budgets, ie. Project A has to pay $32 to Project B and C for an hour of time for a few employees. But when I read it I think they literally mean out of the employee’s wallet.
Making employees pay personally sounds like a very bad idea. But having departments or teams pay out of their budget is acceptable since it attaches a cost to using other people’s time without penalizing employees for their personal financial situation. I like your idea of transferring the money within the company. You don’t really “spend” the money. It just gets to be used by another department.
Unfortunately you could just give the money back and forth daily between two companies, it might need a “vat/gst” percentage that goes to the end of year party too, to take some funds out of the system.
Ah, good point… smacks forehead
I think that idea would probably be just as effective, yes, without it impacting certain people disproportionately.
I remember seeing this idea on 43 folders back in the day - Meeting Tokens - Apparently they were on sale for a time, but the Mule store is gone now, so I guess it didn’t catch on…
In my experience the least productive meetings are the ones called by people who would just ignore tokens anyway, including customers & external partners.
Ooh ooh! I have an idea. Make developers pay for their own QA.
=)
It would definitely increase the code quality!
I’m just very skeptical that it could work in most companies. Meetings are about power. Status meetings hold a double entendre, in that they exist to reinforce the (social) status of the person demanding the meeting. A small economic cost isn’t going to fix the flaws in human nature that result in too many meetings.
Sure, in the right kind of culture, it sets a tone of, “Hey, don’t waste people’s time.” On the other hand, in the wrong kind of culture, it will do absolutely nothing and possibly create a new trophy for management-types (“I spent $120 on meetings this week, how’d you do?”) if they follow the policy at all (and most management types will just say “fuck that” to this idea).
Besides, how does one define a meeting? Certainly, one shouldn’t expect the new developer to pony up every time he has to ask for help. That would just be abusive.
So, it seems like this might keep the plebs in line, but it’s not a real protection against management. In fact, the golden-child/“dotted line” types, the ones who tend to delegate and call meetings inappropriately but get away with it because of favoritism, will even be more effective at ingratiating themselves up the chain because they’re sacrificing something (“for the good of the team”) when they call meetings.
I feel like (from this and a wider pattern of posts) is a single mental model to a complex system. It’s not that I think it’s a bad model to have (quite the opposite; I enjoy hearing it and it’s broadened my perspective some) but in situations like this it feels like it drives some pretty wild, unsupported claims.
I’ve been in a few of those meetings in my career but it’s been far from the norm.
The idea that blowing up your budget will make you look good because you’re “sacrificing something” sounds like it requires politically competent middle management with financially incompetent upper management. I don’t think that’s a stable configuration.
“Dotted line” types who insist on proper process being followed care a lot about their budgets.
I see where you’re coming from, but I wanted to call this bit out in particular:
My experience has been that, for technical matters, design docs (on some kind of wiki) are way better than meetings for keeping devs on the same page, along with corrective explanations from team leaders or coworkers. For nontechnical stuff, there is some benefit to having a more narrow definition of “everyone”.
For example, there is nothing more frustrating than being in a meeting listening to business people who both clearly don’t know what the fuck they’re doing (in regards to marketing, product design, or fundraising) and who are also repeatedly telling skeptical devs “don’t worry, we got this”.
That’s the sort of thing you can avoid by having like a team lead sit in on, and then report back to his team so they don’t have to lose morale first-hand. The inquisitive souls can find out more out-of-band, and everybody else gets more time to do development work or anything else that’s more fulfilling.
Wish git had this built in.
Probably never will because git is and should be agnostic to what you’re actually using to host the repositories (git != github). There are a number of facaded on top of git (hub for github for example) that act as a pass through for git commands and add extra functionality on top. In my opinion thats the best way to do that sort of thing.
You are correct, I wasn’t thinking of that, they will not accept it.
It can make a best guess though and try to translate a git:// url into a http(s). Many git servers also serve a website. Git could even have a config variable for the url to use.
Sure it could but that can be said about pretty much anything. The unix philosophy is to have software that is minimalist and does its own job extremely well which I believe that Linus and git are looking to follow. Adding a facade on top of git give the most flexibility and keeps the core application as specific as possible so it can just focus on doing that one thing very well.
Yes! A friend of mine told me to make a pull-request to github and see if they accept it =)
Nice. I made something like that a while ago - also in Bash, but with more features and only with GitHub support.
That is really nice! I like the idea of adding tests, I may try doing that too!
That was the fun part of building it. Everyone should write their own testing library in Bash ;-)
Awesome that this looks like it supports both github and bitbucket. If you are only using github take a look at hub which provides a facade over git and adds a bunch of github related features like
hub browse
which will open the current repo in the browser.Yes, it works on both, github and bitbucket and I will test with gitlab. I will take a look at hub, thanks for sharing.
Although my idea is to keep git-open as simples as possible, maybe I will take some ideas and implement them =)