Developer or Coder? -Part 1
Based on recent article I was asked: " So how would you train a developer, to be a real developer, not just a coder?". Interesting question. Regardless of language or platform (maybe short of COBOL, where you visit retirement homes a lot), each training path has large commonalities.
Below I outline a training path for a web developer. I'm quite opinionated about tools and frameworks to use, but wide open about tools to know. The list doesn't represent a recommended sequence, that would be a subject of an entire different discussion:
Coming up in part 2:
Below I outline a training path for a web developer. I'm quite opinionated about tools and frameworks to use, but wide open about tools to know. The list doesn't represent a recommended sequence, that would be a subject of an entire different discussion:
- There's more than code: SDLC - requirements, code, test, tools
Introductions to the software development lifecyle and its intricacies. How to capture, track and verify requirements. Design thinking, Waterfall development, Agile, Deployments, DevOps, Paper prototyping, Test driven development etc.
This helps to define the place in the world and works against the works on my machine syndrome - TEAM: Version control, code review, responsibilities, GIT flow
No code is an island. It has ancestors, peers and descendants, getting a good grip on git is essential. Branching, merging and Code review. Other code repositories like TFS, CVS, SVN, RTC should get a honorable mention. Versioning and tagging get some special attention - Community: ask/resolve questions, where to look
Yes, most of it would be StackOverflow by now, but there are other sites around. A good strategy on 'how to search' is a huge time saver. Knowing how to ask to increase the odds of an answer makes a huge difference. Learn about payback. My little rule: try to answer, comment or vote-up at least 2 questions for each question you ask. And no numbers games, honest work. Especially: vote up a question if you had that question in mind too. Vote up the answer when it solved your issue. - node.js basics: install, edit, run, debug
Pretty self explanatory. Some good ol' JavaScript love. Even if the target language is different, node.js has turned into an indispensable helper for all sorts of development tasks. Learn the difference between latest version and LTS. - express.js and loopback
The dominant web application framework is ExpressJS, its power and design need to be understood. Routing middleware is a powerful concept. Express is now a project of the NodeJS foundation and serves as starting point for quite some other frameworks. My pick there is Loopback, which makes a lot of things really easy. Think models, access control and rest APIs (I'm a little employer biased there). Get started quickly using the admin sample app. Others to look at are KrakenJS or SailJS - The NPM parade
There are tons of them around. Get to know the interesting ones. From essential helpers like lodash to the ability to publish your own npms, public or private. What does apackage.json
do, how to maintain it - Tools, Tools, Tools
Task runners, dependency manager, scaffolding tools, templating engines - little helpers that make the developer live easier:- Grunt: Task runner
- Gulp: Task runner
- Bower: dependency manager
- Browserify: Backend libraries in the browser
- Yeoman: Scaffolding tool for your applications. Absolute essential to get to a good starting point.
- Mustache: Templating engine
- Twitter Bootstrap
There are other frameworks around, but Twitter Bootstrap has spread like wildfire. There's a sophisticated template available to get started. And anytime you are free to extend and adjust it to your needs - AngularJS
There is ReactJS, Amber or DurandalJS, but I like AngularJS for its data binding and the "extending HTML" approach (ReachJS' JXF looks like tagsoup, superimposed on code to me). I also like Angular formly which accelerates the creation of forms based applications. Catch here: There will be blood in the transition from AngularJS 1.x to 2.x. - Automated Testing of applications
Once your system gets a little more complex, you want to put it into a test harness. Testing is a bottom up approach. Starting with unit tests (there should be many) until full integration tests (have few). Don't fall into the trap of relying on yout integration tests (too much). The mother of all testing formats is JUnit, so quite some reporting tools digest this format, so get familiar with it. Some of the tools:- Mocha: JS test framework for node.js and browsers
- Karma: The choice framework used by the Angular.js team. Meta framework actually
- Jasmin: I love the syntax that makes test cases plain English
- Selenium: Integration testing not only for JS. Does some sleek things around browser sessions. Also used by online testing services
- Mobile development
There's an ongoing discussion "native vs. hybrid". Most of it misses the point. You want to learn ObjectiveC, Swift, Java, dotNetMobile? Native becomes an option (and a necessitiy for speedy games). For the rest of us: Use the Ionic framework. It leverages multiple technologies that are robust and leaders in their own place: Apache Cordova for interaction with the mobile device and AngularJS for the device logic. To get started fast, you can use the Creator tool
Coming up in part 2:
- Storing stuff: NoSQL & SQL
- Style and best practises
- Pretty pictures, D3JS and friends
- IoT
- Analytics
- Cognitive
- Cloud based development
- Workflow & Rules
- Security & Authentication
- Data exchange standards beyond JSON
Posted by Stephan H Wissel on 13 February 2016 | Comments (0) | categories: Software