Tekniske kompetencer
Jeg har fremhævet specifikke værktøjer i min værktøjskasse med længere forklaring, samt egne personlige holdninger. Længere nede er en mere fyldestgørende liste af tekniske kompetencer.
JavaScript/TypeScript
Når man har lært JavaScript kan det være et virkeligt effektivt programmeringssprog, og det er svært at komme uden om som udvikler i dag. Ikke kun på grund af web udvikling. Flere of flere applikationer er baseret på Electron[1], hvilket også kræver JavaScript kundskab.
Men JavaScript er meget forskellig fra sprog om C# eller Java, selvom det på overfladen kan se besnærende ens ud. Fx. class nøgleordet ligner det tilsvarende fra C# og Java. Men i JavaScript eksisterer der i virkeligheden ikke klasser. Nøgleorder er blot syntactic sugar over de underliggende mekanismer, der eksisterede før ES6. Den objeket-orienterede eksekveringsmodel med polymorfisme gennem arv er simuleret af den underliggende mekanisme: prototype chain.
Med mere end 15 års erfaring med både JavaScript of C# forstår jeg både hvordan JavaScript virker, men også hvordan det er forskelligt fra sprog som C# og Java.
Det gør mig til et værdifult bidrag til et allerede erfarent team, der skal i gang med web-udvikling.
TDD
Først of fremest, er jeg udøver af Test-Driven Development. Ikke nok med at en god TDD process resulterer i kode, der er nemmere at vedligeholde; selve processen er bare mere effektiv, da jeg sparer meget tid på debugging
Men at få de gavnlige effekter af TDD kræver at man skriver tests der reflekterer systemets virkemåde. Alt for mange skriver "unit tests", der er koblet til implementationsdetaljer, og netop derfor bliver koden IKKE mere vedligeholdelsesvenlig; da man ikke kan rette i kode uden at tests fejler.
Hvis du vil lære hvordan TDD kan hjælpe dig med at få en mere effektiv udvikling, så hjælper jeg gerne
Effektive programmeringssprog
Når jeg beskriver et programmeringssprog som effektivs, så refererer jeg ikke til eksekveringshastighed, men hvordan det hjælper udviklere med simpelt og effektivt at udtrykke hensigt i kode.
Meget få system kræver den eksekveringshastighed man får fra fx. C++ eller Rust. På de fleste projekter vil tabet af produktivitet fra disse gøre dem til dårlige valg. Spil, eller i hvert fald den grafiske motor, eller traæningen af de massive neurale netværk, der er motoren bag moderne generative AI er nogle af de få undtagelser.
Personligt foretrækker jeg en værktøjskasse, der tilbyder en fornuftig balance mellem rå produktivitet og evne til at vedligeholde systemet over længere tid
I artiklen "Beating the Averages" beskriver Paul Graham hvordan de var i stand til at slå alle konkurenter fordi de havde anvendt det mest effektive programmeringssprog, LISP. Når nye konkurenter opstod på markedet, bestod risikoanalysen primært at vurdere hvilke tekniske kompetencer de efterspurgte i jobopslag. De var ikke bekymret for konkurenter, der søgte C++ eller Java udviklere. De var lidt mere bekymrede for konkurenter, der søgte Perl eller Python udviklere.
During the years we worked on Viaweb I read a lot of job descriptions. A new competitor seemed to emerge out of the woodwork every month or so. The first thing I would do, after checking to see if they had a live online demo, was look at their job listings. After a couple years of this I could tell which companies to worry about and which not to. The more of an IT flavor the job descriptions had, the less dangerous the company was. The safest kind were the ones that wanted Oracle experience. You never had to worry about those. You were also safe if they said they wanted C++ or Java developers. If they wanted Perl or Python programmers, that would be a bit frightening-- that's starting to sound like a company where the technical side, at least, is run by real hackers. If I had ever seen a job posting looking for Lisp hackers, I would have been really worried.
Programmeringssprog
- JavaScript
- TypeScript
- node.js
- React
- OCaml
- next.js
- tailwindcss
- Go
- C#
- Java
- C++
- Delphi
- Unix scripting
- Python
- Ruby
- Ruby on Rails
Data- og integrations services
- PostgreSQL
- PostGIS (postgres geographic data)
- MS SqlServer
- MySql
- MariaDB
- RabbitMQ
- CouchDB
- MongoDB
- Cosmos DB
Jeg har Cosmos DB erfaring, og det er relevant når jeg siger, lad være med at vælge det. I skal ikke ringe, hvis I allerede har valgt Cosmos DB. I ringer til mig, hvis I gerne vil lære at få den mest effektive softwareudvikling. Og hvis det er målet, så vælger I ikke Cosmos DB
1. Eksempler på kendte applikationer bygget på Electron:
- Visual Studio Code
- Microsoft Teams
- Slack
- Obsidian
- Github Atom
- Discord
- Signal
Faktisk blev Electron bygget til Atom. Det er i virkeligheden derfor man nogle gange hører, at VSCode er baseret på Atom. Fordi, det er baseret på Electron, og ikke fordi sele editoren er baseret på Atom