Ik zou sowieso niet op een vacature duiken die voor een taal, ecosysteem of merk beperkt is. Dan kom je eigenlijk automatisch op een afdeling terecht waar 90% van het personeel oogkleppen op heeft. Niet zo zeer op een slechte manier, het kan heel leuk zijn om met een heel selectief stukje van de wereld bezig te zijn, maar dat moet je dan maar net liggen. Je bent dan eigenlijk code klopper als je de meeste van die vacatures langs gaat, en wat betreft uitdaging kan je het dan voornamelijk vinden in vendor-specifieke quirks en de logica die je mag maken.
Tooling is eigenlijk nooit handig om als uitgangspunt te nemen. Sure, je kan stellen dat je ergens mee wil werken wat niet achter loopt, maar stel dat je VCS/SCM Bazaar of Mercurial is in plaats van Git, om dat het bestaande team daar al mee werkt, dan is er eigenlijk weinig aan de hand. Of stel dat je geen JIRA gebruikt maar TeamCity of GitHub's issue systeem, of dat van GitLab, hell, zelfs Redmine en Trac kunnen prima door. Maakt ook weinig uit.
Hetzelfde geldt voor je IDE, het is niet alsof er een gigantisch verschil is, op z'n best kan je onderscheid maken in esthetische aspecten en zo nu en dan unieke features (die dan toch wel weer door andere IDE's over genomen worden). Ik zou zo snel niet een taal kunnen bedenken die alleen maar 'goed' werkt met een specifieke IDE. Er zijn altijd meerdere opties qua editors, debuggers, linkers, compilers enz.
Het grootste obstakel wat je zou kunnen ervaren is de vrijheid qua tooling die je krijgt. Soms mag je niet zelf kiezen, en dan kan je dus met crappy tooling zitten waar je niet onder uit komt. Op dat moment is het tijd om een ander baantje te zoeken ;-)
Qua tooling en talen heb je uiteraard ook te maken met het niveau van het bedrijf. De grootte en markt waar op gericht wordt maakt niet zo veel uit, daar lijkt weinig onderscheid in te zitten. Het is vaker de kwestie of de mensen in het team überhaupt weten wat ze aan het doen zijn. Dat hoeft natuurlijk qua winst en productiviteit niet altijd wat uit te maken, je kan prima software maken zonder dat je weet wat er nou eigenlijk gebeurt als je op 'run' klikt. Probleem is dan wel dat mensen vaak gewoon te weinig van hun werk weten en zichzelf een vendor lock-in aansmeren door gewoon niet verder te willen leren/kijken. Dan moet je dus haast wel dezelfde tooling gebruiken, ook al had je de keuze, om dat de rest van je team anders niet met je code aan de slag kan.
Waar je voor kiest hangt natuurlijk van je eisen en wensen af. Voor mij is het eerder een mix:
- Niveau van het team
- Vrijheid van tooling
- Type project
- Beschikbaar budget voor tooling of resources voor self-hosting (bijv. GitLab vs. hosted Git om maar wat te noemen)
Stel dat iedereen gewoon op niveau is, iedereen mag gebruiken waar hij/zij zin in heeft en het project een doorsnee PHP/PGSQL/JS/HTML5 webapp moet uitpoepen, dan maakt het eigenlijk geen zak uit wat iedereen gebruikt, zolang de common tooling zoals coverage checks, tests, deployment tools, issue tracker, scm etc. hetzelfde is.
Als je ergens zit waar je een stapeltje Microsoft-mannen hebt die niet echt goed weten wat er tussen C#-code schrijven en software bij de klant afleveren gebeurt, dan zit je aan VS vast, met een beetje geluk kan je dan nog Git integratie gebruiken als je een beetje een recente versie hebt (al dan niet met een plugin), of heb je pech en moet je Microsoft's SCM idee gebruiken.
Het is een beetje een ruwe tegenstelling, maar dat zijn de kanten die ik het vaakst zie. Ik kies nooit meer voor een project waarbij je met een paar mensen moet werken die eigenlijk geen idee hebben van de manier waarop hun ingeklopte taal resulteert in bruikbare software. Leuk als je al je software engineering skills op orde hebt, maar zonder diepgang kan je gewoon niet vrij bewegen, en ik beweeg graag ;-)
[
Voor 22% gewijzigd door
johnkeates op 09-04-2015 23:52
]