Treat software development like a trade. Because it is one.

Would you hire someone to build a shed for you if you needed to supply the hammer and saw and they needed to read a "How to Build Sheds" book to just get started? No, you wouldn't.

So why would you hire someone that doesn't have any kind of ready-to-go dev environment?

Why would you hire someone that doesn't understand the basics of this field?

Why do you expect employees to stop what they are doing and teach the new guy everything he should already know, or be able to figure out on his own based on his own experience?

  • 4
    They excel at interviewing and resume development. They’re senior resume engineers
  • 9
    A lot of companies do NOT want you to use your own equipment. They don't want company data on personal equipment. So this can be a mixed point. Some of my employers have been fine with it, some not at all.
  • 2
    @Demolishun I'm ok with that. My problem is when someone comes to you and has no tools and no clear way to develop anything on their own but expects to be hired and taught *everything*.

    Even if his company supplied his work hammer and work saw, a carpenter would still have one of his own at home, or be able to operate one that was handed to him immediately due to his experience. And it would be unreasonable to expect someone you hired on as a carpenter to take weeks to learn how hammers and saws work.

    If he were hired on as an apprentice, that would be different. Under that context, he would be expected to know next to nothing and you take however long to teach him. Which gives him the chance to get his own tools and build the experience necessary to use them when asked.

    The problem is, I have never seen a developer with the temperament or time to be a master and I have never met a prospective developer that had the temperament to be an apprentice.
  • 4
    If you are an end customer and hire a carpenter, you can expect him to bring his tools. But if you are a craftsmen company hiring a carpenter as employee, it's your job to give him the tools. Not the skills though because you're hiring a carpenter, not an apprentice.

    Same for SW dev if it's an employee job. However, if a company hires a freelancer, i.e. not as employee, then it depends on whether the company wants to keep all data on their own company laptops.

    We have some outsourcing venture going on in my company, and we made it absoluetely clear that all of the project data are to be stored and processed exclusively on the company laptops we provide, and on our servers ofc. That's because corporate IT fully controls these machines.
  • 9
    Let me guess, you’ve been working on the same project in the same environment for the past 3 years or so. You’re fully comfortable with the codebase and dev environment since you’ve been working with them for so long. You can’t tolerate anyone coming on board not being productive right away
  • 2
    @black-kite Yes, I expect an adult professional that says he knows how to do a job to be immediately productive. I can tolerate questions about why the project does this or that. There is no excuse for wasting weeks of company time learning the foundational skills of the job you were hired to do.

    At any given time, I have several projects using different languages and toolchains going that I have to keep organized and functional. I have several webservers with very different setups to accommodate project requirements that I have to keep running.

    So, no. My point of view doesn't come from being comfortable. It comes from having enough to do without having to babysit an adult that smooth talked his way into the position. I need someone to make my life easier. If you're not going to do that, I'll manage without you.
  • 10
    - a carpenter doesn't have 50 different and mutually incompatible toolsets to learn with two major new ones introduced every year

    - carpentry has a healthy culture of paid apprenticeships so novices don't have to instantly squeeze into positions that are expected to be completely autonomous

    - if you hire a carpenter and tell him that your house is entirely built of balsa wood and has wings in case you want to move to another country with better taxes and cheaper utilities, you best hope they properly research balsa wood before adding a balcony.
  • 0
    @lorentz I agree. But would you still hire him if he had never used a hammer before or only started using a hammer in his spare time as a lead up to the interview?
  • 0
    what is a "ready to go dev environment"?

    i can think of 5 different ones of probably what you mean, and they're just binaries...
  • 1
    @fullstackcircus I consider it a ready to go dev environment if you can start working on a project with little lead time.

    If you treat it like a trade and have personal projects, you most likely have a ready to go dev environment. If all you've done is go through bootcamps and do a handful of tutorials, you most likely don't have a ready to go dev environment.

    I'm not talking about being able to do everything in the world as soon as you're asked to do it. All I'm expecting is that you have the desire and wherewithal to possess and be able to use the tools to you need to work in the field you have chosen.

    There is zero excuse not to have something. There are free tools and enough hours in the day that anyone can figure it out with enough motivation.
  • 2
    I've seen the worst devs.

    Unable to follow a PICTURED manual.

    Yes, Windows screenshots where each screenshot is one action.

    For in my opinion trivial stuff like setting up GIT Bash on Windows. Or installing the latest Java JDK from Adoptium. Or setting an Env Variable in Windows / Mac / Linux.

    Even worse when they decide they know it all and just hammer around with tools like chocolatey / node version manager / homebrew etc and start crying and bitching when they broke everything or a project doesn't work because their entire system is a cluster fuck of version incompatibilities.

    We / company usually provide remote virtual machines with preinstalled non root build machines. Via sudo with predefined commands they can do minimal stuff like service restart / reboot etc, but no installation or anything else.

    We have per language per version VM Templates (e.g. Node 18 / JDK 17 etc).

    If a project has certain needs, we make an image template for it, then roll it out on promox via Rest API for all the devs. Each dev gets their own tinkerbox.

    So work on whatever OS with whatever code editor you want, but if it doesn't work in the tinkerbox / isn't tested in the tinkerbox, don't expect any support or approval of PR.
  • 2
    @cuddlyogre your rant is very weird to me... you typically have to use what the client is using, right? you can't just go off and build what they want completely outside of their infrastructure with your own "env"

    if not freelancing (i.e. you are an employee at a software company), i consider it a measure of quality of company as how easy or hard it is to connect to all their stuff, not how well you can do it yourself

    no matter where you go you will need onboarding: connecting to the org's gitlab / bitbucket / github, vpn tools, timesheets, list goes on and on.

    if this onboarding process doesn't run smoothly, or *gulp* doesn't even exist at an org, for me that's warning lights to run for the door

    if it's well laid out and goes smooth, to me that shows high quality management and organization
  • 1
    @cuddlyogre if i'm new at an org and assumed to just "know" what to interface with myself with no guidance, that org is garbage, sorry i'm not sorry
  • 1
    Because you hired me to optimize your cloud and i dont have any idea why anyone would need to run a 14 logicstic regression models for a simple ecommerce website, so yeah your devs need to drop their shit and explain themselves 😂😂😂
  • 1
    @IntrusionCM "Unable to follow a PICTURED manual."

    How tf they get out of a paper bag?
  • 1
    @Demolishun I dunno. I stopped myself from asking such questions a long time ago.

    Some definitely try to get someone else do their work for them by just being as annoying as possible....

    Others... Braindead, probably amoeba nommed it away, dunno don't care.
  • 1

    The pictured manual is now completely out of date. All the guis changed because the retarded front end developers can’t keep their itchy fingers off the product for 5 minutes.

    Its a shit show. Good luck following a picture manual. It is not gonna happen. Wipe your ass with it and throw it away.
  • 0
    With carbon black on your laptop can the carpenters get anything done? That is like having 20 osha inspectors on your worksite stopping anyone from plugging in the power tools. Good job corporate security you just fucked us all.
  • 0
    Trade jobs have apprentices though.

    Huge difference between who you'd hire for a quick single man job vs when you hire a full team for a long term project.
  • 0
    @jiraTicket I would love if apprentices were part of this field.

    My main point is you need to hire professionals to do the job and not just people with buzzwords on their resume.

    Part of being a professional is the possession of the tools of the trade and to have enough experience or wherewithal to be able to complete a task. It's not even necessary to have the specific tools you'll need for this task. Just having tools and knowing how to use them is important.

    If you are just starting out, sad to say but a boot camp won't suffice. You have to dedicate real time to developing the thought processes it takes to be a decent dev. That means late nights and long days of unpaid time you spend on your own learning the trade.

    And if you get a job and you're woefully unqualified, you have to spend your own free time learning the codebase. There aren't enough hours in a work week to get good doing it only at work. And the other devs don't have the time to hold your hand.
  • 0
    I disagree software development is even a trade. The idea of craftsmanship in IT is baloney.
    I’m not denying the need for skills, competence and the ability to write clean code.
    But the definition of "craft" is the making of an object by hand. When you programming software you’re not making an object by hand. What bugs me especially with calling software development a craft is that real craftsmanship is usually delimited by a clear scope. The scope of software development is ever evolving and not clearly defined. The tools are extremely numerous and constantly requiring the developer to rethink their approach and work methods.
    Not saying real craftsmanship doesn’t require adaptation and continuous training. But it’s far from what software development requires
  • 0
    @black-kite Pulling a definition out of a dictionary or encyclopedia written by a linguist who had like 2 minutes at best to come up with that definition isn't really constructive, and words can take on many different but overlapping meanings depending on context. Is illustration a craft? I'd say so, but the problem is that even if you do it by hand, the product isn't the drawing but the digital scan or the copies printed from it.
  • 0
    @lorentz saying that software isn’t a craft doesn’t mean it shouldn’t be treated with the rigor, method and discipline that craftsmen handle their work.
    But just because Uncle Bob coined the term "software craftsmanship" doesn’t mean he’s right and that it is indeed a craft. Sure there are similarities. But the differences between how a carpenter works and a programmer works are too vast for me to accept that the two categories are on the same level of comparison (and I’m not saying that one is better than the other)
Add Comment